BookingDate
| property |
type |
description |
derived from |
evaluated when |
pk |
String |
Partition key |
"bookingDate::\" |
Constructing the primary key for this BookingDate based on its associated Booking |
sk |
String |
Sort key |
"\" |
Constructing the sort key for this BookingDate based on its date |
gsi1pk |
String |
Global secondary index partition key |
Reserved |
Reserved |
gsi1sk |
String |
Global secondary index sort key |
Reserved |
Reserved |
schema |
String |
Data type/Schema |
"bookingDate" |
Identifying that this item is a "bookingDate" |
globalId |
String |
Globally unique UUID |
Automatically generating on BookingDate creation |
Ensuring that each BookingDate has a unique identifier |
bookingId |
String |
The ID of the Booking this BookingDate is associated with |
Derived from the parent Booking's ID |
Linking this BookingDate to its parent Booking |
user |
String |
The user sub of the customer who made the Booking |
Derived from the parent Booking's customer information |
Associating this BookingDate with the user who made the booking for access control and querying purposes |
date |
Date |
The specific date this BookingDate represents |
Derived from the reservation details of the Booking |
Identifying which date this BookingDate corresponds to within the Booking's itinerary |
inventory |
[PrimaryKey] |
The specific inventory items that are reserved for this date |
Derived from the reservation details of the Booking |
Specifying which inventory items are allocated for this BookingDate based on the reservations made in the Booking |
reservationSnapshot |
BookingDateReservationSnapshot |
The snapshot of the reservation details for this date at the time of booking |
Derived from the reservations made in the Booking for this date |
Capturing the specific reservation details for this date based on the Booking's reservations at the moment it was created |
reservationValues |
BookingDateReservationValues |
The snapshot of the reservation values for this date at the time of booking |
Derived from the reservations made in the Booking for this date |
Capturing the specific reservation values for this date based on the Booking's reservations at the moment it was created |
partyValues |
BookingDatePartyValues |
The snapshot of the party composition values for this date at the time of booking |
Derived from the reservations made in the Booking for this date |
Capturing the specific party composition values for this date based on the Booking's reservations at the moment it was created |
feePolicySnapshot |
BookingDateFeePolicySnapshot |
The snapshot of the fee policy details for this date at the time of booking |
Derived from the parent Product's referenced Fee Policy at the time of booking |
Capturing the specific fee policy details for this date based on the Product's Fee Policy at the moment it was created |
feeValues |
BookingDateFeeValues |
The snapshot of the fee values for this date at the time of booking |
Derived from the fee policy details and reservation details for this date |
Capturing the specific fee values for this date based on the fee policy and reservation details at the moment it was created |
BookingDateReservationSnapshot
| property |
type |
description |
derived from |
evaluated when |
isDiscoverable |
Boolean |
Was the reservation for this date discoverable? |
Derived from the ProductDate's isDiscoverable value |
Determining if the reservation for this date was discoverable at the time of booking |
isReservable |
Boolean |
Was the reservation for this date reservable? |
Derived from the ProductDate's isReservable value |
Determining if the reservation for this date was reservable at the time of booking |
minDailyInventory |
Number |
What was the minimum daily inventory allowed for this date? |
Derived from the ProductDate's minDailyInventory value |
Capturing the minimum daily inventory for this date at the time of booking |
maxDailyInventory |
Number |
What was the maximum daily inventory allowed for this date? |
Derived from the ProductDate's maxDailyInventory value |
Capturing the maximum daily inventory for this date at the time of booking |
temporalAnchors |
BookingDateResolvedTemporalAnchors |
What were the temporal anchors for this date? |
Derived from the ProductDate's temporalWindows values |
Capturing the temporal anchors for this date at the time of booking |
temporalWindows |
BookingDateResolvedTemporalWindows |
What were the temporal windows for this date? |
Derived from the ProductDate's temporalWindows values |
Capturing the temporal windows for this date at the time of booking |
BookingDateResolvedTemporalAnchors
| property |
type |
description |
derived from |
evaluated when |
checkInAnchor |
Timestamp |
What was the check-in temporal anchor for this date? |
Derived from the ProductDate's temporalWindows values |
Capturing the check-in temporal anchor for this date at the time of booking |
checkOutAnchor |
Timestamp |
What was the check-out temporal anchor for this date? |
Derived from the ProductDate's temporalWindows values |
Capturing the check-out temporal anchor for this date at the time of booking |
noShowAnchor |
Timestamp |
What was the no-show temporal anchor for this date? |
Derived from the ProductDate's temporalWindows values |
Capturing the no-show temporal anchor for this date at the time of booking |
BookingDateResolvedTemporalWindows
| property |
type |
description |
derived from |
evaluated when |
discoveryWindow |
TemporalWindow |
What was the discovery temporal window for this date? |
Derived from the ProductDate's temporalWindows.discoveryWindow value |
Capturing the discovery temporal window for this date at the time of booking |
reservationWindow |
TemporalWindow |
What was the reservation temporal window for this date? |
|
Derived from the ProductDate's temporalWindows.reservationWindow value |
restrictedBookingWindow |
TemporalWindow |
What was the restricted booking temporal window for this date? |
Derived from the ProductDate's temporalWindows.restrictedBookingWindow value |
Capturing the restricted booking temporal window for this date at the time of booking |
BookingDateReservationValues
| property |
type |
description |
derived from |
evaluated when |
totalInventory |
Number |
The inventory count on this date |
The quantity of inventory items reserved for this date |
|
PartyValues
Note that the party policy and all party composition rules are defined at the Product/Booking level and do not vary day to day, so the BookingDate does not need to capture a party policy snapshot. However, the actual party composition values can vary day to day based on the reservations made in the Booking, so those values are captured here.
| property |
type |
description |
derived from |
evaluated when |
isValid |
Boolean |
Is the party composition for this date valid based on the Product's party composition rules? |
Derived from evaluating the party composition for this date against the Product's party composition rules |
Determining if the party composition for this date is valid at the time of booking |
partyComposition |
BookingDatePartyComposition |
The specific party composition for this date |
Derived from the reservations made in the Booking for this date |
Capturing the specific party composition for this date based on the reservations made in the Booking at the moment it was created |
BookingDatePartyComposition
| property |
type |
description |
derived from |
evaluated when |
id |
String |
The identifier for this type of party member or equipment |
Derived from the Product's party composition rules |
Identifying the type of party member or equipment based on the Product's party composition rules |
label |
String |
The label for this type of party member or equipment |
Derived from the Product's party composition rules |
Providing a human-readable label for this type of party member or equipment based on the Product's party composition rules |
quantity |
Number |
The count of this type of party member or equipment for this date |
Derived from the reservations made in the Booking for this date |
Capturing the count of this type of party member or equipment for this date based on the reservations made in the Booking at the moment it was created |
BookingDateFeePolicySnapshot
| property |
type |
description |
derived from |
evaluated when |
feeSchedule |
FeeSchedule |
The fee schedule that applies to this date |
Derived from the parent Product's referenced Fee Policy at the time of booking |
Capturing the fee schedule for this date based on the Product's Fee Policy at the moment it was created |
lineItems |
LineItem |
The fee policy line items that apply to this date |
Derived from the parent Product's referenced Fee Policy at the time of booking |
Capturing the fee policy line items for this date based on the Product's Fee Policy at the moment it was created |
BookingDateFeeValues
| property |
type |
description |
derived from |
evaluated when |
resolvedLineItems |
ResolvedLineItem |
The resolved fee line items for this Booking |
Derived from BookingFeePolicySnapshot and client input on Booking POST |
Capturing the specific fee line items for this Booking based on the fee policy snapshot and customer input |
totalDiscounts |
[ResolvedLineItemDiscount] |
The total amount of discounts applied to this BookingDate |
Derived from the resolved line items for this BookingDate |
Calculating the total discounts for this BookingDate based on the resolved fee line items |
totalTaxes |
[ResolvedLineItemTax] |
The total amount of taxes applied to this BookingDate |
Derived from the resolved line items for this BookingDate |
Calculating the total taxes for this BookingDate based on the resolved fee line items |
subTotal |
Number |
The subtotal amount for this BookingDate before taxes |
Derived from the resolved line items for this BookingDate |
Calculating the subtotal for this BookingDate based on the resolved fee line items |
total |
Number |
The total amount for this BookingDate after applying taxes and discounts |
Derived from the resolved line items for this BookingDate |
Calculating the total for this BookingDate based on the resolved fee line items, including taxes and discounts |
Example BookingDate
{
"pk": "bookingDate::550e8400-e29b-41d4-a716-446655440000",
"sk": "2026-02-09",
"gsi1pk": "user::b7e6c2f2-3a1d-4e8a-9e0d-8c2a1b7e6c2f",
"gsi1sk": "2026-02-09::bookingDate",
"schema": "bookingDate",
"globalId": "c3f1a8e2-7b4d-4c9a-9f2a-8e7b1c3f1a8",
"bookingId": "550e8400-e29b-41d4-a716-446655440000",
"userSub": "b7e6c2f2-3a1d-4e8a-9e0d-8c2a1b7e6c2f",
"date": "2026-02-09",
"inventory": {
"quantity": 1,
"items": [
{
"pk": "inventory::mockPark1::backcountryCamp::1::1::2026-02-09",
"sk": "asset::mockPark1::campground::1::tentPad::6::1"
}
]
},
"temporalContext": {
"discoveryWindow": {
"open": "2026-01-01T07:00:00-08:00",
"close": "2026-12-31T23:59:59-08:00"
},
"reservationWindow": {
"open": "2026-01-26T07:00:00-08:00",
"close": "2026-02-08T23:59:59-08:00"
},
"restrictedBookingWindow": {
"open": "2026-01-26T07:00:00-08:00",
"close": "2026-01-27T07:00:00-08:00"
},
"productDate": "2026-02-09",
"checkInAnchor": "2026-02-09T14:00:00-08:00",
"checkOutAnchor": "2026-02-10T11:00:00-08:00",
"noShowAnchor": "2026-02-09T23:59:59-08:00"
},
"reservationPolicySnapshot": {
"isDiscoverable": true,
"isReservable": true,
"minDailyInventory": 1,
"maxDailyInventory": 1,
"temporalAnchors": {
"checkInAnchor": "2026-02-09T14:00:00-08:00",
"checkOutAnchor": "2026-02-10T11:00:00-08:00",
"noShowAnchor": "2026-02-09T23:59:59-08:00"
},
"temporalWindows": {
"discoveryWindow": {
"open": "2026-01-01T07:00:00-08:00",
"close": "2026-12-31T23:59:59-08:00"
},
"reservationWindow": {
"open": "2026-01-26T07:00:00-08:00",
"close": "2026-02-08T23:59:59-08:00"
},
"restrictedBookingWindow": {
"open": "2026-01-26T07:00:00-08:00",
"close": "2026-01-27T07:00:00-08:00"
}
}
},
"partyContext": {
"isValid": false,
"partyComposition": [
{
"id": "adults",
"label": "Adults (18+)",
"quantity": 0
},
{
"id": "children",
"label": "Children <18",
"quantity": 0
},
{
"id": "tents",
"label": "Tents",
"quantity": 0
}
]
},
"feePolicySnapshot": {
"feeSchedule": [
{
"id": "costPerAdult",
"label": "Adult Nightly Fee",
"type": "unit",
"amount": 10
},
{
"id": "costPerChild",
"label": "Child Nightly Fee",
"type": "unit",
"amount": 5
},
{
"id": "costPerTent",
"label": "Tent Nightly Fee",
"type": "unit",
"amount": 15
},
{
"id": "tax",
"label": "Tax",
"type": "percentage",
"amount": 0.05
}
],
"lineItems": [
{
"id": "adultLineItem",
"label": "Adult Fee",
"type": "unit",
"if": [],
"quantity": {
"type": "ref",
"value": "partyContext.adults"
},
"rate": {
"type": "ref",
"value": "feeSchedule.costPerAdult"
},
"taxApplied": [
{
"type": "ref",
"value": "feeSchedule.tax"
}
],
"discountsApplied": [],
"isReturnable": true
},
{
"id": "childLineItem",
"label": "Child Fee",
"type": "unit",
"if": [],
"quantity": {
"type": "ref",
"value": "partyContext.children"
},
"rate": {
"type": "ref",
"value": "feeSchedule.costPerChild"
},
"taxApplied": [
{
"type": "ref",
"value": "feeSchedule.tax"
}
],
"discountsApplied": [],
"isReturnable": true
},
{
"id": "tentLineItem",
"label": "Tent Fee",
"type": "unit",
"if": [],
"quantity": {
"type": "ref",
"value": "inventory.quantity"
},
"rate": {
"type": "ref",
"value": "feeSchedule.costPerTent"
},
"taxApplied": [
{
"type": "ref",
"value": "feeSchedule.tax"
}
],
"discountsApplied": [],
"isReturnable": true
}
]
},
"feeValues": {
"resolvedLineItems": [
{
"id": "adultFeeLine",
"label": "Adult Fee",
"type": "unit",
"isReturnable": true,
"units": [],
"lineDiscounts": [],
"lineTaxes": [
{
"id": "tax",
"rate": 0.05,
"amount": 0
}
],
"lineSubTotal": 0,
"lineTotal": 0
},
{
"id": "childFeeLine",
"label": "Child Fee",
"type": "unit",
"isReturnable": true,
"units": [],
"lineDiscounts": [],
"lineTaxes": [
{
"id": "tax",
"rate": 0.05,
"amount": 0
}
],
"lineSubTotal": 0,
"lineTotal": 0
},
{
"id": "tentFeeLine",
"label": "Tent Fee",
"type": "unit",
"isReturnable": true,
"units": [],
"lineDiscounts": [],
"lineTaxes": [
{
"id": "tax",
"rate": 0.05,
"amount": 0
}
],
"lineSubTotal": 0,
"lineTotal": 0
}
],
"totalDiscounts": [],
"totalTaxes": [
{
"id": "tax",
"rate": 0.05,
"amount": 0
}
],
"subTotal": 0,
"total": 0
}
}
After Booking Finalization
{
"pk": "bookingDate::550e8400-e29b-41d4-a716-446655440000",
"sk": "2026-02-09",
"gsi1pk": "",
"gsi1sk": "",
"schema": "bookingDate",
"globalId": "c3f1a8e2-7b4d-4c9a-9f2a-8e7b1c3f1a8",
"bookingId": "550e8400-e29b-41d4-a716-446655440000",
"user": "b7e6c2f2-3a1d-4e8a-9e0d-8c2a1b7e6c2f",
"date": "2026-02-09",
"inventory": {
"quantity": 1,
"items": [
{
"pk": "inventory::mockPark1::backcountryCamp::1::1::2026-02-09",
"sk": "asset::mockPark1::campground::1::tentPad::6::1"
}
]
},
"reservationPolicySnapshot": {
"isDiscoverable": true,
"isReservable": true,
"minDailyInventory": 1,
"maxDailyInventory": 1,
"temporalAnchors": {
"checkInAnchor": "2026-02-09T14:00:00-08:00",
"checkOutAnchor": "2026-02-10T11:00:00-08:00",
"noShowAnchor": "2026-02-09T23:59:59-08:00"
},
"temporalWindows": {
"discoveryWindow": {
"open": "2026-01-01T07:00:00-08:00",
"close": "2026-12-31T23:59:59-08:00"
},
"reservationWindow": {
"open": "2026-01-26T07:00:00-08:00",
"close": "2026-02-08T23:59:59-08:00"
},
"restrictedBookingWindow": {
"open": "2026-01-26T07:00:00-08:00",
"close": "2026-01-27T07:00:00-08:00"
}
}
},
"partyContext": {
"isValid": true,
"partyComposition": [
{
"id": "adults",
"label": "Adults (18+)",
"quantity": 2
},
{
"id": "children",
"label": "Children <18",
"quantity": 1
},
{
"id": "tents",
"label": "Tents",
"quantity": 1
}
]
},
"feePolicySnapshot": {
"feeSchedule": [
{
"id": "costPerAdult",
"label": "Adult Nightly Fee",
"type": "unit",
"amount": 10
},
{
"id": "costPerChild",
"label": "Child Nightly Fee",
"type": "unit",
"amount": 5
},
{
"id": "costPerTent",
"label": "Tent Nightly Fee",
"type": "unit",
"amount": 15
},
{
"id": "tax",
"label": "Tax",
"type": "percentage",
"amount": 0.05
}
],
"lineItems": [
{
"id": "adultLineItem",
"label": "Adult Fee",
"type": "unit",
"if": [],
"quantity": {
"type": "ref",
"value": "partyContext.adults"
},
"rate": {
"type": "ref",
"value": "feeSchedule.costPerAdult"
},
"taxApplied": [
{
"type": "ref",
"value": "feeSchedule.tax"
}
],
"discountsApplied": [],
"isReturnable": true
},
{
"id": "childLineItem",
"label": "Child Fee",
"type": "unit",
"if": [],
"quantity": {
"type": "ref",
"value": "partyContext.children"
},
"rate": {
"type": "ref",
"value": "feeSchedule.costPerChild"
},
"taxApplied": [
{
"type": "ref",
"value": "feeSchedule.tax"
}
],
"discountsApplied": [],
"isReturnable": true
},
{
"id": "tentLineItem",
"label": "Tent Fee",
"type": "unit",
"if": [],
"quantity": {
"type": "ref",
"value": "partyContext.tents"
},
"rate": {
"type": "ref",
"value": "feeSchedule.costPerTent"
},
"taxApplied": [
{
"type": "ref",
"value": "feeSchedule.tax"
}
],
"discountsApplied": [],
"isReturnable": true
}
]
},
"feeValues": {
"resolvedLineItems": [
{
"id": "adultFeeLine",
"label": "Adult Fee",
"type": "unit",
"isReturnable": true,
"units": [
{
"rate": 10,
"discountsApplied": [],
"taxApplied": [
{
"id": "tax",
"rate": 0.05,
"amount": 0.50
}
],
"unitSubTotal": 10,
"unitTotal": 10.50
},
{
"rate": 10,
"discountsApplied": [],
"taxApplied": [
{
"id": "tax",
"rate": 0.05,
"amount": 0.50
}
],
"unitSubTotal": 10,
"unitTotal": 10.50
}
],
"lineDiscounts": [],
"lineTaxes": [
{
"id": "tax",
"rate": 0.05,
"amount": 1.00
}
],
"lineSubTotal": 20,
"lineTotal": 21
},
{
"id": "childFeeLine",
"label": "Child Fee",
"type": "unit",
"isReturnable": true,
"units": [
{
"rate": 5,
"discountsApplied": [],
"taxApplied": [
{
"id": "tax",
"rate": 0.05,
"amount": 0.25
}
],
"unitSubTotal": 5,
"unitTotal": 5.25
}
],
"lineDiscounts": [],
"lineTaxes": [
{
"id": "tax",
"rate": 0.05,
"amount": 0.25
}
],
"lineSubTotal": 5,
"lineTotal": 5.25
},
{
"id": "tentFeeLine",
"label": "Tent Fee",
"type": "unit",
"isReturnable": true,
"units": [
{
"rate": 15,
"discountsApplied": [],
"taxApplied": [
{
"id": "tax",
"rate": 0.05,
"amount": 0.75
}
],
"unitSubTotal": 15,
"unitTotal": 15.75
}
],
"lineDiscounts": [],
"lineTaxes": [
{
"id": "tax",
"rate": 0.05,
"amount": 0.75
}
],
"lineSubTotal": 15,
"lineTotal": 15.75
}
],
"totalDiscounts": [],
"totalTaxes": [
{
"id": "tax",
"rate": 0.05,
"amount": 2.00
}
],
"subTotal": 40,
"total": 42
}
}