commit_order
Place a binding order with a business, inside limits they set in advance. This is the only tool here that commits anyone to anything. Either name the figure yourself, or send items from get_rate_card and we price them from the merchant's own card. Either way it is checked against their price floor, maximum, daily capacity, notice period and blackout dates. Send time to take one slot rather than a whole day — check_availability lists them. No model reads any part of this call: the fields you send are the fields we check, so a commitment cannot be talked into existence by anything written in prose. Returns committed. When true you get a ref, the exact terms agreed and basis naming which of their settings allowed it. When false, reason names the single limit that refused: "not-authorised", "below-price-floor", "above-maximum" (a person decides that one), "capacity-full", "blackout-date", "inside-lead-time", "currency-mismatch", "date-in-past", "unknown-items", "quote-mismatch" (their prices changed), "slot-taken", "not-a-slot-start". A refusal is final for those terms — change them or use contact_business; do not retry the same call. The business may later withdraw. Read state from check_commitment before relying on it. Authentication: bearer token required. Register once at POST /api/v1/agents/register, exchange the credentials at POST /api/v1/agents/token.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | The day the work or delivery is for, as yyyy-mm-dd, in the business's own local calendar. | |
| kind | Yes | The `kind` field from the same search result. | |
| slug | Yes | The `slug` field from a search_businesses result. | |
| time | No | Optional. A slot start on that day, HH:MM in 24-hour time and in their timezone. It must be one of the starts check_availability lists; times between them are refused rather than rounded to the nearest one. | |
| items | No | Optional. Lines from their rate card, as request_quote takes them. When present, the price is theirs rather than yours and is computed fresh at this moment — a card that changed since you quoted refuses with "quote-mismatch" instead of billing the new figure. | |
| amount | No | What the buyer is offering to pay, as a number. Required unless you send `items`. This is your figure, not ours — we only check it against the limits the business set. Sent alongside `items`, it must equal what their card comes to, or the call is refused. | |
| currency | No | ISO code, e.g. MDL or EUR. Required unless you send `items`. It must match the currency their limits are in. | |
| quantity | No | Optional. How many, as a whole number. Defaults to 1. Leave it out when you send `items` — the quantities are on the lines. | |
| description | No | Optional. What the order is for, in plain words. Recorded and shown to the business; it is never parsed and never changes what we check. |