Browse rental orders, customers, products and availability, and create bookings in Booqable.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Add a quantity of a product to an order, allocating inventory (creates a planning and a line). By default adds to an existing planning for the same product if there is one. Booqable: POST /api/4/order_fulfillments with a book_product action.
The order id (UUID).
Units to book.
The product id (UUID).
infer_planning (default): reuse the product's planning if any; create_new: always a new line; update_existing: add to planning_id.
Required when mode is update_existing.
true to accept a shortage warning when booking on a reserved or started order.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Add a quantity of a product to an order, allocating inventory (creates a planning and a line). By default adds to an existing planning for the same product if there is one. Booqable: POST /api/4/order_fulfillments with a book_product action.
| Argument | Type | Description |
|---|---|---|
| mode | string | infer_planning (default): reuse the product's planning if any; create_new: always a new line; update_existing: add to planning_id. |
| order_id* | string | The order id (UUID). |
| quantity* | integer | Units to book. |
| product_id* | string | The product id (UUID). |
| planning_id | string | Required when mode is update_existing. |
| confirm_shortage | boolean | true to accept a shortage warning when booking on a reserved or started order. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id",
"product_id",
"quantity"
],
"properties": {
"mode": {
"enum": [
"infer_planning",
"create_new",
"update_existing"
],
"type": "string",
"description": "infer_planning (default): reuse the product's planning if any; create_new: always a new line; update_existing: add to planning_id."
},
"order_id": {
"type": "string",
"minLength": 1,
"description": "The order id (UUID)."
},
"quantity": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Units to book."
},
"product_id": {
"type": "string",
"minLength": 1,
"description": "The product id (UUID)."
},
"planning_id": {
"type": "string",
"description": "Required when mode is update_existing."
},
"confirm_shortage": {
"type": "boolean",
"description": "true to accept a shortage warning when booking on a reserved or started order."
}
}
}How many units of one or more products can be booked for an exact period at a location. Returns `available` and `plannable` (plannable can exceed available when shortage is allowed). Get location ids from booqable_list_locations. Booqable: GET /api/4/inventory_availabilities.
| Argument | Type | Description |
|---|---|---|
| from* | string | Period start, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC. |
| till* | string | Period end, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC. |
| location_id* | string | The pickup location id. |
| product_ids* | array | Product ids to check. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product_ids",
"from",
"till",
"location_id"
],
"properties": {
"from": {
"type": "string",
"description": "Period start, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC."
},
"till": {
"type": "string",
"description": "Period end, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC."
},
"location_id": {
"type": "string",
"minLength": 1,
"description": "The pickup location id."
},
"product_ids": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 50,
"minItems": 1,
"description": "Product ids to check."
}
}
}Create a new customer. Booqable: POST /api/4/customers.
| Argument | Type | Description |
|---|---|---|
| name* | string | Person or company name. |
| string | Email address used for communication. | |
| tag_list | array | Tags (case-insensitive). |
| legal_type | string | person or commercial. |
| discount_percentage | number | Default discount % applied to this customer's new orders. |
| email_marketing_consented | boolean | Whether the customer consented to email marketing. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Person or company name."
},
"email": {
"type": "string",
"description": "Email address used for communication."
},
"tag_list": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags (case-insensitive)."
},
"legal_type": {
"enum": [
"person",
"commercial"
],
"type": "string",
"description": "person or commercial."
},
"discount_percentage": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Default discount % applied to this customer's new orders."
},
"email_marketing_consented": {
"type": "boolean",
"description": "Whether the customer consented to email marketing."
}
}
}Attach an internal note to a customer, order, product or other record. Booqable: POST /api/4/notes.
| Argument | Type | Description |
|---|---|---|
| body* | string | The note text. |
| owner_id* | string | The id of the record the note is about. |
| owner_type* | string | The owner's resource type. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"owner_id",
"owner_type",
"body"
],
"properties": {
"body": {
"type": "string",
"minLength": 1,
"description": "The note text."
},
"owner_id": {
"type": "string",
"minLength": 1,
"description": "The id of the record the note is about."
},
"owner_type": {
"enum": [
"customers",
"orders",
"products",
"product_groups",
"stock_items",
"bundles",
"documents",
"users"
],
"type": "string",
"description": "The owner's resource type."
}
}
}Create an EMPTY order for a rental period (status new or draft). Then add products with booqable_book_product and reserve it with booqable_transition_order_status. Locations default to the first active location. Booqable: POST /api/4/orders.
| Argument | Type | Description |
|---|---|---|
| status | string | Initial status. Default new (visible only to its creator); draft is visible but reserves nothing. |
| stops_at* | string | Rental end, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC. |
| tag_list | array | Tags (case-insensitive). |
| starts_at* | string | Rental start, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC. |
| customer_id | string | The customer this order is for. |
| stop_location_id | string | Return location id. |
| start_location_id | string | Pickup location id. |
Day-by-day availability for one product over a month: status (available/partial/unavailable) and bookable quantity per day. Booqable: GET /api/4/availabilities with subject_type=item.
| Argument | Type | Description |
|---|---|---|
| year* | integer | Calendar year, e.g. 2026. |
| month* | integer | Calendar month, 1-12. |
| quantity | integer | Units needed; sets the threshold for available vs partial. |
| product_id* | string | The product id (UUID). |
| location_id | string | Location id to check at. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product_id",
"year",
"month"
],
"properties": {
"year": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Calendar year, e.g. 2026."
},
"month": {
"type": "integer",
"maximum": 12,
"minimum": 1,
"description": "Calendar month, 1-12."
},
"quantity": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Units needed; sets the threshold for available vs partial."
},
"product_id": {
"type": "string",
"minLength": 1,
"description": "The product id (UUID)."
},
"location_id": {
"type": "string",
"description": "Location id to check at."
}
}
}Fetch the Booqable account this token belongs to — name, currency, default timezone, address. A cheap way to confirm the slug and token work. Booqable: GET /api/4/companies/current.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch one customer with order count, revenue and balance due, sideloading their properties (addresses, phone, custom fields) by default. Booqable: GET /api/4/customers/{id}.
| Argument | Type | Description |
|---|---|---|
| include | string | Comma-separated relationships to sideload, e.g. properties,tax_region. |
| customer_id* | string | The customer id (UUID). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id"
],
"properties": {
"include": {
"type": "string",
"description": "Comma-separated relationships to sideload, e.g. properties,tax_region."
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "The customer id (UUID)."
}
}
}Fetch one order with its totals, deposit and payment state, sideloading the customer and order lines by default (override with include, e.g. customer,lines,payments,documents,notes). Booqable: GET /api/4/orders/{id}.
| Argument | Type | Description |
|---|---|---|
| include | string | Comma-separated relationships to sideload, e.g. customer,lines,payments,documents,notes,start_location. |
| order_id* | string | The order id (UUID). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"include": {
"type": "string",
"description": "Comma-separated relationships to sideload, e.g. customer,lines,payments,documents,notes,start_location."
},
"order_id": {
"type": "string",
"minLength": 1,
"description": "The order id (UUID)."
}
}
}List customers, optionally searched by name/email or filtered by email, tag or archived state. Booqable: GET /api/4/customers.
| Argument | Type | Description |
|---|---|---|
| q | string | Free-text search over customers. |
| tag | string | Only customers carrying this tag. |
| page | integer | Page number (1-based). Default 1. |
| sort | string | Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at. |
| string | Only the customer with exactly this email. | |
| include | string | Comma-separated relationships to sideload, e.g. properties. |
| archived | boolean | true = only archived, false = only active. |
| page_size | integer | Results per page, 1-100 (Booqable default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"description": "Free-text search over customers."
},
"tag": {
"type": "string",
"description": "Only customers carrying this tag."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Default 1."
},
"sort": {
"type": "string",
"description": "Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at."
},
"email": {
"type": "string",
"description": "Only the customer with exactly this email."
},
"include": {
"type": "string",
"description": "Comma-separated relationships to sideload, e.g. properties."
},
"archived": {
"type": "boolean",
"description": "true = only archived, false = only active."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (Booqable default 25)."
}
}
}List invoices, quotes and contracts, with totals and payment status. Filter by type, order, customer or status. Booqable: GET /api/4/documents.
| Argument | Type | Description |
|---|---|---|
| q | string | Free-text search. |
| page | integer | Page number (1-based). Default 1. |
| sort | string | Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at. |
| status | string | Only documents in this status (values depend on document type). |
| include | string | Comma-separated relationships to sideload, e.g. customer,order. |
| order_id | string | Only documents for this order. |
| page_size | integer | Results per page, 1-100 (Booqable default 25). |
| customer_id | string | Only documents for this customer. |
| document_type | string | Only this document type. |
List pickup/return locations (warehouses, stores) with address and pickup/delivery capability. Location ids are needed for availability checks and orders. Booqable: GET /api/4/locations.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Default 1. |
| archived | boolean | true = only archived, false = only active. |
| page_size | integer | Results per page, 1-100 (Booqable default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Default 1."
},
"archived": {
"type": "boolean",
"description": "true = only archived, false = only active."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (Booqable default 25)."
}
}
}List internal notes attached to a customer, order, product or other record. Booqable: GET /api/4/notes.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Default 1. |
| owner_id* | string | The id of the record the notes are about. |
| page_size | integer | Results per page, 1-100 (Booqable default 25). |
| owner_type | string | The owner's resource type. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"owner_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Default 1."
},
"owner_id": {
"type": "string",
"minLength": 1,
"description": "The id of the record the notes are about."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (Booqable default 25)."
},
"owner_type": {
"enum": [
"customers",
"orders",
"products",
"product_groups",
"stock_items",
"bundles",
"documents",
"users"
],
"type": "string",
"description": "The owner's resource type."
}
}
}List rental orders. Filter by free-text search (order number, customer name/email/address, tags, custom fields), status, payment status, customer, or rental-period range. Booqable: GET /api/4/orders.
| Argument | Type | Description |
|---|---|---|
| q | string | Search: order number (exact), customer name, e-mail, address, tags, custom field values. |
| tag | string | Only orders carrying this tag. |
| page | integer | Page number (1-based). Default 1. |
| sort | string | Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at. |
| status | string | Only orders with this simplified status. |
| include | string | Comma-separated relationships to sideload, e.g. customer,start_location,stop_location. |
| page_size | integer | Results per page, 1-100 (Booqable default 25). |
| customer_id | string | Only orders for this customer id. |
| stops_at_gte |
List payments (charges, authorizations and refunds) with amount, deposit, currency, provider and status. Filter by order, customer or payment type. Read only — this server never moves money. Booqable: GET /api/4/payments.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Default 1. |
| sort | string | Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at. |
| type | string | Only this payment type. |
| include | string | Comma-separated relationships to sideload, e.g. order,payment_method. |
| order_id | string | Only payments for this order. |
| page_size | integer | Results per page, 1-100 (Booqable default 25). |
| customer_id | string | Only payments for this customer. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Default 1."
},
"sort": {
"type": "string",
"description": "Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at."
},
"type": {
"enum": [
"payment_charges",
"payment_authorizations",
"payment_refunds"
],
"type": "string",
"description": "Only this payment type."
},
"include": {
"type": "string",
"description": "Comma-separated relationships to sideload, e.g. order,payment_method."
},
"order_id": {
"type": "string",
"description": "Only payments for this order."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (Booqable default 25)."
},
"customer_id": {
"type": "string",
"description": "Only payments for this customer."
}
}
}List plannings — which product is booked on which order, how many, when, and how many are started (out) or stopped (returned). Filter by order, product, or reservation window. Booqable: GET /api/4/plannings.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Default 1. |
| sort | string | Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at. |
| include | string | Comma-separated relationships to sideload, e.g. item,order,order.customer. |
| order_id | string | Only plannings on this order. |
| page_size | integer | Results per page, 1-100 (Booqable default 25). |
| product_id | string | Only plannings for this product or bundle (item_id). |
| stops_at_gte | string | Planned end at or after this datetime (ISO 8601). |
| stops_at_lte | string | Planned end at or before this datetime (ISO 8601). |
| starts_at_gte |
List product groups — the catalogue entries (name, SKU, product type, tracking type, pricing). A group holds one or more bookable products (variations). Booqable: GET /api/4/product_groups.
| Argument | Type | Description |
|---|---|---|
| q | string | Free-text search over name/SKU. |
| tag | string | Only groups carrying this tag. |
| page | integer | Page number (1-based). Default 1. |
| sort | string | Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at. |
| include | string | Comma-separated relationships to sideload, e.g. products,photo. |
| archived | boolean | true = only archived, false = only active. |
| page_size | integer | Results per page, 1-100 (Booqable default 25). |
| product_type | string | Only this product type. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"description": "Free-text search over name/SKU."
},
"tag": {
"type": "string",
"description": "Only groups carrying this tag."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Default 1."
},
"sort": {
"type": "string",
"description": "Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at."
},
"include": {
"type": "string",
"description": "Comma-separated relationships to sideload, e.g. products,photo."
},
"archived": {
"type": "boolean",
"description": "true = only archived, false = only active."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (Booqable default 25)."
},
"product_type": {
"enum": [
"rental",
"sales_item",
"service"
],
"type": "string",
"description": "Only this product type."
}
}
}List bookable products (the variations inside product groups). Use a product id for availability checks and booking. Booqable: GET /api/4/products.
| Argument | Type | Description |
|---|---|---|
| q | string | Free-text search over name/SKU. |
| page | integer | Page number (1-based). Default 1. |
| sort | string | Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at. |
| include | string | Comma-separated relationships to sideload, e.g. product_group,photo. |
| archived | boolean | true = only archived, false = only active. |
| page_size | integer | Results per page, 1-100 (Booqable default 25). |
| product_type | string | Only this product type. |
| product_group_id | string | Only products in this product group. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"description": "Free-text search over name/SKU."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Default 1."
},
"sort": {
"type": "string",
"description": "Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at."
},
"include": {
"type": "string",
"description": "Comma-separated relationships to sideload, e.g. product_group,photo."
},
"archived": {
"type": "boolean",
"description": "true = only archived, false = only active."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (Booqable default 25)."
},
"product_type": {
"enum": [
"rental",
"sales_item",
"service"
],
"type": "string",
"description": "Only this product type."
},
"product_group_id": {
"type": "string",
"description": "Only products in this product group."
}
}
}Move an order between statuses: new→draft, draft→reserved (reserves the items and assigns an order number), stopped→archived, or back to an earlier status with revert: true. Canceling is deliberately NOT offered (Booqable cannot un-cancel). started/stopped are reached by picking up/returning items, so they are only valid here with revert: true. Booqable: POST /api/4/order_status_transitions.
| Argument | Type | Description |
|---|---|---|
| revert | boolean | true when going back to an earlier status (required for started/stopped). |
| order_id* | string | The order id (UUID). |
| transition_to* | string | The new status. |
| transition_from* | string | The order's CURRENT status (Booqable checks it). |
| confirm_shortage | boolean | true to accept a shortage warning when reserving. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id",
"transition_from",
"transition_to"
],
"properties": {
"revert": {
"type": "boolean",
"description": "true when going back to an earlier status (required for started/stopped)."
},
"order_id": {
"type": "string",
"minLength": 1,
"description": "The order id (UUID)."
},
"transition_to": {
"enum": [
"draft",
"reserved",
"started",
"stopped",
"archived"
],
"type": "string",
"description": "The new status."
},
"transition_from": {
"enum": [
"new",
"draft",
"reserved",
"started",
"stopped",
"archived"
],
"type": "string",
"description": "The order's CURRENT status (Booqable checks it)."
},
"confirm_shortage": {
"type": "boolean",
"description": "true to accept a shortage warning when reserving."
}
}
}Update a customer's name, email, legal type, tags, default discount or marketing consent. Only the fields you pass change. Booqable: PUT /api/4/customers/{id}.
| Argument | Type | Description |
|---|---|---|
| name | string | Person or company name. |
| string | Email address used for communication. | |
| tag_list | array | Tags (case-insensitive). |
| legal_type | string | person or commercial. |
| customer_id* | string | The customer id (UUID). |
| discount_percentage | number | Default discount % applied to this customer's new orders. |
| email_marketing_consented | boolean | Whether the customer consented to email marketing. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Person or company name."
},
"email": {
"type": "string",
"description": "Email address used for communication."
},
"tag_list": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags (case-insensitive)."
},
"legal_type": {
"enum": [
"person",
"commercial"
],
"type": "string",
"description": "person or commercial."
},
"customer_id": {
"type": "string",
"minLength": 1,
"description": "The customer id (UUID)."
},
"discount_percentage": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Default discount % applied to this customer's new orders."
},
"email_marketing_consented": {
"type": "boolean",
"description": "Whether the customer consented to email marketing."
}
}
}Change an order's rental period, customer, locations or tags. Moving dates can cause a shortage: the call then fails with the shortage details, and a shortage *warning* can be accepted by retrying with confirm_shortage: true. Booqable: PUT /api/4/orders/{id}.
| Argument | Type | Description |
|---|---|---|
| order_id* | string | The order id (UUID). |
| stops_at | string | New rental end, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC. |
| tag_list | array | Replace the tag list. |
| starts_at | string | New rental start, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC. |
| customer_id | string | Assign this customer (re-applies their discount, deposit and tax region). |
| confirm_shortage | boolean | true to proceed despite a shortage warning. |
| stop_location_id | string | Return location id. |
| start_location_id |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"starts_at",
"stops_at"
],
"properties": {
"status": {
"enum": [
"new",
"draft"
],
"type": "string",
"description": "Initial status. Default new (visible only to its creator); draft is visible but reserves nothing."
},
"stops_at": {
"type": "string",
"description": "Rental end, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC."
},
"tag_list": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags (case-insensitive)."
},
"starts_at": {
"type": "string",
"description": "Rental start, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC."
},
"customer_id": {
"type": "string",
"description": "The customer this order is for."
},
"stop_location_id": {
"type": "string",
"description": "Return location id."
},
"start_location_id": {
"type": "string",
"description": "Pickup location id."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"description": "Free-text search."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Default 1."
},
"sort": {
"type": "string",
"description": "Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at."
},
"status": {
"enum": [
"confirmed",
"unconfirmed",
"revised",
"partially_paid",
"payment_due",
"paid",
"process_deposit",
"overpaid"
],
"type": "string",
"description": "Only documents in this status (values depend on document type)."
},
"include": {
"type": "string",
"description": "Comma-separated relationships to sideload, e.g. customer,order."
},
"order_id": {
"type": "string",
"description": "Only documents for this order."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (Booqable default 25)."
},
"customer_id": {
"type": "string",
"description": "Only documents for this customer."
},
"document_type": {
"enum": [
"invoice",
"quote",
"contract"
],
"type": "string",
"description": "Only this document type."
}
}
}| string |
| Rental ends at or after this datetime (ISO 8601). |
| stops_at_lte | string | Rental ends at or before this datetime (ISO 8601). |
| starts_at_gte | string | Rental starts at or after this datetime (ISO 8601). |
| starts_at_lte | string | Rental starts at or before this datetime (ISO 8601). |
| payment_status | string | Only orders with this payment status. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"description": "Search: order number (exact), customer name, e-mail, address, tags, custom field values."
},
"tag": {
"type": "string",
"description": "Only orders carrying this tag."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Default 1."
},
"sort": {
"type": "string",
"description": "Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at."
},
"status": {
"enum": [
"new",
"draft",
"reserved",
"started",
"stopped",
"archived",
"canceled"
],
"type": "string",
"description": "Only orders with this simplified status."
},
"include": {
"type": "string",
"description": "Comma-separated relationships to sideload, e.g. customer,start_location,stop_location."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (Booqable default 25)."
},
"customer_id": {
"type": "string",
"description": "Only orders for this customer id."
},
"stops_at_gte": {
"type": "string",
"description": "Rental ends at or after this datetime (ISO 8601)."
},
"stops_at_lte": {
"type": "string",
"description": "Rental ends at or before this datetime (ISO 8601)."
},
"starts_at_gte": {
"type": "string",
"description": "Rental starts at or after this datetime (ISO 8601)."
},
"starts_at_lte": {
"type": "string",
"description": "Rental starts at or before this datetime (ISO 8601)."
},
"payment_status": {
"enum": [
"paid",
"partially_paid",
"overpaid",
"payment_due",
"process_deposit"
],
"type": "string",
"description": "Only orders with this payment status."
}
}
}| string |
| Planned start at or after this datetime (ISO 8601). |
| starts_at_lte | string | Planned start at or before this datetime (ISO 8601). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Default 1."
},
"sort": {
"type": "string",
"description": "Sort, comma-separated attributes; prefix with - for descending, e.g. -created_at."
},
"include": {
"type": "string",
"description": "Comma-separated relationships to sideload, e.g. item,order,order.customer."
},
"order_id": {
"type": "string",
"description": "Only plannings on this order."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (Booqable default 25)."
},
"product_id": {
"type": "string",
"description": "Only plannings for this product or bundle (item_id)."
},
"stops_at_gte": {
"type": "string",
"description": "Planned end at or after this datetime (ISO 8601)."
},
"stops_at_lte": {
"type": "string",
"description": "Planned end at or before this datetime (ISO 8601)."
},
"starts_at_gte": {
"type": "string",
"description": "Planned start at or after this datetime (ISO 8601)."
},
"starts_at_lte": {
"type": "string",
"description": "Planned start at or before this datetime (ISO 8601)."
}
}
}| string |
| Pickup location id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"minLength": 1,
"description": "The order id (UUID)."
},
"stops_at": {
"type": "string",
"description": "New rental end, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC."
},
"tag_list": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace the tag list."
},
"starts_at": {
"type": "string",
"description": "New rental start, ISO 8601 at the company's local time written as UTC, e.g. 2026-07-01T10:00:00Z means 10:00 at the shop. Do not convert to real UTC."
},
"customer_id": {
"type": "string",
"description": "Assign this customer (re-applies their discount, deposit and tax region)."
},
"confirm_shortage": {
"type": "boolean",
"description": "true to proceed despite a shortage warning."
},
"stop_location_id": {
"type": "string",
"description": "Return location id."
},
"start_location_id": {
"type": "string",
"description": "Pickup location id."
}
}
}