Book
bookBook one visit for the customer, as a request the business approves (or, for a business that takes its bookings by email, confirms with the customer itself); the answer says what happens next and gives a manage.token to check or cancel it later. The customer is emailed. A new customer books the Meet & Greet first. Ask the customer about the dogs and answer from what they said (booking.petCare on the card): never guess. Confirm the visit, the time and the customer's details with the customer before calling it. idempotency_key is required: choose a new random one for each booking (a UUID without hyphens) and send the same one to retry after a timeout.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| agent | Yes | Who is booking, so the business sees that an agent made the booking and which one. | |
| items | Yes | Exactly one visit. Each visit is booked on its own; add-ons the service takes go in answers.addons. | |
| start | Yes | A start time from `times`, ISO 8601 with an offset, on a whole minute: seconds, when written, are 00 ("2026-10-12T10:00:00-07:00" or "2026-10-12T17:00Z"). It is checked again, and refused with `time_not_open` if it is no longer open. | |
| answers | Yes | What the customer told you about the visit and the dogs. The card's booking.petCare.answers says each key's exact format. Never guess: a question nobody asked is null. | |
| customer | Yes | The person the booking is for. They are emailed that the request was received, and again when the business answers. | |
| idempotency_key | Yes | Required. A key you choose, new for each booking: 32 to 255 letters, digits, dashes or underscores, and RANDOM, never a counter, a word or a pattern (a UUID without hyphens is right; a key with fewer than 8 distinct characters is refused). Calling book again with the same key and customer email answers the first booking again, with the same manage token, instead of making a second one: use it to retry safely after a timeout. |