RentalTideRentalTideDocs
Dashboard

Bookings API

Create, retrieve, update, and cancel rental bookings

Endpoints for managing the booking lifecycle -- from creation through checkout and return.

Core Booking

Create a new booking

POST /coreBooking/book

Main booking endpoint that handles the complete booking workflow including:

  • Customer creation/updates
  • Payment processing (full or installment plans)
  • Inventory management and asset assignment
  • Booking record creation
  • Notifications and accounting entries
  • Loyalty points awarding

Request body

FieldTypeRequiredDescription
rentalDetailsobjectYesCore rental information
rentalPricingobjectYesPricing breakdown
customerInfoobjectYesCustomer details
depositInformationobjectNoDeposit configuration
discountDetailsobjectNoApplied discounts
paymentMethodIdstringNoStripe payment method ID
paymentPlanobjectNoPayment plan type (full or installments)
selectedBoatAddonsarrayNo
globalAddonsarrayNo
extendedDataobjectYesAdditional booking data including location and customer info

Responses

CodeDescription
201Booking created successfully
400Invalid request data or validation error
402Payment authorization failed
409Time slot unavailable or fully booked
500Internal server error

Booking Schedule

Get booking schedule for an inventory

GET /schedule/schedule

Retrieves booking schedule with date range optimization, filtering, sorting, and pagination support

Parameters

NameInTypeRequiredDescription
inventory_idquerystringYesThe inventory ID to get schedule for
start_datequerystringNoFilter bookings from this date
end_datequerystringNoFilter bookings until this date
extendquerystringNoInclude extended record data
dates_onlyquerystringNoReturn only date information
pagequeryintegerNoPage number for pagination
limitqueryintegerNoNumber of items per page
include_drydockquerystringNoInclude drydock bookings
use_parallelquerystringNoEnable parallel loading
use_scanquerystringNoForce table scan if GSI issues
search_rental_idquerystringNoSearch for specific rental ID
sort_byquerystringNoSort field
sort_orderquerystringNoSort direction
status_filterquerystringNoFilter by booking status (comma-separated)

Responses

CodeDescription
200Successfully retrieved booking schedule
400Missing required inventory_id parameter
500Internal server error

Search bookings

GET /schedule/schedule/search

Quick search endpoint to find specific bookings by rental ID, customer name, or email

Parameters

NameInTypeRequiredDescription
inventory_idquerystringYesThe inventory ID to search within
rental_idquerystringNoPartial rental ID to search for
customer_namequerystringNoCustomer name to search for
emailquerystringNoCustomer email to search for

Responses

CodeDescription
200Search results returned successfully
400Missing required inventory_id parameter
500Search failed

Get inventory items by location

GET /schedule/location

Retrieves inventory items for specified location IDs

Parameters

NameInTypeRequiredDescription
location_idsquerystringYesJSON array string of location IDs

Responses

CodeDescription
200Successfully retrieved inventory items
400Missing or invalid location_ids parameter
500Internal server error

Get bookings by customer and status

GET /schedule/by-customer-status

Query bookings by customerId and optionally filter by Status using the customerId-Status-index GSI

Parameters

NameInTypeRequiredDescription
customer_idquerystringNoCustomer ID (defaults to authenticated user)
statusquerystringNoFilter by specific booking status
start_datequerystringNoFilter bookings from this date
end_datequerystringNoFilter bookings until this date
pagequeryintegerNoPage number for pagination
limitqueryintegerNoNumber of items per page
sort_orderquerystringNoSort direction
lightweightquerystringNoReturn minimal data for boards

Responses

CodeDescription
200Successfully retrieved bookings
400Missing required customer_id
500Internal server error

Get bookings by location and status

GET /schedule/by-location-status

Query bookings by locationId and optionally filter by Status using the locationId-Status-index GSI

Parameters

NameInTypeRequiredDescription
location_idquerystringYesLocation ID to query
statusquerystringNoFilter by specific booking status
start_datequerystringNoFilter bookings from this date
end_datequerystringNoFilter bookings until this date
pagequeryintegerNoPage number for pagination
limitqueryintegerNoNumber of items per page
sort_orderquerystringNoSort direction
lightweightquerystringNoReturn minimal data for boards

Responses

CodeDescription
200Successfully retrieved bookings
400Missing required location_id
500Internal server error

Get paginated schedules with cursor-based pagination

GET /schedule/schedules/paginated

Retrieves schedules with smart pagination and advanced filtering support

Parameters

NameInTypeRequiredDescription
limitqueryintegerNoNumber of items per page
cursorquerystringNoBase64 encoded cursor for pagination
filtersquerystringNoJSON encoded filter criteria

Responses

