Endpoints for managing inventory items, pricing rules, and inventory records.
Inventory
Upload inventory photo
POST /inventory/photo/{inventory_id}
Uploads and optimizes a photo for an inventory item, storing it in S3
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
inventory_id | path | string | Yes | The inventory ID to add photo to |
Responses
| Code | Description |
|---|---|
200 | Photo uploaded successfully |
400 | Missing inventory_id or photo file |
500 | Internal server error |
Upload inventory video
POST /inventory/video/{inventory_id}
Uploads a video for an inventory item, storing it in S3
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
inventory_id | path | string | Yes | The inventory ID to add video to |
Responses
| Code | Description |
|---|---|
200 | Video uploaded successfully |
400 | Missing inventory_id, video file, or unsupported format |
500 | Internal server error |
Save asset map configuration
POST /inventory/asset-map/{inventory_id}
Saves asset map pin configuration for an inventory item, optionally uploading a map image
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
inventory_id | path | string | Yes | The inventory ID to configure asset map for |
Responses
| Code | Description |
|---|---|
200 | Asset map configuration saved successfully |
400 | Missing inventory_id or invalid pins data |
403 | Unauthorized to update this inventory |
404 | Inventory not found |
500 | Internal server error |
Create or update inventory settings
POST /inventory/setup
Creates or updates an inventory record with all settings including pricing, capacity, and asset pool configuration
Request body
| Field | Type | Required | Description |
|---|---|---|---|
data | object | Yes |
Responses
| Code | Description |
|---|---|
200 | Inventory settings updated successfully |
400 | Missing required data |
403 | Unauthorized to update inventory for another customer |
500 | Internal server error |
Get inventory by customer
GET /inventory/customer
Retrieves all inventory items for a given customer ID
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
customer_id | query | string | Yes | The customer ID to get inventory for |
Responses
| Code | Description |
|---|---|
200 | Inventory items retrieved successfully |
400 | Missing customer_id query parameter |
500 | Internal server error |
Delete an inventory item
DELETE /inventory/delete/{inventory_id}
Deletes an inventory item by ID
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
inventory_id | path | string | Yes | The inventory ID to delete |
Responses
| Code | Description |
|---|---|
200 | Inventory deleted successfully |
400 | Missing inventory_id param |
403 | Unauthorized to delete this inventory |
404 | Inventory not found |
500 | Internal server error |
Reorder inventory items
POST /inventory/reorder
Updates the display order of inventory items
Request body
| Field | Type | Required | Description |
|---|---|---|---|
orderedBoats | array | Yes |
Responses
| Code | Description |
|---|---|
200 | Order updated successfully |
400 | Invalid data - orderedBoats array is required |
500 | Internal server error |
Inventory Pricing
Get inventory pricing
GET /inventory-pricing
Retrieves pricing configuration for an inventory item including seasons, hourly rates, and addons
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
inventory_id | query | string | Yes | The inventory ID to get pricing for (also accepts inventoryId) |
Responses
| Code | Description |
|---|---|
200 | Pricing data retrieved successfully |
400 | Missing inventory_id query parameter or validation error |
404 | No pricing found for the inventory |
500 | Internal server error |
Create or update inventory pricing
POST /inventory-pricing
Creates or updates pricing configuration for an inventory item including seasons, schedule exceptions, and addons
Request body
| Field | Type | Required | Description |
|---|---|---|---|
data | object | Yes |
Responses
| Code | Description |
|---|---|
200 | Inventory pricing updated successfully |
400 | Missing required data or validation error |
500 | Internal server error |
Inventory Records
Get inventory records
GET /boatRecords
Retrieves records for an inventory item, optionally filtered by record type
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
inventoryId | query | string | Yes | The inventory ID to get records for |
RecordType | query | string | No | Filter by record type (e.g., checkout, checkin) |
Responses
| Code | Description |
|---|---|
200 | Records retrieved successfully |
400 | inventoryId is required |
500 | Internal server error |
Create an inventory record
POST /boatRecords
Creates a new record for an inventory item. May trigger Ship Shape AI analysis for check-in records with photos.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
inventoryId | string | Yes | The inventory ID |
RecordType | string | Yes | Type of record (checkout, checkin, etc.) |
Details | object | Yes | Record details |
RentalId | string | No | Associated rental ID |
AssetId | string | No | Associated asset ID |
timestamp | string | No | Record timestamp (defaults to current time) |
Responses
| Code | Description |
|---|---|
201 | Record created successfully |
400 | Missing required fields |
500 | Internal server error |
Update an inventory record
PATCH /boatRecords
Updates an existing record's Details attribute
Request body
| Field | Type | Required | Description |
|---|---|---|---|
inventoryId | string | Yes | The inventory ID |
timestamp | string | Yes | Record timestamp (used as sort key) |
Updates | object | Yes | Fields to update within the Details attribute |
Responses
| Code | Description |
|---|---|
200 | Record updated successfully |
400 | inventoryId, timestamp, and Updates are required |
500 | Internal server error |
Delete an inventory record
DELETE /boatRecords
Deletes a record by inventoryId and timestamp
Request body
| Field | Type | Required | Description |
|---|---|---|---|
inventoryId | string | Yes | The inventory ID |
timestamp | string | Yes | Record timestamp (used as sort key) |
Responses
| Code | Description |
|---|---|
200 | Record deleted successfully |
400 | inventoryId and timestamp are required |
500 | Internal server error |
Get paginated rundown records
GET /boatRecords/rundownRecords
Retrieves records for an inventory item with pagination support
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
inventoryId | query | string | Yes | The inventory ID to get records for |
limit | query | integer | No | Number of items to return |
nextToken | query | string | No | URL-encoded pagination token for next page |
Responses
| Code | Description |
|---|---|
200 | Records retrieved successfully with pagination info |
400 | inventoryId is required |
500 | Internal server error |

