Registers one customer at a live, bookable event, with any guests they bring - the registration the club’s own staff make. Every place is a seat on one of the event’s tickets, at the event’s time and club and the ticket’s price; the event’s capacity and each ticket’s apply. Identify the customer with contactId (resolve it via GET /v1/platform/contacts) or with an inline customer matched to a contact by email and created if new - exactly one of the two. A customer may register more than once, so registering them again books more places.
Places are ticketId with a quantity (3 is the customer and two guests), or tickets across several ticket types; the customer’s own seat is the first place of the first ticket, and the guests’ seats carry no contact. A ticket is required for every place when the event sells tickets, which every bookable event does; read the ticket ids and what is left on each (capacity - soldCount) from GET /v1/platform/events/.
Payment works as on POST /v1/platform/bookings: paid records the places as settled against a payment method named after your API key (no gateway call), with your reference on each seat’s payment and your fee shared over them; unpaid leaves them outstanding. amount is what the whole registration cost, shared over the seats in proportion to their ticket price. No membership ever covers an event, so an unpaid registration with no amount owes the ticket prices.
A draft or cancelled event (EVENT_NOT_LIVE), one that takes no bookings (EVENT_NOT_BOOKABLE), one that has ended (BOOKING_ALREADY_ENDED) and a ticket or event without room for every place are refused; nothing here overrides them. Returns the customer’s own seat, as POST /v1/platform/bookings returns a booking, with eventId, eventTicketId and seatBookingIds (every seat of the registration) set. Cancelling any seat with POST /v1/platform/bookings//cancel cancels the whole registration.
Places across several ticket types, instead of ticketId and quantity. Each ticket once; at most 50 places in all. The customer's own seat is the first place of the first entry.
Tell the customer they are booked - email plus the in-app, WhatsApp and SMS notification. Off by default for an API key, on by default over an OAuth connection, as on POST /v1/platform/bookings.
Response
Booking created
A booking created through the platform API. Recorded with a booking transaction so it counts for revenue, marked paid (settled against a payment method named after the caller's API key, so the club can reconcile what each partner collected) or unpaid (outstanding) per the caller. Collection stays with the caller; what it collected and what it gave back on cancellation are reported in payment.
The class occurrence this booking attends, when it is a class booking. Every attendee holds their own booking row against the same classId, and classes rows are per-occurrence - so this is what tells two classes running in the same hour apart. Join it against GET /v1/platform/classes, or read the staff roster with GET /v1/platform/classes/{id}/bookings.
The order the booking was sold on: one per sale, holding the customer's seat and any guests'. Every class enrolment and event registration made through this API has one; null for a booking sold on none (a court or coach booked through POST /v1/platform/bookings).
Every seat the sale holds, the customer's own first. Only on the answer to a seat sale (POST /v1/platform/classes/{id}/bookings, POST /v1/platform/events/{id}/bookings); the guests' seats carry no contact, and the class's or the event's roster lists them all.
How many players the booking takes, the organizer included, when it differs from the area type's defaultMaxPlayers: 2 on a court booked for singles (area types with allowsSingles). null means the area type's own limit. Adding a player past it is refused.
The booking's customer, identical to what GET /v1/platform/contacts/{id} returns. Present only when the request passes include=customer, which additionally requires the contacts:read scope; null when the booking has no contact. Use it to import a window of bookings without a contact lookup per row.
What the booking costs and how it was paid. Present only with include=money, which additionally requires the transactions:read scope. billed is always paid + outstanding, on the same basis as the admin's Booking audit: tax-inclusive, net of refunds, so a cancelled booking bills only the Cancellation Charge it kept.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"1club Help","colors":{"primary":"#471EFF","light":"#FFFFFF","dark":"#000000"},"logo":{"light":"https://mintcdn.com/1club/HM7mOd-FIJUyvW_1/logo/light.svg?fit=max\u0026auto=format\u0026n=HM7mOd-FIJUyvW_1\u0026q=85\u0026s=d93b7eb86d0fd304bfe27889e979db38","dark":"https://mintcdn.com/1club/HM7mOd-FIJUyvW_1/logo/dark.svg?fit=max\u0026auto=format\u0026n=HM7mOd-FIJUyvW_1\u0026q=85\u0026s=735ee613692e24e029e7d087b7effd44"},"favicon":"https://mintcdn.com/1club/iwVNuiPtdtxB6zsm/icon.png?fit=max\u0026auto=format\u0026n=iwVNuiPtdtxB6zsm\u0026q=85\u0026s=c8230ff0ac00066a07d7b0067f4c3df2","api":{"playground":{"display":"interactive","proxy":true}},"navbar":{"links":[{"href":"mailto:support@1club.ai","label":"Support"},{"href":"https://1club.ai","label":"Website"}],"primary":{"type":"button","label":"Log in","href":"https://admin.1club.ai"}},"footer":{"socials":{"x":"https://x.com/1club_ai","linkedin":"https://linkedin.com/company/1club_ai"}},"search":{"prompt":"Search the 1club help center"},"seo":{"metatags":{"og:type":"website","og:site_name":"1club Help","twitter:card":"summary_large_image"},"indexing":"all"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"1club","hasAudioNarration":false,"actualSubdomain":"1club","customDomains":["docs.1club.ai"],"gitSource":{"type":"github","owner":"1club-ai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adced4a6db7bf41f81eefa5","collectionId":"d46e0113-ca10-4f36-a33c-f954e32f88ac","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adced4a6db7bf41f81eefa5"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6adced4a6db7bf41f81eefa5","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API","count":260},{"language":"default","tag":"Settings","count":118},{"language":"default","tag":"Guides","count":64},{"language":"default","tag":"Admin","count":56},{"language":"default","tag":"Staff Roster","count":24},{"language":"default","tag":"Website","count":21},{"language":"default","tag":"Sales","count":17},{"language":"default","tag":"Classes","count":16},{"language":"default","tag":"Events","count":15},{"language":"default","tag":"Members","count":15}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/events/register-a-customer-for-an-event","slug":"/api-reference/events/register-a-customer-for-an-event","pageMetadata":{"title":"Register a customer for an event","description":"Registers one customer at a live, bookable event, with any guests they bring - the registration the club's own staff make. Every place is a seat on one of the event's tickets, at the event's time and club and the ticket's price; the event's capacity and each ticket's apply. Identify the customer with `contactId` (resolve it via GET /v1/platform/contacts) or with an inline `customer` matched to a contact by email and created if new - exactly one of the two. A customer may register more than once, so registering them again books more places.\n\nPlaces are `ticketId` with a `quantity` (`3` is the customer and two guests), or `tickets` across several ticket types; the customer's own seat is the first place of the first ticket, and the guests' seats carry no contact. A ticket is required for every place when the event sells tickets, which every bookable event does; read the ticket ids and what is left on each (`capacity - soldCount`) from GET /v1/platform/events/{id}.\n\nPayment works as on POST /v1/platform/bookings: `paid` records the places as settled against a payment method named after your API key (no gateway call), with your `reference` on each seat's payment and your `fee` shared over them; `unpaid` leaves them outstanding. `amount` is what the whole registration cost, shared over the seats in proportion to their ticket price. No membership ever covers an event, so an `unpaid` registration with no `amount` owes the ticket prices.\n\nA draft or cancelled event (`EVENT_NOT_LIVE`), one that takes no bookings (`EVENT_NOT_BOOKABLE`), one that has ended (`BOOKING_ALREADY_ENDED`) and a ticket or event without room for every place are refused; nothing here overrides them. Returns the customer's own seat, as POST /v1/platform/bookings returns a booking, with `eventId`, `eventTicketId` and `seatBookingIds` (every seat of the registration) set. Cancelling any seat with POST /v1/platform/bookings/{id}/cancel cancels the whole registration.\n","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/events/{id}/bookings","href":"/api-reference/events/register-a-customer-for-an-event","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Registers one customer at a live, bookable event, with any guests they bring - the registration the club’s own staff make. Every place is a seat on one of the event’s tickets, at the event’s time and club and the ticket’s price; the event’s capacity and each ticket’s apply. Identify the customer with \", _jsx(_components.code, {\n children: \"contactId\"\n }), \" (resolve it via GET /v1/platform/contacts) or with an inline \", _jsx(_components.code, {\n children: \"customer\"\n }), \" matched to a contact by email and created if new - exactly one of the two. A customer may register more than once, so registering them again books more places.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Places are \", _jsx(_components.code, {\n children: \"ticketId\"\n }), \" with a \", _jsx(_components.code, {\n children: \"quantity\"\n }), \" (\", _jsx(_components.code, {\n children: \"3\"\n }), \" is the customer and two guests), or \", _jsx(_components.code, {\n children: \"tickets\"\n }), \" across several ticket types; the customer’s own seat is the first place of the first ticket, and the guests’ seats carry no contact. A ticket is required for every place when the event sells tickets, which every bookable event does; read the ticket ids and what is left on each (\", _jsx(_components.code, {\n children: \"capacity - soldCount\"\n }), \") from GET /v1/platform/events/\", \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Payment works as on POST /v1/platform/bookings: \", _jsx(_components.code, {\n children: \"paid\"\n }), \" records the places as settled against a payment method named after your API key (no gateway call), with your \", _jsx(_components.code, {\n children: \"reference\"\n }), \" on each seat’s payment and your \", _jsx(_components.code, {\n children: \"fee\"\n }), \" shared over them; \", _jsx(_components.code, {\n children: \"unpaid\"\n }), \" leaves them outstanding. \", _jsx(_components.code, {\n children: \"amount\"\n }), \" is what the whole registration cost, shared over the seats in proportion to their ticket price. No membership ever covers an event, so an \", _jsx(_components.code, {\n children: \"unpaid\"\n }), \" registration with no \", _jsx(_components.code, {\n children: \"amount\"\n }), \" owes the ticket prices.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A draft or cancelled event (\", _jsx(_components.code, {\n children: \"EVENT_NOT_LIVE\"\n }), \"), one that takes no bookings (\", _jsx(_components.code, {\n children: \"EVENT_NOT_BOOKABLE\"\n }), \"), one that has ended (\", _jsx(_components.code, {\n children: \"BOOKING_ALREADY_ENDED\"\n }), \") and a ticket or event without room for every place are refused; nothing here overrides them. Returns the customer’s own seat, as POST /v1/platform/bookings returns a booking, with \", _jsx(_components.code, {\n children: \"eventId\"\n }), \", \", _jsx(_components.code, {\n children: \"eventTicketId\"\n }), \" and \", _jsx(_components.code, {\n children: \"seatBookingIds\"\n }), \" (every seat of the registration) set. Cancelling any seat with POST /v1/platform/bookings/\", \"/cancel cancels the whole registration.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Register a customer for an event","description":"Registers one customer at a live, bookable event, with any guests they bring - the registration the club's own staff make. Every place is a seat on one of the event's tickets, at the event's time and club and the ticket's price; the event's capacity and each ticket's apply. Identify the customer with `contactId` (resolve it via GET /v1/platform/contacts) or with an inline `customer` matched to a contact by email and created if new - exactly one of the two. A customer may register more than once, so registering them again books more places.\n\nPlaces are `ticketId` with a `quantity` (`3` is the customer and two guests), or `tickets` across several ticket types; the customer's own seat is the first place of the first ticket, and the guests' seats carry no contact. A ticket is required for every place when the event sells tickets, which every bookable event does; read the ticket ids and what is left on each (`capacity - soldCount`) from GET /v1/platform/events/{id}.\n\nPayment works as on POST /v1/platform/bookings: `paid` records the places as settled against a payment method named after your API key (no gateway call), with your `reference` on each seat's payment and your `fee` shared over them; `unpaid` leaves them outstanding. `amount` is what the whole registration cost, shared over the seats in proportion to their ticket price. No membership ever covers an event, so an `unpaid` registration with no `amount` owes the ticket prices.\n\nA draft or cancelled event (`EVENT_NOT_LIVE`), one that takes no bookings (`EVENT_NOT_BOOKABLE`), one that has ended (`BOOKING_ALREADY_ENDED`) and a ticket or event without room for every place are refused; nothing here overrides them. Returns the customer's own seat, as POST /v1/platform/bookings returns a booking, with `eventId`, `eventTicketId` and `seatBookingIds` (every seat of the registration) set. Cancelling any seat with POST /v1/platform/bookings/{id}/cancel cancels the whole registration.\n","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/events/{id}/bookings","href":"/api-reference/events/register-a-customer-for-an-event","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createEventBooking","summary":"Register a customer for an event","description":"Registers one customer at a live, bookable event, with any guests they bring - the registration the club's own staff make. Every place is a seat on one of the event's tickets, at the event's time and club and the ticket's price; the event's capacity and each ticket's apply. Identify the customer with `contactId` (resolve it via GET /v1/platform/contacts) or with an inline `customer` matched to a contact by email and created if new - exactly one of the two. A customer may register more than once, so registering them again books more places.\n\nPlaces are `ticketId` with a `quantity` (`3` is the customer and two guests), or `tickets` across several ticket types; the customer's own seat is the first place of the first ticket, and the guests' seats carry no contact. A ticket is required for every place when the event sells tickets, which every bookable event does; read the ticket ids and what is left on each (`capacity - soldCount`) from GET /v1/platform/events/{id}.\n\nPayment works as on POST /v1/platform/bookings: `paid` records the places as settled against a payment method named after your API key (no gateway call), with your `reference` on each seat's payment and your `fee` shared over them; `unpaid` leaves them outstanding. `amount` is what the whole registration cost, shared over the seats in proportion to their ticket price. No membership ever covers an event, so an `unpaid` registration with no `amount` owes the ticket prices.\n\nA draft or cancelled event (`EVENT_NOT_LIVE`), one that takes no bookings (`EVENT_NOT_BOOKABLE`), one that has ended (`BOOKING_ALREADY_ENDED`) and a ticket or event without room for every place are refused; nothing here overrides them. Returns the customer's own seat, as POST /v1/platform/bookings returns a booking, with `eventId`, `eventTicketId` and `seatBookingIds` (every seat of the registration) set. Cancelling any seat with POST /v1/platform/bookings/{id}/cancel cancels the whole registration.\n","tags":["Events"],"security":["730b241a-15ea-4fdc-8fd3-c8d879bbdb85"],"parameters":["d3bb8716-8a83-4854-b21e-0d6a321e1937","93ccd735-104e-4d68-84e7-5ebc61b0ca37"],"requestBody":"1ddaa645-3d29-471a-b0cb-9eb582d8572e","responses":{"201":"d4ad9515-d9c4-4d74-99e7-aa736f1758c8","400":"8a4f85c7-cb77-48b7-89eb-7c5dd0e2c1df","401":"0d8a3eef-99e8-4043-8713-c47cd45683ee","403":"f4885013-bdde-48f3-9eda-637cc506f219","404":"e129fed7-2255-4dc5-a513-a01de8eceb5f","409":"38c2f838-9578-4a97-99a1-da9e5b39ec35","429":"a389d415-bd4a-4bd0-bfa0-c76e5a2d06f2"},"method":"post","type":"path","servers":["59a12046-ada3-4522-b107-8b0d30be3bd6"],"path":"/v1/platform/events/{id}/bookings","baseUrlOptions":["https://api.1club.ai"],"title":"Register a customer for an event","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"d3bb8716-8a83-4854-b21e-0d6a321e1937":{"in":"path","name":"id","required":true,"schema":{"type":"integer","isRequired":true,"description":"1club event id","uniqueKey":"","typeLabel":"integer"},"description":"1club event id"},"93ccd735-104e-4d68-84e7-5ebc61b0ca37":{"in":"header","name":"Idempotency-Key","schema":{"type":"string","maxLength":255,"description":"Retry-safe key; a repeat of the same request replays the first response","uniqueKey":"","typeLabel":"string"},"description":"Retry-safe key; a repeat of the same request replays the first response"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["payment"],"properties":{"payment":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["paid","unpaid"],"isRequired":true,"uniqueKey":"payment.status","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","maximum":1000000,"description":"What the whole registration cost, in the club's currency, before any fee you kept; shared over the seats in proportion to their ticket price. Defaults to the ticket prices. Stated the way the club states its prices: where the club's tax rate is exclusive, tax is added on top.\n","uniqueKey":"payment.amount","typeLabel":"number"},"reference":{"type":"string","maxLength":128,"description":"Your own id for the payment you collected. Requires `status` paid.","uniqueKey":"payment.reference","typeLabel":"string"},"fee":{"type":"number","maximum":1000000,"description":"What you kept out of `amount` - your commission. Requires `status` paid and an explicit `amount` it cannot exceed.\n","uniqueKey":"payment.fee","typeLabel":"number"}},"isRequired":true,"uniqueKey":"payment","typeLabel":"object"},"ticketId":{"type":"integer","description":"The ticket the places are sold on, from the event's `tickets`. Required when the event sells tickets, unless `tickets` is sent.","uniqueKey":"ticketId","typeLabel":"integer"},"quantity":{"type":"integer","minimum":1,"maximum":50,"default":1,"description":"How many places on `ticketId`, the customer's own included.","uniqueKey":"quantity","typeLabel":"integer"},"tickets":{"type":"array","minItems":1,"maxItems":20,"description":"Places across several ticket types, instead of `ticketId` and `quantity`. Each ticket once; at most 50 places in all. The customer's own seat is the first place of the first entry.\n","items":{"type":"object","required":["ticketId","quantity"],"properties":{"ticketId":{"type":"integer","isRequired":true,"uniqueKey":"tickets.items.[INDEX].ticketId","typeLabel":"integer"},"quantity":{"type":"integer","minimum":1,"maximum":50,"isRequired":true,"uniqueKey":"tickets.items.[INDEX].quantity","typeLabel":"integer"}},"uniqueKey":"tickets.items.[INDEX]","typeLabel":"object"},"uniqueKey":"tickets","typeLabel":"object[]"},"contactId":{"type":"integer","description":"Existing contact to book for (from GET /v1/platform/contacts). Mutually exclusive with `customer`.","uniqueKey":"contactId","typeLabel":"integer"},"customer":{"type":"object","description":"Inline find-or-create by email. Mutually exclusive with `contactId`.","required":["email"],"properties":{"email":{"type":"string","format":"email","isRequired":true,"uniqueKey":"customer.email","typeLabel":"string\u003cemail>"},"firstName":{"type":"string","uniqueKey":"customer.firstName","typeLabel":"string"},"lastName":{"type":"string","uniqueKey":"customer.lastName","typeLabel":"string"},"phone":{"type":"string","uniqueKey":"customer.phone","typeLabel":"string"}},"uniqueKey":"customer","typeLabel":"object"},"notes":{"type":"string","maxLength":2000,"uniqueKey":"notes","typeLabel":"string"},"notifyCustomer":{"type":"boolean","description":"Tell the customer they are booked - email plus the in-app, WhatsApp and SMS notification. Off by default for an API key, on by default over an OAuth connection, as on POST /v1/platform/bookings.\n","uniqueKey":"notifyCustomer","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"payment":{"amount":123,"reference":"\u003cstring>","fee":123},"ticketId":123,"quantity":1,"tickets":[{"ticketId":123,"quantity":25}],"contactId":123,"notes":"\u003cstring>","notifyCustomer":true}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"d4ad9515-d9c4-4d74-99e7-aa736f1758c8":{"description":"Booking created","content":{"application/json":{"schema":{"type":"object","description":"A booking created through the platform API. Recorded with a booking transaction so it counts for revenue, marked paid (settled against a payment method named after the caller's API key, so the club can reconcile what each partner collected) or unpaid (outstanding) per the caller. Collection stays with the caller; what it collected and what it gave back on cancellation are reported in `payment`.","properties":{"bookingId":{"type":"integer","description":"1club booking id","uniqueKey":"bookingId","typeLabel":"integer"},"bookingUuid":{"type":"string","format":"uuid","description":"Stable unguessable identifier. Prefer this over `bookingId` when storing a reference.","uniqueKey":"bookingUuid","typeLabel":"string\u003cuuid>"},"status":{"type":"string","description":"Booking status (e.g. confirmed, cancelled)","uniqueKey":"status","typeLabel":"string"},"areaId":{"oneOf":[{"type":"integer","description":"Area id","uniqueKey":"areaId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Area id","uniqueKey":"areaId.oneOf.1","typeLabel":"null"}],"uniqueKey":"areaId","typeLabel":"integer | null"},"classId":{"oneOf":[{"type":"integer","description":"The class occurrence this booking attends, when it is a class booking. Every attendee holds their own booking row against the same `classId`, and `classes` rows are per-occurrence - so this is what tells two classes running in the same hour apart. Join it against GET /v1/platform/classes, or read the staff roster with GET /v1/platform/classes/{id}/bookings.","uniqueKey":"classId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The class occurrence this booking attends, when it is a class booking. Every attendee holds their own booking row against the same `classId`, and `classes` rows are per-occurrence - so this is what tells two classes running in the same hour apart. Join it against GET /v1/platform/classes, or read the staff roster with GET /v1/platform/classes/{id}/bookings.","uniqueKey":"classId.oneOf.1","typeLabel":"null"}],"uniqueKey":"classId","typeLabel":"integer | null"},"eventId":{"oneOf":[{"type":"integer","description":"The event this booking attends, when it is an event booking. Read the attendee list with GET /v1/platform/events/{id}/bookings.","uniqueKey":"eventId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The event this booking attends, when it is an event booking. Read the attendee list with GET /v1/platform/events/{id}/bookings.","uniqueKey":"eventId.oneOf.1","typeLabel":"null"}],"uniqueKey":"eventId","typeLabel":"integer | null"},"eventTicketId":{"oneOf":[{"type":"integer","description":"The event ticket the seat was sold on, when the event sells tickets","uniqueKey":"eventTicketId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The event ticket the seat was sold on, when the event sells tickets","uniqueKey":"eventTicketId.oneOf.1","typeLabel":"null"}],"uniqueKey":"eventTicketId","typeLabel":"integer | null"},"orderId":{"oneOf":[{"type":"integer","description":"The order the booking was sold on: one per sale, holding the customer's seat and any guests'. Every class enrolment and event registration made through this API has one; null for a booking sold on none (a court or coach booked through POST /v1/platform/bookings).","uniqueKey":"orderId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The order the booking was sold on: one per sale, holding the customer's seat and any guests'. Every class enrolment and event registration made through this API has one; null for a booking sold on none (a court or coach booked through POST /v1/platform/bookings).","uniqueKey":"orderId.oneOf.1","typeLabel":"null"}],"uniqueKey":"orderId","typeLabel":"integer | null"},"seatBookingIds":{"type":"array","items":{"type":"integer","uniqueKey":"seatBookingIds.items.[INDEX]","typeLabel":"integer"},"description":"Every seat the sale holds, the customer's own first. Only on the answer to a seat sale (POST /v1/platform/classes/{id}/bookings, POST /v1/platform/events/{id}/bookings); the guests' seats carry no contact, and the class's or the event's roster lists them all.","uniqueKey":"seatBookingIds","typeLabel":"integer[]"},"maxPlayers":{"oneOf":[{"type":"integer","description":"How many players the booking takes, the organizer included, when it differs from the area type's `defaultMaxPlayers`: `2` on a court booked for singles (area types with `allowsSingles`). `null` means the area type's own limit. Adding a player past it is refused.","uniqueKey":"maxPlayers.oneOf.0","typeLabel":"integer"},{"type":"null","description":"How many players the booking takes, the organizer included, when it differs from the area type's `defaultMaxPlayers`: `2` on a court booked for singles (area types with `allowsSingles`). `null` means the area type's own limit. Adding a player past it is refused.","uniqueKey":"maxPlayers.oneOf.1","typeLabel":"null"}],"uniqueKey":"maxPlayers","typeLabel":"integer | null"},"instructorId":{"oneOf":[{"type":"integer","description":"Instructor leading the session, when one is attached","uniqueKey":"instructorId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Instructor leading the session, when one is attached","uniqueKey":"instructorId.oneOf.1","typeLabel":"null"}],"uniqueKey":"instructorId","typeLabel":"integer | null"},"contactId":{"oneOf":[{"type":"integer","description":"Contact the booking is for","uniqueKey":"contactId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Contact the booking is for","uniqueKey":"contactId.oneOf.1","typeLabel":"null"}],"uniqueKey":"contactId","typeLabel":"integer | null"},"startTime":{"type":"string","format":"date-time","uniqueKey":"startTime","typeLabel":"string\u003cdate-time>"},"endTime":{"type":"string","format":"date-time","uniqueKey":"endTime","typeLabel":"string\u003cdate-time>"},"customer":{"oneOf":[{"type":"object","description":"The booking's customer, identical to what GET /v1/platform/contacts/{id} returns. Present only when the request passes `include=customer`, which additionally requires the `contacts:read` scope; `null` when the booking has no contact. Use it to import a window of bookings without a contact lookup per row.","properties":{"id":{"type":"integer","uniqueKey":"customer.oneOf.0.id","typeLabel":"integer"},"uuid":{"type":"string","format":"uuid","description":"Stable unguessable identifier. Prefer this over `id` when storing a reference.","uniqueKey":"customer.oneOf.0.uuid","typeLabel":"string\u003cuuid>"},"name":{"type":"string","uniqueKey":"customer.oneOf.0.name","typeLabel":"string"},"firstName":{"type":"string","uniqueKey":"customer.oneOf.0.firstName","typeLabel":"string"},"lastName":{"oneOf":[{"type":"string","uniqueKey":"customer.oneOf.0.lastName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.oneOf.0.lastName.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.lastName","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","uniqueKey":"customer.oneOf.0.email.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.oneOf.0.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.email","typeLabel":"string | null"},"phone":{"oneOf":[{"type":"string","uniqueKey":"customer.oneOf.0.phone.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.oneOf.0.phone.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.phone","typeLabel":"string | null"},"type":{"oneOf":[{"type":"string","description":"Derived contact type (e.g. contact, member, lead). `archived` marks a retired contact — hidden from the list and from search, but still readable by id.","uniqueKey":"customer.oneOf.0.type.oneOf.0","typeLabel":"string"},{"type":"null","description":"Derived contact type (e.g. contact, member, lead). `archived` marks a retired contact — hidden from the list and from search, but still readable by id.","uniqueKey":"customer.oneOf.0.type.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.type","typeLabel":"string | null"},"pipelineStageId":{"oneOf":[{"type":"integer","description":"The sales pipeline stage the contact is in, or null when they are not in the pipeline.","uniqueKey":"customer.oneOf.0.pipelineStageId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The sales pipeline stage the contact is in, or null when they are not in the pipeline.","uniqueKey":"customer.oneOf.0.pipelineStageId.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.pipelineStageId","typeLabel":"integer | null"},"sourceId":{"oneOf":[{"type":"integer","description":"Where the contact came from.","uniqueKey":"customer.oneOf.0.sourceId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Where the contact came from.","uniqueKey":"customer.oneOf.0.sourceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.sourceId","typeLabel":"integer | null"},"assignedToId":{"oneOf":[{"type":"integer","description":"The staff member (organization user id) following the contact up.","uniqueKey":"customer.oneOf.0.assignedToId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The staff member (organization user id) following the contact up.","uniqueKey":"customer.oneOf.0.assignedToId.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.oneOf.0.assignedToId","typeLabel":"integer | null"},"createdAt":{"type":"string","format":"date-time","uniqueKey":"customer.oneOf.0.createdAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"customer.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"customer.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer","typeLabel":"object | null"},"money":{"type":"object","description":"What the booking costs and how it was paid. Present only with `include=money`, which additionally requires the `transactions:read` scope. `billed` is always `paid + outstanding`, on the same basis as the admin's Booking audit: tax-inclusive, net of refunds, so a cancelled booking bills only the Cancellation Charge it kept.","properties":{"billed":{"type":"number","uniqueKey":"money.billed","typeLabel":"number"},"billedExTax":{"type":"number","uniqueKey":"money.billedExTax","typeLabel":"number"},"paid":{"type":"number","description":"Money the club kept: collected, net of refunds.","uniqueKey":"money.paid","typeLabel":"number"},"outstanding":{"type":"number","description":"Still owed on the booking. A closed charge owes nothing.","uniqueKey":"money.outstanding","typeLabel":"number"},"paymentState":{"type":"string","description":"paid, partial, unpaid, refunded, covered or free.","uniqueKey":"money.paymentState","typeLabel":"string"},"paymentStatus":{"oneOf":[{"type":"string","description":"The charges' own payment statuses, `/`-joined.","uniqueKey":"money.paymentStatus.oneOf.0","typeLabel":"string"},{"type":"null","description":"The charges' own payment statuses, `/`-joined.","uniqueKey":"money.paymentStatus.oneOf.1","typeLabel":"null"}],"uniqueKey":"money.paymentStatus","typeLabel":"string | null"},"charges":{"type":"array","items":{"type":"object","properties":{"transactionId":{"type":"integer","uniqueKey":"money.charges.items.[INDEX].transactionId","typeLabel":"integer"},"transactionType":{"oneOf":[{"type":"string","uniqueKey":"money.charges.items.[INDEX].transactionType.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"money.charges.items.[INDEX].transactionType.oneOf.1","typeLabel":"null"}],"uniqueKey":"money.charges.items.[INDEX].transactionType","typeLabel":"string | null"},"payerContactId":{"oneOf":[{"type":"integer","description":"Who the charge is on: the organizer, or a player paying their own share.","uniqueKey":"money.charges.items.[INDEX].payerContactId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Who the charge is on: the organizer, or a player paying their own share.","uniqueKey":"money.charges.items.[INDEX].payerContactId.oneOf.1","typeLabel":"null"}],"uniqueKey":"money.charges.items.[INDEX].payerContactId","typeLabel":"integer | null"},"date":{"type":"string","format":"date-time","uniqueKey":"money.charges.items.[INDEX].date","typeLabel":"string\u003cdate-time>"},"paymentStatus":{"type":"string","uniqueKey":"money.charges.items.[INDEX].paymentStatus","typeLabel":"string"},"amount":{"type":"number","description":"What the charge bills, after any cancellation credit against it.","uniqueKey":"money.charges.items.[INDEX].amount","typeLabel":"number"},"paidAmount":{"type":"number","uniqueKey":"money.charges.items.[INDEX].paidAmount","typeLabel":"number"},"refundedAmount":{"type":"number","description":"Returned from its payments by a refund.","uniqueKey":"money.charges.items.[INDEX].refundedAmount","typeLabel":"number"},"outstandingAmount":{"type":"number","uniqueKey":"money.charges.items.[INDEX].outstandingAmount","typeLabel":"number"},"invoiceIds":{"type":"array","items":{"type":"integer","uniqueKey":"money.charges.items.[INDEX].invoiceIds.items.[INDEX]","typeLabel":"integer"},"uniqueKey":"money.charges.items.[INDEX].invoiceIds","typeLabel":"integer[]"},"orderId":{"oneOf":[{"type":"integer","uniqueKey":"money.charges.items.[INDEX].orderId.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"money.charges.items.[INDEX].orderId.oneOf.1","typeLabel":"null"}],"uniqueKey":"money.charges.items.[INDEX].orderId","typeLabel":"integer | null"}},"uniqueKey":"money.charges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"money.charges","typeLabel":"object[]"},"credits":{"type":"array","description":"Cancellation credits: what a cancellation took off a charge.","items":{"type":"object","properties":{"transactionId":{"type":"integer","uniqueKey":"money.credits.items.[INDEX].transactionId","typeLabel":"integer"},"chargeTransactionId":{"oneOf":[{"type":"integer","uniqueKey":"money.credits.items.[INDEX].chargeTransactionId.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"money.credits.items.[INDEX].chargeTransactionId.oneOf.1","typeLabel":"null"}],"uniqueKey":"money.credits.items.[INDEX].chargeTransactionId","typeLabel":"integer | null"},"amount":{"type":"number","uniqueKey":"money.credits.items.[INDEX].amount","typeLabel":"number"},"paymentStatus":{"type":"string","uniqueKey":"money.credits.items.[INDEX].paymentStatus","typeLabel":"string"},"date":{"type":"string","format":"date-time","uniqueKey":"money.credits.items.[INDEX].date","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"money.credits.items.[INDEX]","typeLabel":"object"},"uniqueKey":"money.credits","typeLabel":"object[]"},"payments":{"type":"array","items":{"type":"object","properties":{"paymentId":{"type":"integer","uniqueKey":"money.payments.items.[INDEX].paymentId","typeLabel":"integer"},"amount":{"type":"number","uniqueKey":"money.payments.items.[INDEX].amount","typeLabel":"number"},"status":{"type":"string","uniqueKey":"money.payments.items.[INDEX].status","typeLabel":"string"},"method":{"type":"string","uniqueKey":"money.payments.items.[INDEX].method","typeLabel":"string"},"source":{"oneOf":[{"type":"string","uniqueKey":"money.payments.items.[INDEX].source.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"money.payments.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"money.payments.items.[INDEX].source","typeLabel":"string | null"},"reference":{"oneOf":[{"type":"string","uniqueKey":"money.payments.items.[INDEX].reference.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"money.payments.items.[INDEX].reference.oneOf.1","typeLabel":"null"}],"uniqueKey":"money.payments.items.[INDEX].reference","typeLabel":"string | null"},"paidAt":{"type":"string","format":"date-time","uniqueKey":"money.payments.items.[INDEX].paidAt","typeLabel":"string\u003cdate-time>"},"transactionIds":{"type":"array","items":{"type":"integer","uniqueKey":"money.payments.items.[INDEX].transactionIds.items.[INDEX]","typeLabel":"integer"},"uniqueKey":"money.payments.items.[INDEX].transactionIds","typeLabel":"integer[]"}},"uniqueKey":"money.payments.items.[INDEX]","typeLabel":"object"},"uniqueKey":"money.payments","typeLabel":"object[]"},"refunds":{"type":"array","items":{"type":"object","properties":{"refundId":{"type":"integer","uniqueKey":"money.refunds.items.[INDEX].refundId","typeLabel":"integer"},"transactionId":{"oneOf":[{"type":"integer","uniqueKey":"money.refunds.items.[INDEX].transactionId.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"money.refunds.items.[INDEX].transactionId.oneOf.1","typeLabel":"null"}],"uniqueKey":"money.refunds.items.[INDEX].transactionId","typeLabel":"integer | null"},"paymentId":{"type":"integer","uniqueKey":"money.refunds.items.[INDEX].paymentId","typeLabel":"integer"},"amount":{"type":"number","uniqueKey":"money.refunds.items.[INDEX].amount","typeLabel":"number"},"destination":{"type":"string","enum":["stripe","wallet","cash","manual"],"uniqueKey":"money.refunds.items.[INDEX].destination","typeLabel":"enum\u003cstring>"},"reason":{"oneOf":[{"type":"string","uniqueKey":"money.refunds.items.[INDEX].reason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"money.refunds.items.[INDEX].reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"money.refunds.items.[INDEX].reason","typeLabel":"string | null"},"refundedAt":{"type":"string","format":"date-time","uniqueKey":"money.refunds.items.[INDEX].refundedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"money.refunds.items.[INDEX]","typeLabel":"object"},"uniqueKey":"money.refunds","typeLabel":"object[]"}},"uniqueKey":"money","typeLabel":"object"},"cancellation":{"type":"object","description":"The cancellation terms stamped on the booking and how it was cancelled. Present only with `include=cancellation`.","properties":{"terms":{"oneOf":[{"type":"object","description":"The terms the customer accepted with the booking - not the club's policy today, which may since have changed. `null` for an event ticket, whose event keeps its own terms, and for a booking accepted before terms were stamped.","properties":{"acceptedAt":{"type":"string","format":"date-time","uniqueKey":"cancellation.terms.oneOf.0.acceptedAt","typeLabel":"string\u003cdate-time>"},"rules":{"type":"array","items":{"type":"object","properties":{"hoursInAdvance":{"type":"number","uniqueKey":"cancellation.terms.oneOf.0.rules.items.[INDEX].hoursInAdvance","typeLabel":"number"},"refundPercentage":{"type":"number","uniqueKey":"cancellation.terms.oneOf.0.rules.items.[INDEX].refundPercentage","typeLabel":"number"},"description":{"type":"string","uniqueKey":"cancellation.terms.oneOf.0.rules.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"cancellation.terms.oneOf.0.rules.items.[INDEX]","typeLabel":"object"},"uniqueKey":"cancellation.terms.oneOf.0.rules","typeLabel":"object[]"},"deadlines":{"type":"array","description":"Every band that refunds something, as the moment to cancel by, widest notice first.","items":{"type":"object","properties":{"until":{"type":"string","format":"date-time","uniqueKey":"cancellation.terms.oneOf.0.deadlines.items.[INDEX].until","typeLabel":"string\u003cdate-time>"},"refundPercentage":{"type":"number","uniqueKey":"cancellation.terms.oneOf.0.deadlines.items.[INDEX].refundPercentage","typeLabel":"number"}},"uniqueKey":"cancellation.terms.oneOf.0.deadlines.items.[INDEX]","typeLabel":"object"},"uniqueKey":"cancellation.terms.oneOf.0.deadlines","typeLabel":"object[]"},"freeCancellationUntil":{"oneOf":[{"type":"string","format":"date-time","description":"The last moment a cancellation refunds in full; `null` when no band does.","uniqueKey":"cancellation.terms.oneOf.0.freeCancellationUntil.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"The last moment a cancellation refunds in full; `null` when no band does.","uniqueKey":"cancellation.terms.oneOf.0.freeCancellationUntil.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancellation.terms.oneOf.0.freeCancellationUntil","typeLabel":"string\u003cdate-time> | null"},"fullyCovered":{"type":"boolean","description":"A membership or pass covered the whole booking.","uniqueKey":"cancellation.terms.oneOf.0.fullyCovered","typeLabel":"boolean"},"collectsFromWallet":{"type":"boolean","description":"The Cancellation Charge is taken from the Wallet.","uniqueKey":"cancellation.terms.oneOf.0.collectsFromWallet","typeLabel":"boolean"},"waiver":{"oneOf":[{"type":"object","properties":{"at":{"type":"string","format":"date-time","uniqueKey":"cancellation.terms.oneOf.0.waiver.oneOf.0.at","typeLabel":"string\u003cdate-time>"},"byUserId":{"oneOf":[{"type":"integer","uniqueKey":"cancellation.terms.oneOf.0.waiver.oneOf.0.byUserId.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"cancellation.terms.oneOf.0.waiver.oneOf.0.byUserId.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancellation.terms.oneOf.0.waiver.oneOf.0.byUserId","typeLabel":"integer | null"},"reason":{"type":"string","uniqueKey":"cancellation.terms.oneOf.0.waiver.oneOf.0.reason","typeLabel":"string"}},"uniqueKey":"cancellation.terms.oneOf.0.waiver.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"at":{"type":"string","format":"date-time"},"byUserId":{"oneOf":[{"type":"integer"},{"type":"null"}]},"reason":{"type":"string"}},"uniqueKey":"cancellation.terms.oneOf.0.waiver.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancellation.terms.oneOf.0.waiver","typeLabel":"object | null"}},"uniqueKey":"cancellation.terms.oneOf.0","typeLabel":"object"},{"type":"null","description":"The terms the customer accepted with the booking - not the club's policy today, which may since have changed. `null` for an event ticket, whose event keeps its own terms, and for a booking accepted before terms were stamped.","properties":{"acceptedAt":{"type":"string","format":"date-time"},"rules":{"type":"array","items":{"type":"object","properties":{"hoursInAdvance":{"type":"number"},"refundPercentage":{"type":"number"},"description":{"type":"string"}}}},"deadlines":{"type":"array","description":"Every band that refunds something, as the moment to cancel by, widest notice first.","items":{"type":"object","properties":{"until":{"type":"string","format":"date-time"},"refundPercentage":{"type":"number"}}}},"freeCancellationUntil":{"oneOf":[{"type":"string","format":"date-time","description":"The last moment a cancellation refunds in full; `null` when no band does."},{"type":"null","format":"date-time","description":"The last moment a cancellation refunds in full; `null` when no band does."}]},"fullyCovered":{"type":"boolean","description":"A membership or pass covered the whole booking."},"collectsFromWallet":{"type":"boolean","description":"The Cancellation Charge is taken from the Wallet."},"waiver":{"oneOf":[{"type":"object","properties":{"at":{"type":"string","format":"date-time"},"byUserId":{"oneOf":[{"type":"integer"},{"type":"null"}]},"reason":{"type":"string"}}},{"type":"null","properties":{"at":{"type":"string","format":"date-time"},"byUserId":{"oneOf":[{"type":"integer"},{"type":"null"}]},"reason":{"type":"string"}}}]}},"uniqueKey":"cancellation.terms.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancellation.terms","typeLabel":"object | null"},"cancelled":{"oneOf":[{"type":"object","description":"`null` while the booking is not cancelled.","properties":{"at":{"type":"string","format":"date-time","uniqueKey":"cancellation.cancelled.oneOf.0.at","typeLabel":"string\u003cdate-time>"},"by":{"oneOf":[{"type":"object","properties":{"userId":{"type":"integer","uniqueKey":"cancellation.cancelled.oneOf.0.by.oneOf.0.userId","typeLabel":"integer"},"name":{"type":"string","uniqueKey":"cancellation.cancelled.oneOf.0.by.oneOf.0.name","typeLabel":"string"}},"uniqueKey":"cancellation.cancelled.oneOf.0.by.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"userId":{"type":"integer"},"name":{"type":"string"}},"uniqueKey":"cancellation.cancelled.oneOf.0.by.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancellation.cancelled.oneOf.0.by","typeLabel":"object | null"},"reason":{"oneOf":[{"type":"string","uniqueKey":"cancellation.cancelled.oneOf.0.reason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"cancellation.cancelled.oneOf.0.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancellation.cancelled.oneOf.0.reason","typeLabel":"string | null"},"noticeHours":{"type":"number","description":"Hours between the cancellation and the start; negative when it came after the start.","uniqueKey":"cancellation.cancelled.oneOf.0.noticeHours","typeLabel":"number"},"refundPercentage":{"oneOf":[{"type":"number","uniqueKey":"cancellation.cancelled.oneOf.0.refundPercentage.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"cancellation.cancelled.oneOf.0.refundPercentage.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancellation.cancelled.oneOf.0.refundPercentage","typeLabel":"number | null"},"refundAmount":{"oneOf":[{"type":"number","uniqueKey":"cancellation.cancelled.oneOf.0.refundAmount.oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"cancellation.cancelled.oneOf.0.refundAmount.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancellation.cancelled.oneOf.0.refundAmount","typeLabel":"number | null"},"policyWaived":{"type":"boolean","uniqueKey":"cancellation.cancelled.oneOf.0.policyWaived","typeLabel":"boolean"},"notes":{"oneOf":[{"type":"string","uniqueKey":"cancellation.cancelled.oneOf.0.notes.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"cancellation.cancelled.oneOf.0.notes.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancellation.cancelled.oneOf.0.notes","typeLabel":"string | null"}},"uniqueKey":"cancellation.cancelled.oneOf.0","typeLabel":"object"},{"type":"null","description":"`null` while the booking is not cancelled.","properties":{"at":{"type":"string","format":"date-time"},"by":{"oneOf":[{"type":"object","properties":{"userId":{"type":"integer"},"name":{"type":"string"}}},{"type":"null","properties":{"userId":{"type":"integer"},"name":{"type":"string"}}}]},"reason":{"oneOf":[{"type":"string"},{"type":"null"}]},"noticeHours":{"type":"number","description":"Hours between the cancellation and the start; negative when it came after the start."},"refundPercentage":{"oneOf":[{"type":"number"},{"type":"null"}]},"refundAmount":{"oneOf":[{"type":"number"},{"type":"null"}]},"policyWaived":{"type":"boolean"},"notes":{"oneOf":[{"type":"string"},{"type":"null"}]}},"uniqueKey":"cancellation.cancelled.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancellation.cancelled","typeLabel":"object | null"}},"uniqueKey":"cancellation","typeLabel":"object"},"payment":{"type":"object","properties":{"status":{"type":"string","enum":["paid","unpaid","no_charge"],"description":"`no_charge` means there is nothing to collect: either nothing was ever owed (a free area, an amount of 0) or an entitlement covers it - a membership or external program the attendee already holds, which is why a covered booking can carry a price and still owe nothing. `paid` counts every financially closed transaction status (`paid`, `settled`, `refunded`), and every charge type, not only the one this API records.","uniqueKey":"payment.status","typeLabel":"enum\u003cstring>"},"amount":{"oneOf":[{"type":"number","description":"The booking's recorded price in the organization's currency; `status` is what says whether anything was collectable. Where the price is 0 but a real charge exists - an external program's per-visit fee lives entirely in its transaction - the ledger total is reported instead.","uniqueKey":"payment.amount.oneOf.0","typeLabel":"number"},{"type":"null","description":"The booking's recorded price in the organization's currency; `status` is what says whether anything was collectable. Where the price is 0 but a real charge exists - an external program's per-visit fee lives entirely in its transaction - the ledger total is reported instead.","uniqueKey":"payment.amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"payment.amount","typeLabel":"number | null"},"paidAmount":{"type":"number","description":"What has been collected on the booking, gross, before any refund. `0` when nothing has.","uniqueKey":"payment.paidAmount","typeLabel":"number"},"refundedAmount":{"type":"number","description":"What has been returned to the customer, across every refund recorded. `paidAmount - refundedAmount` is what the club kept.","uniqueKey":"payment.refundedAmount","typeLabel":"number"},"reference":{"oneOf":[{"type":"string","description":"The collecting partner's own id for the payment, when one reported it through this API (`payment.reference`); null for money 1club collected itself.","uniqueKey":"payment.reference.oneOf.0","typeLabel":"string"},{"type":"null","description":"The collecting partner's own id for the payment, when one reported it through this API (`payment.reference`); null for money 1club collected itself.","uniqueKey":"payment.reference.oneOf.1","typeLabel":"null"}],"uniqueKey":"payment.reference","typeLabel":"string | null"},"fee":{"oneOf":[{"type":"number","description":"What the collecting partner kept out of the amount, when it reported one (`payment.fee`).","uniqueKey":"payment.fee.oneOf.0","typeLabel":"number"},{"type":"null","description":"What the collecting partner kept out of the amount, when it reported one (`payment.fee`).","uniqueKey":"payment.fee.oneOf.1","typeLabel":"null"}],"uniqueKey":"payment.fee","typeLabel":"number | null"}},"uniqueKey":"payment","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"bookingId":123,"bookingUuid":"3c90c3cc-0d44-4b50-8888-8dd25736052a","status":"\u003cstring>","areaId":123,"classId":123,"eventId":123,"eventTicketId":123,"orderId":123,"seatBookingIds":[123],"maxPlayers":123,"instructorId":123,"contactId":123,"startTime":"2023-11-07T05:31:56Z","endTime":"2023-11-07T05:31:56Z","customer":{"id":123,"uuid":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","firstName":"\u003cstring>","lastName":"\u003cstring>","email":"\u003cstring>","phone":"\u003cstring>","type":"\u003cstring>","pipelineStageId":123,"sourceId":123,"assignedToId":123,"createdAt":"2023-11-07T05:31:56Z"},"money":{"billed":123,"billedExTax":123,"paid":123,"outstanding":123,"paymentState":"\u003cstring>","paymentStatus":"\u003cstring>","charges":[{"transactionId":123,"transactionType":"\u003cstring>","payerContactId":123,"date":"2023-11-07T05:31:56Z","paymentStatus":"\u003cstring>","amount":123,"paidAmount":123,"refundedAmount":123,"outstandingAmount":123,"invoiceIds":[123],"orderId":123}],"credits":[{"transactionId":123,"chargeTransactionId":123,"amount":123,"paymentStatus":"\u003cstring>","date":"2023-11-07T05:31:56Z"}],"payments":[{"paymentId":123,"amount":123,"status":"\u003cstring>","method":"\u003cstring>","source":"\u003cstring>","reference":"\u003cstring>","paidAt":"2023-11-07T05:31:56Z","transactionIds":[123]}],"refunds":[{"refundId":123,"transactionId":123,"paymentId":123,"amount":123,"destination":"stripe","reason":"\u003cstring>","refundedAt":"2023-11-07T05:31:56Z"}]},"cancellation":{"terms":{"acceptedAt":"2023-11-07T05:31:56Z","rules":[{"hoursInAdvance":123,"refundPercentage":123,"description":"\u003cstring>"}],"deadlines":[{"until":"2023-11-07T05:31:56Z","refundPercentage":123}],"freeCancellationUntil":"2023-11-07T05:31:56Z","fullyCovered":true,"collectsFromWallet":true,"waiver":{"at":"2023-11-07T05:31:56Z","byUserId":123,"reason":"\u003cstring>"}},"cancelled":{"at":"2023-11-07T05:31:56Z","by":{"userId":123,"name":"\u003cstring>"},"reason":"\u003cstring>","noticeHours":123,"refundPercentage":123,"refundAmount":123,"policyWaived":true,"notes":"\u003cstring>"}},"payment":{"status":"paid","amount":123,"paidAmount":123,"refundedAmount":123,"reference":"\u003cstring>","fee":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"8a4f85c7-cb77-48b7-89eb-7c5dd0e2c1df":{"description":"Invalid request; the event is not live (`EVENT_NOT_LIVE`), takes no bookings (`EVENT_NOT_BOOKABLE`) or has ended (`BOOKING_ALREADY_ENDED`); the ticket is missing (`EVENT_TICKET_REQUIRED`) or not one of the event's (`EVENT_TICKET_NOT_ON_EVENT`); or the contact cannot be booked.\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"A stable, machine-readable reason, when the error has one (e.g. `CONTACT_EXISTS`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Structured values behind the error. A 409 naming an existing record carries its id here, e.g. `contactId`.","uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"0d8a3eef-99e8-4043-8713-c47cd45683ee":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"A stable, machine-readable reason, when the error has one (e.g. `CONTACT_EXISTS`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Structured values behind the error. A 409 naming an existing record carries its id here, e.g. `contactId`.","uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"f4885013-bdde-48f3-9eda-637cc506f219":{"description":"API key is missing the required `bookings:write` scope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"A stable, machine-readable reason, when the error has one (e.g. `CONTACT_EXISTS`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Structured values behind the error. A 409 naming an existing record carries its id here, e.g. `contactId`.","uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"e129fed7-2255-4dc5-a513-a01de8eceb5f":{"description":"The requested resource does not exist in this organization","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"A stable, machine-readable reason, when the error has one (e.g. `CONTACT_EXISTS`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Structured values behind the error. A 409 naming an existing record carries its id here, e.g. `contactId`.","uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"38c2f838-9578-4a97-99a1-da9e5b39ec35":{"description":"A ticket does not have room for its places (`EVENT_TICKET_SOLD_OUT`), or the event does not (`EVENT_FULL`)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"A stable, machine-readable reason, when the error has one (e.g. `CONTACT_EXISTS`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Structured values behind the error. A 409 naming an existing record carries its id here, e.g. `contactId`.","uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"a389d415-bd4a-4bd0-bfa0-c76e5a2d06f2":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"A stable, machine-readable reason, when the error has one (e.g. `CONTACT_EXISTS`).","uniqueKey":"code","typeLabel":"string"},"details":{"type":"object","additionalProperties":true,"description":"Structured values behind the error. A 409 naming an existing record carries its id here, e.g. `contactId`.","uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"730b241a-15ea-4fdc-8fd3-c8d879bbdb85":{"customerApiAuth":{"type":"http","scheme":"bearer","description":"Organization-scoped bearer credential: a customer API key (1club_sk_live_...) or an MCP OAuth access token.","scopes":[],"schemeName":"customerApiAuth"}}},"servers":{"59a12046-ada3-4522-b107-8b0d30be3bd6":{"url":"https://api.1club.ai","description":"Production API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Organization-scoped bearer credential: a customer API key (1club_sk_live_...) or an MCP OAuth access token.","scopes":[],"schemeName":"customerApiAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Organization-scoped bearer credential: a customer API key (1club_sk_live_...) or an MCP OAuth access token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"customerApiAuth","name":"Authorization"}],"title":"customerApiAuth"}]},"originalFileLocation":"openapi-platform.json"},"subdomain":"1club","siteName":"1club Help","title":"Register a customer for an event - 1club Help","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-24T17:39:31.175Z","originalFileLocation":"api-reference/events/register-a-customer-for-an-event.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Registers one customer at a live, bookable event, with any guests they bring - the registration the club\u0026#x27;s own staff make. Every place is a seat on one of the event\u0026#x27;s tickets, at the event\u0026#x27;s time and club and the ticket\u0026#x27;s price; the event\u0026#x27;s capacity and each ticket\u0026#x27;s apply. Identify the customer with contactId (resolve it via GET /v1/platform/contacts) or with an inline customer matched to a contact by email and created if new - exactly one of the two. A customer may register more than once, so registering them again books more places. Places are ticketId with a quantity (3 is the customer and two guests), or tickets across several ticket types; the customer\u0026#x27;s own seat is the first place of the first ticket, and the guests\u0026#x27; seats carry no contact. A ticket is required for every place when the event sells tickets, which every bookable event does; read the ticket ids and what is left on each (capacity - soldCount) from GET /v1/platform/events/{id}. Payment works as on POST /v1/platform/bookings: paid records the places as settled against a payment method named after your API key (no gateway call), with your reference on each seat\u0026#x27;s payment and your fee shared over them; unpaid leaves them outstanding. amount is what the whole registration cost, shared over the seats in proportion to their ticket price. No membership ever covers an event, so an unpaid registration with no amount owes the ticket prices. A draft or cancelled event (EVENT_NOT_LIVE), one that takes no bookings (EVENT_NOT_BOOKABLE), one that has ended (BOOKING_ALREADY_ENDED) and a ticket or event without room for every place are refused; nothing here overrides them. Returns the customer\u0026#x27;s own seat, as POST /v1/platform/bookings returns a booking, with eventId, eventTicketId and seatBookingIds (every seat of the registration) set. Cancelling any seat with POST /v1/platform/bookings/{id}/cancel cancels the whole registration.\">\u003cmeta data-mint-head name=\"application-name\" content=\"1club Help\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/1club/s8VCyK5jYOjTojj3/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/1club/s8VCyK5jYOjTojj3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/1club/s8VCyK5jYOjTojj3/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/1club/s8VCyK5jYOjTojj3/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/1club/s8VCyK5jYOjTojj3/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/1club/s8VCyK5jYOjTojj3/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/1club/s8VCyK5jYOjTojj3/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/1club/s8VCyK5jYOjTojj3/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/1club/s8VCyK5jYOjTojj3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Register a customer for an event - 1club Help\">\u003cmeta data-mint-head property=\"og:description\" content=\"Registers one customer at a live, bookable event, with any guests they bring - the registration the club\u0026#x27;s own staff make. Every place is a seat on one of the event\u0026#x27;s tickets, at the event\u0026#x27;s time and club and the ticket\u0026#x27;s price; the event\u0026#x27;s capacity and each ticket\u0026#x27;s apply. Identify the customer with contactId (resolve it via GET /v1/platform/contacts) or with an inline customer matched to a contact by email and created if new - exactly one of the two. A customer may register more than once, so registering them again books more places. Places are ticketId with a quantity (3 is the customer and two guests), or tickets across several ticket types; the customer\u0026#x27;s own seat is the first place of the first ticket, and the guests\u0026#x27; seats carry no contact. A ticket is required for every place when the event sells tickets, which every bookable event does; read the ticket ids and what is left on each (capacity - soldCount) from GET /v1/platform/events/{id}. Payment works as on POST /v1/platform/bookings: paid records the places as settled against a payment method named after your API key (no gateway call), with your reference on each seat\u0026#x27;s payment and your fee shared over them; unpaid leaves them outstanding. amount is what the whole registration cost, shared over the seats in proportion to their ticket price. No membership ever covers an event, so an unpaid registration with no amount owes the ticket prices. A draft or cancelled event (EVENT_NOT_LIVE), one that takes no bookings (EVENT_NOT_BOOKABLE), one that has ended (BOOKING_ALREADY_ENDED) and a ticket or event without room for every place are refused; nothing here overrides them. Returns the customer\u0026#x27;s own seat, as POST /v1/platform/bookings returns a booking, with eventId, eventTicketId and seatBookingIds (every seat of the registration) set. Cancelling any seat with POST /v1/platform/bookings/{id}/cancel cancels the whole registration.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"1club Help\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.1club.ai/api-reference/events/register-a-customer-for-an-event\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://1club.mintlify.app/_mintlify/api/og/v2?division=Events\u0026amp;title=Register+a+customer+for+an+event\u0026amp;description=Registers+one+customer+at+a+live%2C+bookable+event%2C+with+any+guests+they+bring+-+the+registration+the+club%27s+own+staff+make.+Every+place+is+a+seat+on+one+of+the+e\u0026amp;theme=108ef4317c6d4ca4d46cff0f\u0026amp;signature=fee40a999d0b10500994a23e96de9cf1ef6d4f9ef76c42c01ddea9318490e735\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Register a customer for an event - 1club Help\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Registers one customer at a live, bookable event, with any guests they bring - the registration the club\u0026#x27;s own staff make. Every place is a seat on one of the event\u0026#x27;s tickets, at the event\u0026#x27;s time and club and the ticket\u0026#x27;s price; the event\u0026#x27;s capacity and each ticket\u0026#x27;s apply. Identify the customer with contactId (resolve it via GET /v1/platform/contacts) or with an inline customer matched to a contact by email and created if new - exactly one of the two. A customer may register more than once, so registering them again books more places. Places are ticketId with a quantity (3 is the customer and two guests), or tickets across several ticket types; the customer\u0026#x27;s own seat is the first place of the first ticket, and the guests\u0026#x27; seats carry no contact. A ticket is required for every place when the event sells tickets, which every bookable event does; read the ticket ids and what is left on each (capacity - soldCount) from GET /v1/platform/events/{id}. Payment works as on POST /v1/platform/bookings: paid records the places as settled against a payment method named after your API key (no gateway call), with your reference on each seat\u0026#x27;s payment and your fee shared over them; unpaid leaves them outstanding. amount is what the whole registration cost, shared over the seats in proportion to their ticket price. No membership ever covers an event, so an unpaid registration with no amount owes the ticket prices. A draft or cancelled event (EVENT_NOT_LIVE), one that takes no bookings (EVENT_NOT_BOOKABLE), one that has ended (BOOKING_ALREADY_ENDED) and a ticket or event without room for every place are refused; nothing here overrides them. Returns the customer\u0026#x27;s own seat, as POST /v1/platform/bookings returns a booking, with eventId, eventTicketId and seatBookingIds (every seat of the registration) set. Cancelling any seat with POST /v1/platform/bookings/{id}/cancel cancels the whole registration.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://1club.mintlify.app/_mintlify/api/og/v2?division=Events\u0026amp;title=Register+a+customer+for+an+event\u0026amp;description=Registers+one+customer+at+a+live%2C+bookable+event%2C+with+any+guests+they+bring+-+the+registration+the+club%27s+own+staff+make.+Every+place+is+a+seat+on+one+of+the+e\u0026amp;theme=108ef4317c6d4ca4d46cff0f\u0026amp;signature=fee40a999d0b10500994a23e96de9cf1ef6d4f9ef76c42c01ddea9318490e735\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/1club/s8VCyK5jYOjTojj3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"1club Help\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#471EFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.1club.ai/api-reference/events/register-a-customer-for-an-event\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/events/register-a-customer-for-an-event.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.1club.ai/#organization\",\"name\":\"1club Help\",\"url\":\"https://docs.1club.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/1club/HM7mOd-FIJUyvW_1/logo/light.svg?fit=max\u0026auto=format\u0026n=HM7mOd-FIJUyvW_1\u0026q=85\u0026s=d93b7eb86d0fd304bfe27889e979db38\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.1club.ai#website\",\"name\":\"1club Help\",\"url\":\"https://docs.1club.ai\",\"publisher\":{\"@id\":\"https://docs.1club.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.1club.ai/api-reference/events/register-a-customer-for-an-event#webpage\",\"url\":\"https://docs.1club.ai/api-reference/events/register-a-customer-for-an-event\",\"name\":\"Register a customer for an event\",\"description\":\"Registers one customer at a live, bookable event, with any guests they bring - the registration the club's own staff make. Every place is a seat on one of the event's tickets, at the event's time and club and the ticket's price; the event's capacity and each ticket's apply. Identify the customer with contactId (resolve it via GET /v1/platform/contacts) or with an inline customer matched to a contact by email and created if new - exactly one of the two. A customer may register more than once, so registering them again books more places. Places are ticketId with a quantity (3 is the customer and two guests), or tickets across several ticket types; the customer's own seat is the first place of the first ticket, and the guests' seats carry no contact. A ticket is required for every place when the event sells tickets, which every bookable event does; read the ticket ids and what is left on each (capacity - soldCount) from GET /v1/platform/events/{id}. Payment works as on POST /v1/platform/bookings: paid records the places as settled against a payment method named after your API key (no gateway call), with your reference on each seat's payment and your fee shared over them; unpaid leaves them outstanding. amount is what the whole registration cost, shared over the seats in proportion to their ticket price. No membership ever covers an event, so an unpaid registration with no amount owes the ticket prices. A draft or cancelled event (EVENT_NOT_LIVE), one that takes no bookings (EVENT_NOT_BOOKABLE), one that has ended (BOOKING_ALREADY_ENDED) and a ticket or event without room for every place are refused; nothing here overrides them. Returns the customer's own seat, as POST /v1/platform/bookings returns a booking, with eventId, eventTicketId and seatBookingIds (every seat of the registration) set. Cancelling any seat with POST /v1/platform/bookings/{id}/cancel cancels the whole registration.\",\"dateModified\":\"2026-10-24T17:39:31.175Z\",\"isPartOf\":{\"@id\":\"https://docs.1club.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.1club.ai/api-reference/events/register-a-customer-for-an-event#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.1club.ai/api-reference/events/register-a-customer-for-an-event#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Events\",\"item\":\"https://docs.1club.ai/api-reference/events/list-events\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Register a customer for an event\",\"item\":\"https://docs.1club.ai/api-reference/events/register-a-customer-for-an-event\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.1club.ai/api-reference/events/register-a-customer-for-an-event#apireference\",\"headline\":\"Register a customer for an event\",\"name\":\"Register a customer for an event\",\"description\":\"Registers one customer at a live, bookable event, with any guests they bring - the registration the club's own staff make. Every place is a seat on one of the event's tickets, at the event's time and club and the ticket's price; the event's capacity and each ticket's apply. Identify the customer with contactId (resolve it via GET /v1/platform/contacts) or with an inline customer matched to a contact by email and created if new - exactly one of the two. A customer may register more than once, so registering them again books more places. Places are ticketId with a quantity (3 is the customer and two guests), or tickets across several ticket types; the customer's own seat is the first place of the first ticket, and the guests' seats carry no contact. A ticket is required for every place when the event sells tickets, which every bookable event does; read the ticket ids and what is left on each (capacity - soldCount) from GET /v1/platform/events/{id}. Payment works as on POST /v1/platform/bookings: paid records the places as settled against a payment method named after your API key (no gateway call), with your reference on each seat's payment and your fee shared over them; unpaid leaves them outstanding. amount is what the whole registration cost, shared over the seats in proportion to their ticket price. No membership ever covers an event, so an unpaid registration with no amount owes the ticket prices. A draft or cancelled event (EVENT_NOT_LIVE), one that takes no bookings (EVENT_NOT_BOOKABLE), one that has ended (BOOKING_ALREADY_ENDED) and a ticket or event without room for every place are refused; nothing here overrides them. Returns the customer's own seat, as POST /v1/platform/bookings returns a booking, with eventId, eventTicketId and seatBookingIds (every seat of the registration) set. Cancelling any seat with POST /v1/platform/bookings/{id}/cancel cancels the whole registration.\",\"url\":\"https://docs.1club.ai/api-reference/events/register-a-customer-for-an-event\",\"mainEntityOfPage\":{\"@id\":\"https://docs.1club.ai/api-reference/events/register-a-customer-for-an-event#webpage\"},\"dateModified\":\"2026-10-24T17:39:31.175Z\",\"publisher\":{\"@id\":\"https://docs.1club.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.1club.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"1club Help\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"1club Help","nav":{"global":null,"tabs":[{"tab":"Guides","icon":"book-open","pages":[{"title":"Guides","href":""}]},{"tab":"Settings","icon":"gear","pages":[{"title":"Settings","href":"/settings/overview"}]},{"tab":"API","icon":"code","groups":[{"group":"Getting Started","pages":[{"title":"1club Platform API reference","sidebarTitle":"Introduction","href":"/api-reference/introduction"},{"title":"1club.me marketplace API","sidebarTitle":"Marketplace API","href":"/api-reference/marketplace-api"},{"title":"Versioning and deprecation","href":"/api-reference/versioning"}]},{"group":"Channel integration","pages":[{"title":"Channel integration overview","href":"/api-reference/channel-integration/overview"},{"title":"Authentication","href":"/api-reference/channel-integration/authentication"},{"title":"Areas and availability","href":"/api-reference/channel-integration/areas-and-availability"},{"title":"Contacts","href":"/api-reference/channel-integration/contacts"},{"title":"Instructors","href":"/api-reference/channel-integration/instructors"},{"title":"Classes","href":"/api-reference/channel-integration/classes"},{"title":"Plans","href":"/api-reference/channel-integration/plans"},{"title":"Memberships","href":"/api-reference/channel-integration/memberships"},{"title":"Products","href":"/api-reference/channel-integration/products"},{"title":"Bookings","href":"/api-reference/channel-integration/bookings"},{"title":"Check-ins","href":"/api-reference/channel-integration/checkins"},{"title":"Idempotency","href":"/api-reference/channel-integration/idempotency"},{"title":"Webhooks","href":"/api-reference/channel-integration/webhooks"}]},{"group":"Area Blocks","pages":[{"title":"List area blocks","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/area-blocks","href":"/api-reference/area-blocks/list-area-blocks"},{"title":"Create an area block","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/area-blocks","href":"/api-reference/area-blocks/create-an-area-block"},{"title":"Delete an area block","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/area-blocks/{blockId}","href":"/api-reference/area-blocks/delete-an-area-block"}]},{"group":"Areas","pages":[{"title":"List area types","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/area-types","href":"/api-reference/areas/list-area-types"},{"title":"Create an area type","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/area-types","href":"/api-reference/areas/create-an-area-type"},{"title":"Get an area type","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/area-types/{id}","href":"/api-reference/areas/get-an-area-type"},{"title":"Update an area type","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/area-types/{id}","href":"/api-reference/areas/update-an-area-type"},{"title":"List bookable areas","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/areas","href":"/api-reference/areas/list-bookable-areas"},{"title":"Create an area","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/areas","href":"/api-reference/areas/create-an-area"},{"title":"Get area availability","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/areas/{areaId}/availability","href":"/api-reference/areas/get-area-availability"},{"title":"Get an area","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/areas/{areaId}","href":"/api-reference/areas/get-an-area"},{"title":"Update an area","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/areas/{areaId}","href":"/api-reference/areas/update-an-area"},{"title":"Get club-wide availability grid","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/availability","href":"/api-reference/areas/get-club-wide-availability-grid"},{"title":"Availability change feed (reconciliation)","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/availability/changes","href":"/api-reference/areas/availability-change-feed-reconciliation"}]},{"group":"Booking Policies","pages":[{"title":"List booking policies","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/booking-policies","href":"/api-reference/booking-policies/list-booking-policies"},{"title":"Create a booking policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/booking-policies","href":"/api-reference/booking-policies/create-a-booking-policy"},{"title":"Resolve the effective booking policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/booking-policies/effective","href":"/api-reference/booking-policies/resolve-the-effective-booking-policy"},{"title":"Get a booking policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/booking-policies/{id}","href":"/api-reference/booking-policies/get-a-booking-policy"},{"title":"Delete a booking policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/booking-policies/{id}","href":"/api-reference/booking-policies/delete-a-booking-policy"},{"title":"Update a booking policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/booking-policies/{id}","href":"/api-reference/booking-policies/update-a-booking-policy"},{"title":"Duplicate a booking policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/booking-policies/{id}/duplicate","href":"/api-reference/booking-policies/duplicate-a-booking-policy"}]},{"group":"Bookings","pages":[{"title":"List bookings","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/bookings","href":"/api-reference/bookings/list-bookings"},{"title":"Create a booking","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/bookings","href":"/api-reference/bookings/create-a-booking"},{"title":"Cancel a booking","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/bookings/{id}/cancel","href":"/api-reference/bookings/cancel-a-booking"},{"title":"Get a booking","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/bookings/{id}","href":"/api-reference/bookings/get-a-booking"},{"title":"Update a booking","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/bookings/{id}","href":"/api-reference/bookings/update-a-booking"},{"title":"List the additional players on a booking","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/bookings/{id}/participants","href":"/api-reference/bookings/list-the-additional-players-on-a-booking"},{"title":"Add a player to a booking","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/bookings/{id}/participants","href":"/api-reference/bookings/add-a-player-to-a-booking"},{"title":"Remove a player from a booking","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/bookings/{id}/participants/{contactId}","href":"/api-reference/bookings/remove-a-player-from-a-booking"}]},{"group":"Check-ins","pages":[{"title":"List check-ins","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/checkins","href":"/api-reference/check-ins/list-check-ins"},{"title":"Check in a booking or a member","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/checkins","href":"/api-reference/check-ins/check-in-a-booking-or-a-member"},{"title":"Get a check-in","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/checkins/{id}","href":"/api-reference/check-ins/get-a-check-in"}]},{"group":"Classes","pages":[{"title":"List class types","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/class-types","href":"/api-reference/classes/list-class-types"},{"title":"Create a class type","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/class-types","href":"/api-reference/classes/create-a-class-type"},{"title":"Get a class type","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/class-types/{id}","href":"/api-reference/classes/get-a-class-type"},{"title":"Update a class type","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/class-types/{id}","href":"/api-reference/classes/update-a-class-type"},{"title":"List classes","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/classes","href":"/api-reference/classes/list-classes"},{"title":"Create a class","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/classes","href":"/api-reference/classes/create-a-class"},{"title":"List a class's roster","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/classes/{id}/bookings","href":"/api-reference/classes/list-a-classs-roster"},{"title":"Book a customer into a class","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/classes/{id}/bookings","href":"/api-reference/classes/book-a-customer-into-a-class"},{"title":"Get a class by ID","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/classes/{id}","href":"/api-reference/classes/get-a-class-by-id"},{"title":"Delete a class","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/classes/{id}","href":"/api-reference/classes/delete-a-class"},{"title":"Update a class","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/classes/{id}","href":"/api-reference/classes/update-a-class"},{"title":"List programs","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/programs","href":"/api-reference/classes/list-programs"},{"title":"Create a program","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/programs","href":"/api-reference/classes/create-a-program"},{"title":"Get a program","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/programs/{id}","href":"/api-reference/classes/get-a-program"},{"title":"Update a program","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/programs/{id}","href":"/api-reference/classes/update-a-program"},{"title":"List progression tracks","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/progression-tracks","href":"/api-reference/classes/list-progression-tracks"}]},{"group":"Clubs","pages":[{"title":"List clubs","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/clubs","href":"/api-reference/clubs/list-clubs"},{"title":"Get club details by slug","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/clubs/{slug}","href":"/api-reference/clubs/get-club-details-by-slug"},{"title":"Update a club's booking-card labels","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/clubs/{slug}","href":"/api-reference/clubs/update-a-clubs-booking-card-labels"},{"title":"Update a club's profile","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/clubs/{slug}/profile","href":"/api-reference/clubs/update-a-clubs-profile"}]},{"group":"Competitors","pages":[{"title":"List competitors","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/competitors","href":"/api-reference/competitors/list-competitors"},{"title":"Add a competitor","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/competitors","href":"/api-reference/competitors/add-a-competitor"},{"title":"Compare prices with the market","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/competitors/market","href":"/api-reference/competitors/compare-prices-with-the-market"},{"title":"Import competitors from the AI report","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/competitors/import-ai-report","href":"/api-reference/competitors/import-competitors-from-the-ai-report"},{"title":"Get a competitor","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/competitors/{id}","href":"/api-reference/competitors/get-a-competitor"},{"title":"Remove a competitor","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/competitors/{id}","href":"/api-reference/competitors/remove-a-competitor"},{"title":"Update a competitor","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/competitors/{id}","href":"/api-reference/competitors/update-a-competitor"},{"title":"Analyse a competitor's reviews","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/competitors/{id}/analysis","href":"/api-reference/competitors/analyse-a-competitors-reviews"},{"title":"Read a competitor's website again","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/competitors/{id}/refresh","href":"/api-reference/competitors/read-a-competitors-website-again"}]},{"group":"Contacts","pages":[{"title":"List and search contacts","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/contacts","href":"/api-reference/contacts/list-and-search-contacts"},{"title":"Create a contact","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/contacts","href":"/api-reference/contacts/create-a-contact"},{"title":"Get a contact","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/contacts/{id}","href":"/api-reference/contacts/get-a-contact"},{"title":"Archive a contact","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/contacts/{id}","href":"/api-reference/contacts/archive-a-contact"},{"title":"Update a contact","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/contacts/{id}","href":"/api-reference/contacts/update-a-contact"},{"title":"List sales pipeline stages","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/pipeline-stages","href":"/api-reference/contacts/list-sales-pipeline-stages"},{"title":"List contact sources","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/contact-sources","href":"/api-reference/contacts/list-contact-sources"}]},{"group":"Content","pages":[{"title":"List content","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/content","href":"/api-reference/content/list-content"},{"title":"Create content","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/content","href":"/api-reference/content/create-content"},{"title":"Get published content by slug","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/content/{slug}","href":"/api-reference/content/get-published-content-by-slug"},{"title":"Delete content","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/content/{contentId}","href":"/api-reference/content/delete-content"},{"title":"Update content","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/content/{contentId}","href":"/api-reference/content/update-content"}]},{"group":"Custom Fields","pages":[{"title":"List contact custom fields","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/custom-fields","href":"/api-reference/custom-fields/list-contact-custom-fields"},{"title":"Create a contact custom field","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/custom-fields","href":"/api-reference/custom-fields/create-a-contact-custom-field"},{"title":"Get a contact custom field","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/custom-fields/{id}","href":"/api-reference/custom-fields/get-a-contact-custom-field"},{"title":"Delete a contact custom field","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/custom-fields/{id}","href":"/api-reference/custom-fields/delete-a-contact-custom-field"},{"title":"Update a contact custom field","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/custom-fields/{id}","href":"/api-reference/custom-fields/update-a-contact-custom-field"},{"title":"Get a contact's custom field values","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/contacts/{contactId}/custom-fields","href":"/api-reference/custom-fields/get-a-contacts-custom-field-values"},{"title":"Set a contact's custom field values","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/contacts/{contactId}/custom-fields","href":"/api-reference/custom-fields/set-a-contacts-custom-field-values"}]},{"group":"Document Rules","pages":[{"title":"List document rules","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/document-rules","href":"/api-reference/document-rules/list-document-rules"},{"title":"Create a document rule","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/document-rules","href":"/api-reference/document-rules/create-a-document-rule"},{"title":"Get a document rule","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/document-rules/{id}","href":"/api-reference/document-rules/get-a-document-rule"},{"title":"Delete a document rule","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/document-rules/{id}","href":"/api-reference/document-rules/delete-a-document-rule"},{"title":"Update a document rule","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/document-rules/{id}","href":"/api-reference/document-rules/update-a-document-rule"}]},{"group":"Events","pages":[{"title":"List events","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/events","href":"/api-reference/events/list-events"},{"title":"Create an event","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/events","href":"/api-reference/events/create-an-event"},{"title":"Get an event","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/events/{id}","href":"/api-reference/events/get-an-event"},{"title":"Delete an event","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/events/{id}","href":"/api-reference/events/delete-an-event"},{"title":"Update an event","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/events/{id}","href":"/api-reference/events/update-an-event"},{"title":"Publish an event","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/events/{id}/publish","href":"/api-reference/events/publish-an-event"},{"title":"Unpublish an event","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/events/{id}/unpublish","href":"/api-reference/events/unpublish-an-event"},{"title":"Cancel an event","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/events/{id}/cancel","href":"/api-reference/events/cancel-an-event"},{"title":"Duplicate an event","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/events/{id}/duplicate","href":"/api-reference/events/duplicate-an-event"},{"title":"List an event's attendees","description":"Returns who holds a seat at one event, on which ticket, whether they were checked in, and what they paid - the attendee list, from the event side. Every seat is its own booking row against the event. A guest ticket bought on someone else's order has no contact; `bookerName` is who bought it.\n\nDo not expect `total` to equal the event's `bookedCount`: that counts `confirmed`, `pending` and `checked_in`, while this list also keeps `no_show`. Cancelled seats are left out unless `status=cancelled` asks for them.\n\nRequires `bookings:read`, as a class's roster does. `contactEmail` additionally needs `contacts:read` and is null without it.\n","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/events/{id}/bookings","href":"/api-reference/events/list-an-events-attendees"},{"title":"Register a customer for an event","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/events/{id}/bookings","href":"/api-reference/events/register-a-customer-for-an-event"}]},{"group":"Forms","pages":[{"title":"List forms","description":"The organization's forms, newest first. A form with `createsAccount: true` is a sign-up form: it registers whoever completes it and can sell plans and products. One with `createsAccount: false` is a fill-in form that only collects answers. `publicUrl` is where each one is filled in, and every form is live there. Questions are not included; read a single form for them.\n","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/forms","href":"/api-reference/forms/list-forms"},{"title":"Create a form","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/forms","href":"/api-reference/forms/create-a-form"},{"title":"Get a form","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/forms/{id}","href":"/api-reference/forms/get-a-form"},{"title":"Update a form","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/forms/{id}","href":"/api-reference/forms/update-a-form"},{"title":"Set a fill-in form's questions","deprecated":null,"version":null,"openapi":"/openapi-platform.json put /v1/platform/forms/{id}/questions","href":"/api-reference/forms/set-a-fill-in-forms-questions"}]},{"group":"Staff Roster","pages":[{"title":"List the staff roster","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/instructor-shifts","href":"/api-reference/staff-roster/list-the-staff-roster"},{"title":"Add a shift","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/instructor-shifts","href":"/api-reference/staff-roster/add-a-shift"},{"title":"Get a shift","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/instructor-shifts/{id}","href":"/api-reference/staff-roster/get-a-shift"},{"title":"Delete a shift","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/instructor-shifts/{id}","href":"/api-reference/staff-roster/delete-a-shift"},{"title":"Edit a shift","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/instructor-shifts/{id}","href":"/api-reference/staff-roster/edit-a-shift"},{"title":"Cancel a shift","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/instructor-shifts/{id}/cancel","href":"/api-reference/staff-roster/cancel-a-shift"},{"title":"List instructor time off","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/instructor-time-off","href":"/api-reference/staff-roster/list-instructor-time-off"},{"title":"Book a coach off","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/instructor-time-off","href":"/api-reference/staff-roster/book-a-coach-off"},{"title":"Remove instructor time off","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/instructor-time-off/{id}","href":"/api-reference/staff-roster/remove-instructor-time-off"},{"title":"Change instructor time off","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/instructor-time-off/{id}","href":"/api-reference/staff-roster/change-instructor-time-off"},{"title":"List rotation assignments","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/shift-rotation-assignments","href":"/api-reference/staff-roster/list-rotation-assignments"},{"title":"Assign a coach to a rotation","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/shift-rotation-assignments","href":"/api-reference/staff-roster/assign-a-coach-to-a-rotation"},{"title":"Remove a rotation assignment","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/shift-rotation-assignments/{id}","href":"/api-reference/staff-roster/remove-a-rotation-assignment"},{"title":"Update a rotation assignment","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/shift-rotation-assignments/{id}","href":"/api-reference/staff-roster/update-a-rotation-assignment"},{"title":"List shift rotations","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/shift-rotations","href":"/api-reference/staff-roster/list-shift-rotations"},{"title":"Create a shift rotation","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/shift-rotations","href":"/api-reference/staff-roster/create-a-shift-rotation"},{"title":"Get a shift rotation","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/shift-rotations/{id}","href":"/api-reference/staff-roster/get-a-shift-rotation"},{"title":"Delete a shift rotation","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/shift-rotations/{id}","href":"/api-reference/staff-roster/delete-a-shift-rotation"},{"title":"Update a shift rotation","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/shift-rotations/{id}","href":"/api-reference/staff-roster/update-a-shift-rotation"},{"title":"List shift templates","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/shift-templates","href":"/api-reference/staff-roster/list-shift-templates"},{"title":"Create a shift template","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/shift-templates","href":"/api-reference/staff-roster/create-a-shift-template"},{"title":"Get a shift template","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/shift-templates/{id}","href":"/api-reference/staff-roster/get-a-shift-template"},{"title":"Delete a shift template","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/shift-templates/{id}","href":"/api-reference/staff-roster/delete-a-shift-template"},{"title":"Update a shift template","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/shift-templates/{id}","href":"/api-reference/staff-roster/update-a-shift-template"}]},{"group":"Instructors","pages":[{"title":"List instructor types","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/instructor-types","href":"/api-reference/instructors/list-instructor-types"},{"title":"Create an instructor type","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/instructor-types","href":"/api-reference/instructors/create-an-instructor-type"},{"title":"Get an instructor type","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/instructor-types/{id}","href":"/api-reference/instructors/get-an-instructor-type"},{"title":"Update an instructor type","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/instructor-types/{id}","href":"/api-reference/instructors/update-an-instructor-type"},{"title":"List and search instructors","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/instructors","href":"/api-reference/instructors/list-and-search-instructors"},{"title":"Create an instructor","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/instructors","href":"/api-reference/instructors/create-an-instructor"},{"title":"Get an instructor","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/instructors/{id}","href":"/api-reference/instructors/get-an-instructor"},{"title":"Update an instructor","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/instructors/{id}","href":"/api-reference/instructors/update-an-instructor"}]},{"group":"Invoices","pages":[{"title":"Summarize what was invoiced","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/invoices/summary","href":"/api-reference/invoices/summarize-what-was-invoiced"},{"title":"List invoices","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/invoices","href":"/api-reference/invoices/list-invoices"},{"title":"Get an invoice","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/invoices/{id}","href":"/api-reference/invoices/get-an-invoice"}]},{"group":"Account","pages":[{"title":"Describe the API key's organization and granted scopes","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/me","href":"/api-reference/account/describe-the-api-keys-organization-and-granted-scopes"}]},{"group":"Media","pages":[{"title":"List media","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/media","href":"/api-reference/media/list-media"},{"title":"Register a file in the media library","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/media","href":"/api-reference/media/register-a-file-in-the-media-library"},{"title":"Get one media item","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/media/{mediaId}","href":"/api-reference/media/get-one-media-item"},{"title":"Delete a media item","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/media/{mediaId}","href":"/api-reference/media/delete-a-media-item"},{"title":"Update media metadata","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/media/{mediaId}","href":"/api-reference/media/update-media-metadata"}]},{"group":"Memberships","pages":[{"title":"List memberships","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/memberships","href":"/api-reference/memberships/list-memberships"},{"title":"Create a membership","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/memberships","href":"/api-reference/memberships/create-a-membership"},{"title":"Get a membership","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/memberships/{id}","href":"/api-reference/memberships/get-a-membership"},{"title":"Update a membership","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/memberships/{id}","href":"/api-reference/memberships/update-a-membership"}]},{"group":"Messages","pages":[{"title":"List messages","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/messages","href":"/api-reference/messages/list-messages"},{"title":"Create a message draft","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/messages","href":"/api-reference/messages/create-a-message-draft"},{"title":"Get a message","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/messages/{id}","href":"/api-reference/messages/get-a-message"},{"title":"Delete a message draft","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/messages/{id}","href":"/api-reference/messages/delete-a-message-draft"},{"title":"Update a message draft","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/messages/{id}","href":"/api-reference/messages/update-a-message-draft"}]},{"group":"Notifications","pages":[{"title":"Get notification settings","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/notification-settings","href":"/api-reference/notifications/get-notification-settings"},{"title":"Update a notification setting","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/notification-settings","href":"/api-reference/notifications/update-a-notification-setting"},{"title":"Apply notification settings to everyone in a role","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/notification-settings/apply","href":"/api-reference/notifications/apply-notification-settings-to-everyone-in-a-role"}]},{"group":"Pay Rate Policies","pages":[{"title":"List what coaches earned","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/pay-ledger","href":"/api-reference/pay-rate-policies/list-what-coaches-earned"},{"title":"List pay rate policies","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/pay-rate-policies","href":"/api-reference/pay-rate-policies/list-pay-rate-policies"},{"title":"Create a pay rate policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/pay-rate-policies","href":"/api-reference/pay-rate-policies/create-a-pay-rate-policy"},{"title":"Get a pay rate policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/pay-rate-policies/{id}","href":"/api-reference/pay-rate-policies/get-a-pay-rate-policy"},{"title":"Update a pay rate policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/pay-rate-policies/{id}","href":"/api-reference/pay-rate-policies/update-a-pay-rate-policy"},{"title":"Put instructors on a pay rate policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/pay-rate-policies/{id}/instructors","href":"/api-reference/pay-rate-policies/put-instructors-on-a-pay-rate-policy"},{"title":"Take an instructor off a pay rate policy","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/pay-rate-policies/{id}/instructors/{instructorId}","href":"/api-reference/pay-rate-policies/take-an-instructor-off-a-pay-rate-policy"}]},{"group":"Payment Methods","pages":[{"title":"List payment methods","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/payment-methods","href":"/api-reference/payment-methods/list-payment-methods"},{"title":"Create a payment method","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/payment-methods","href":"/api-reference/payment-methods/create-a-payment-method"},{"title":"Get a payment method","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/payment-methods/{id}","href":"/api-reference/payment-methods/get-a-payment-method"},{"title":"Delete a payment method","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/payment-methods/{id}","href":"/api-reference/payment-methods/delete-a-payment-method"},{"title":"Update a payment method","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/payment-methods/{id}","href":"/api-reference/payment-methods/update-a-payment-method"}]},{"group":"Plans","pages":[{"title":"List membership plan categories","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/plan-categories","href":"/api-reference/plans/list-membership-plan-categories"},{"title":"Create a membership plan category","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/plan-categories","href":"/api-reference/plans/create-a-membership-plan-category"},{"title":"Get a membership plan category","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/plan-categories/{id}","href":"/api-reference/plans/get-a-membership-plan-category"},{"title":"Update a membership plan category","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/plan-categories/{id}","href":"/api-reference/plans/update-a-membership-plan-category"},{"title":"List and search membership plans","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/plans","href":"/api-reference/plans/list-and-search-membership-plans"},{"title":"Create a membership plan","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/plans","href":"/api-reference/plans/create-a-membership-plan"},{"title":"Get a membership plan","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/plans/{id}","href":"/api-reference/plans/get-a-membership-plan"},{"title":"Delete a membership plan","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/plans/{id}","href":"/api-reference/plans/delete-a-membership-plan"},{"title":"Update a membership plan","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/plans/{id}","href":"/api-reference/plans/update-a-membership-plan"}]},{"group":"Pricing Rules","pages":[{"title":"List pricing rules","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/pricing-rules","href":"/api-reference/pricing-rules/list-pricing-rules"},{"title":"Create a pricing rule","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/pricing-rules","href":"/api-reference/pricing-rules/create-a-pricing-rule"},{"title":"Quote a booking price","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/pricing-rules/quote","href":"/api-reference/pricing-rules/quote-a-booking-price"},{"title":"Get a pricing rule","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/pricing-rules/{id}","href":"/api-reference/pricing-rules/get-a-pricing-rule"},{"title":"Delete a pricing rule","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/pricing-rules/{id}","href":"/api-reference/pricing-rules/delete-a-pricing-rule"},{"title":"Update a pricing rule","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/pricing-rules/{id}","href":"/api-reference/pricing-rules/update-a-pricing-rule"}]},{"group":"Products","pages":[{"title":"List product categories","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/product-categories","href":"/api-reference/products/list-product-categories"},{"title":"Create a product category","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/product-categories","href":"/api-reference/products/create-a-product-category"},{"title":"Get a product category","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/product-categories/{id}","href":"/api-reference/products/get-a-product-category"},{"title":"Update a product category","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/product-categories/{id}","href":"/api-reference/products/update-a-product-category"},{"title":"List and search products","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/products","href":"/api-reference/products/list-and-search-products"},{"title":"Create a product","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/products","href":"/api-reference/products/create-a-product"},{"title":"Get a product","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/products/{id}","href":"/api-reference/products/get-a-product"},{"title":"Update a product","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/products/{id}","href":"/api-reference/products/update-a-product"},{"title":"Get how many are left to sell","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/products/{id}/availability","href":"/api-reference/products/get-how-many-are-left-to-sell"}]},{"group":"Reports","pages":[{"title":"Revenue report for a period","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/reports/revenue","href":"/api-reference/reports/revenue-report-for-a-period"},{"title":"Activity report for a period","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/reports/activity","href":"/api-reference/reports/activity-report-for-a-period"},{"title":"Memberships report for a period","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/reports/memberships","href":"/api-reference/reports/memberships-report-for-a-period"},{"title":"Members report for a period","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/reports/members","href":"/api-reference/reports/members-report-for-a-period"}]},{"group":"Revenue Accounts","pages":[{"title":"List revenue accounts","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/revenue-accounts","href":"/api-reference/revenue-accounts/list-revenue-accounts"},{"title":"Create a revenue account","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/revenue-accounts","href":"/api-reference/revenue-accounts/create-a-revenue-account"},{"title":"Get a revenue account","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/revenue-accounts/{id}","href":"/api-reference/revenue-accounts/get-a-revenue-account"},{"title":"Update a revenue account","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/revenue-accounts/{id}","href":"/api-reference/revenue-accounts/update-a-revenue-account"}]},{"group":"Staff","pages":[{"title":"List staff","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/staff","href":"/api-reference/staff/list-staff"},{"title":"Change a staff member's role","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/staff/{userId}/role","href":"/api-reference/staff/change-a-staff-members-role"},{"title":"Get role permissions","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/role-permissions","href":"/api-reference/staff/get-role-permissions"},{"title":"Reset a role's permissions","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/role-permissions/{role}","href":"/api-reference/staff/reset-a-roles-permissions"},{"title":"Change a role's permissions","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/role-permissions/{role}","href":"/api-reference/staff/change-a-roles-permissions"}]},{"group":"Tags","pages":[{"title":"List tags","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/tags","href":"/api-reference/tags/list-tags"},{"title":"Create a tag","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/tags","href":"/api-reference/tags/create-a-tag"},{"title":"Delete a tag","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/tags/{id}","href":"/api-reference/tags/delete-a-tag"},{"title":"Update a tag","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/tags/{id}","href":"/api-reference/tags/update-a-tag"},{"title":"Tag contacts","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/contact-tags/add","href":"/api-reference/tags/tag-contacts"},{"title":"Untag contacts","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/contact-tags/remove","href":"/api-reference/tags/untag-contacts"},{"title":"Get smart tag rules","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/smart-tag-settings","href":"/api-reference/tags/get-smart-tag-rules"},{"title":"Update smart tag rules","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/smart-tag-settings","href":"/api-reference/tags/update-smart-tag-rules"}]},{"group":"Templates","pages":[{"title":"List message templates","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/templates","href":"/api-reference/templates/list-message-templates"},{"title":"Create a message template","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/templates","href":"/api-reference/templates/create-a-message-template"},{"title":"List the variables a template may use","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/templates/variables","href":"/api-reference/templates/list-the-variables-a-template-may-use"},{"title":"List the customizable system emails","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/templates/system","href":"/api-reference/templates/list-the-customizable-system-emails"},{"title":"Customize a system email","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/templates/system/{key}/copy","href":"/api-reference/templates/customize-a-system-email"},{"title":"Get a message template","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/templates/{id}","href":"/api-reference/templates/get-a-message-template"},{"title":"Delete a message template","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/templates/{id}","href":"/api-reference/templates/delete-a-message-template"},{"title":"Update a message template","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/templates/{id}","href":"/api-reference/templates/update-a-message-template"}]},{"group":"Transactions","pages":[{"title":"List transactions for the organization","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/transactions","href":"/api-reference/transactions/list-transactions-for-the-organization"},{"title":"Record a settlement","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/transactions","href":"/api-reference/transactions/record-a-settlement"},{"title":"Get a transaction by ID","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/transactions/{id}","href":"/api-reference/transactions/get-a-transaction-by-id"},{"title":"Refund a settlement","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/transactions/{id}/refund","href":"/api-reference/transactions/refund-a-settlement"}]},{"group":"Website","pages":[{"title":"Get the website","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/website","href":"/api-reference/website/get-the-website"},{"title":"Update website-level settings","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/website","href":"/api-reference/website/update-website-level-settings"},{"title":"List the organization's websites","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/website/sites","href":"/api-reference/website/list-the-organizations-websites"},{"title":"Get the section-type catalog","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/website/section-types","href":"/api-reference/website/get-the-section-type-catalog"},{"title":"Get the design-token catalog","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/website/theme-tokens","href":"/api-reference/website/get-the-design-token-catalog"},{"title":"Get the website's theme","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/website/theme","href":"/api-reference/website/get-the-websites-theme"},{"title":"Set the website's design tokens","deprecated":null,"version":null,"openapi":"/openapi-platform.json put /v1/platform/website/theme","href":"/api-reference/website/set-the-websites-design-tokens"},{"title":"Get the website's custom CSS","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/website/css","href":"/api-reference/website/get-the-websites-custom-css"},{"title":"Replace the website's custom CSS","deprecated":null,"version":null,"openapi":"/openapi-platform.json put /v1/platform/website/css","href":"/api-reference/website/replace-the-websites-custom-css"},{"title":"List the website's pages","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/website/pages","href":"/api-reference/website/list-the-websites-pages"},{"title":"Add a page","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/website/pages","href":"/api-reference/website/add-a-page"},{"title":"Get one page","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/website/pages/{slug}","href":"/api-reference/website/get-one-page"},{"title":"Update a page","deprecated":null,"version":null,"openapi":"/openapi-platform.json put /v1/platform/website/pages/{slug}","href":"/api-reference/website/update-a-page"},{"title":"Delete a page","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/website/pages/{slug}","href":"/api-reference/website/delete-a-page"},{"title":"List publish history","deprecated":null,"version":null,"openapi":"/openapi-platform.json get /v1/platform/website/releases","href":"/api-reference/website/list-publish-history"},{"title":"Publish the website","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/website/releases","href":"/api-reference/website/publish-the-website"},{"title":"Add a section to a page","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/website/pages/{slug}/sections","href":"/api-reference/website/add-a-section-to-a-page"},{"title":"Remove a section from a page","deprecated":null,"version":null,"openapi":"/openapi-platform.json delete /v1/platform/website/pages/{slug}/sections/{index}","href":"/api-reference/website/remove-a-section-from-a-page"},{"title":"Update a section's config","deprecated":null,"version":null,"openapi":"/openapi-platform.json patch /v1/platform/website/pages/{slug}/sections/{index}","href":"/api-reference/website/update-a-sections-config"},{"title":"Update the site header or footer","deprecated":null,"version":null,"openapi":"/openapi-platform.json put /v1/platform/website/layout/{slot}","href":"/api-reference/website/update-the-site-header-or-footer"},{"title":"Roll back to an earlier release","deprecated":null,"version":null,"openapi":"/openapi-platform.json post /v1/platform/website/releases/{releaseId}/rollback","href":"/api-reference/website/roll-back-to-an-earlier-release"}]}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog"}]}]},"title":"Register a customer for an event - 1club Help","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Bbp7I60D.js","utils-C3RIvJha.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DqD-vLt8.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B31Loprg.js","snippetPresets-DKpk-b8t.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Cj65AhOR.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BXtn5gcC.js","shallow-RY2b03Cp.js","getApiPlaygroundDisplay-B0jeiPk3.js","CodeSnippet-CYgBjjwn.js","CodeSnippets-DOngDrYB.js","Page-n7I5XbKb.js","getPastedJson-DRQbJx-T.js","icon-CQiQCicY.js","MethodPill-BKTLdNtu.js","DuplicateIcon-B9jpAdat.js","createIcon-DCddRrXv.js","DynamicMarkdown-a8hUKrw6.js","SectionHeading-eECVV2eH.js","axios-vUo_bRtp.js","Markdown--GF7ZIpf.js","clsx-DZLdJUrt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-2LoAhjKH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Zwc0ZncM.js"]}