CodeDescription
200Successfully retrieved paginated schedules
400Invalid cursor or filters format
401Customer ID not found
500Failed to fetch schedules

Get total count of schedules

GET /schedule/schedules/count

Returns the total count of schedules for the authenticated customer with optional filtering

Parameters

NameInTypeRequiredDescription
filtersquerystringNoJSON encoded filter criteria

Responses

CodeDescription
200Successfully retrieved count
400Invalid filters format
401Customer ID not found
500Failed to count schedules

Booking Payments

Authorize a deposit

POST /preAuth/authorize-deposit

Creates a pre-authorization for a security/damage deposit using Stripe or terminal payment

Request body

FieldTypeRequiredDescription
rentalIdstringYesThe ID of the rental/booking
authorizeAmountnumberYesAmount to authorize in dollars
currencystringNoCurrency code
descriptionstringNoDescription for the payment
customerstringNoStripe customer ID
paymentMethodTypestringYesPayment method type
paymentMethodIdstringNoStripe payment method ID (required for stripe type)
notesstringNoNotes for the deposit
readerIdstringNoTerminal reader ID (for terminal payments)
connectedAccountIdstringNoStripe connected account ID
platformFeePercentnumberNoPlatform fee percentage
customerIdstringNoCustomer ID
locationIdstringNoLocation ID

Responses

CodeDescription
200Deposit pre-authorization successful
400Missing required fields or unsupported payment method
500Server error

Finalize a deposit

POST /preAuth/post-deposit

Records the deposit information in the booking record after terminal payment completes

Request body

FieldTypeRequiredDescription
rentalIdstringYesThe ID of the rental/booking
authorizeAmountnumberNoAmount that was authorized
customerIdstringNoCustomer ID
locationIdstringNoLocation ID
notesstringNoNotes for the deposit
intentIdstringYesStripe PaymentIntent ID
connectIdstringNoStripe connected account ID

Responses

CodeDescription
200Deposit finalized successfully
400Missing required fields or payment not successful
500Server error

Capture a deposit

POST /preAuth/capture-deposit

Captures a pre-authorized deposit payment for checkout or damage claims

Request body

FieldTypeRequiredDescription
rentalIdstringYesThe ID of the rental/booking
paymentIntentIdstringYesStripe PaymentIntent ID to capture
captureAmountnumberYesAmount to capture in dollars
connectedAccountIdstringNoStripe connected account ID
descriptionstringNoDescription for the capture
claimTypestringNoType of claim
feeInCentsnumberNoPlatform fee in cents
locationIdstringNoLocation ID

Responses

CodeDescription
200Deposit captured successfully
400Missing required fields or payment cannot be captured
404Payment intent not found
500Server error

Release a deposit

POST /preAuth/release-deposit

Releases (cancels) a pre-authorized deposit that won't be charged

Request body

FieldTypeRequiredDescription
rentalIdstringYesThe ID of the rental/booking
paymentIntentIdstringYesStripe PaymentIntent ID to release
amountnumberNoAmount being released
customerIdstringNoCustomer ID for notification
locationIdstringNoLocation ID for notification
connectedAccountIdstringNoStripe connected account ID

Responses

CodeDescription
200Deposit released successfully
400Missing required fields
500Server error

Sync missing pre-authorization

POST /preAuth/sync-missing-preauth/{paymentIntentId}

Recovery endpoint to manually sync a missing pre-authorization from Stripe to database

Parameters

NameInTypeRequiredDescription
paymentIntentIdpathstringYesStripe PaymentIntent ID to sync

Request body

FieldTypeRequiredDescription
rentalIdstringNoOverride rental ID if not in metadata
locationIdstringNoLocation ID for Stripe region

Responses

CodeDescription
200Pre-authorization synced successfully
400Missing paymentIntentId or rentalId
404PaymentIntent not found
500Server error

Audit pre-authorizations

GET /preAuth/audit-preauths/{rentalId}

Retrieves all pre-authorizations for a rental from Stripe with status and expiration details

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYesThe rental ID to audit
locationIdquerystringNoLocation ID for Stripe region
connected_account_idquerystringNoStripe connected account ID for direct charges

Responses

CodeDescription
200Audit results returned successfully
500Server error

Create terminal connection token

POST /preAuth/connection-token

Creates a Stripe Terminal connection token for terminal payments

Request body

FieldTypeRequiredDescription
locationIdstringNoLocation ID for Stripe region

Responses

CodeDescription
200Connection token created successfully
500Server error

Was this page helpful?
Need help? Contact Support.See what’s new. Check out changelog.Questions? Book a video chat.
Ask AI
Responses are generated using AI and may contain mistakes.
Ask questions about RentalTide and get help with your integration.