{"openapi":"3.1.0","jsonSchemaDialect":"https://spec.openapis.org/oas/3.1/dialect/base","info":{"title":"Dont4get Developer API","version":"1.0.7","summary":"Platform-holder and recipient capabilities, with explicit role and scope boundaries.","description":"The Dont4get v1 API exposes platform-holder self-service and recipient self-service. Existing mobile SMS sessions are verified in the current environment's datastore and require an explicit active platform-recipient binding. Mobile sessions cannot administer API keys. Resource ownership is resolved on the server. An API key never grants god-user administration, cross-tenant access, impersonation or permission to issue another key. The public OpenAPI document and YAML export are generated from the same operation contracts used for routing and input validation. Native release verification and asynchronous workflow limits are explained in the developer guide.","contact":{"name":"Dont4get integrations","email":"integrations@dont4get.io"},"x-logo":{"url":"/assets/brand/dont4get-logo.svg","altText":"Dont4get — Your second brain"}},"servers":[{"url":"/","description":"Current Dont4get environment (same origin)"}],"tags":[{"name":"Access"},{"name":"Platformhouder"},{"name":"Recipient"},{"name":"Planning"},{"name":"Platformhouder stem"},{"name":"Appointments"}],"paths":{"/api/v1/me":{"get":{"operationId":"getApiIdentity","summary":"Inspect the authenticated role and granted scopes","description":"Live actor and tenant assignments are checked on every request. Verified, explicitly linked mobile SMS sessions return authentication=recipient_session and recipient self-service scopes only. God users and impersonation are excluded.\n\nRequired role: `either`. An active regular identity is required. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Access"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"either","x-dont4get-scope":"","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"actorId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"role":{"enum":["platform_holder_user","recipient"]},"platformHolderId":{"type":["string","null"]},"recipientId":{"type":["string","null"]},"scopes":{"type":"array","items":{"type":"string","maxLength":80}},"authentication":{"enum":["session","api_key","recipient_session"]}},"required":["actorId","role","platformHolderId","recipientId","scopes","authentication"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/api-keys":{"get":{"operationId":"listApiKeys","summary":"List keys issued by the current actor","description":"Only metadata is returned. Secrets and hashes are never listed. Results are confined to the current actor and tenant/recipient context.\n\nRequired role: `either`. Required scope: `api-keys:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Access"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"either","x-dont4get-scope":"api-keys:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"pageSize","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$","description":"Default 25, maximum 100."}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string","maxLength":4096}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"name":{"type":"string","maxLength":100},"kind":{"enum":["full","restricted"]},"prefix":{"type":"string","maxLength":32},"role":{"enum":["platform_holder_user","recipient"]},"scopes":{"type":"array","items":{"type":"string","maxLength":80}},"status":{"enum":["active","revoked","expired"]},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"revokedAt":{"type":["string","null"]}},"required":["id","name","kind","prefix","role","scopes","status","createdAt","expiresAt","revokedAt"],"additionalProperties":false}},"nextPageToken":{"type":["string","null"]}},"required":["items","nextPageToken"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"operationId":"createApiKey","summary":"Issue a full or restricted API key","description":"Requires the real owner's browser session with same-origin CSRF protection. Full means all ordinary rights within the current role and own tenant; never god-user rights. Restricted scopes use an explicit allowlist and cannot administer keys. Expiry is mandatory, at most 365 days. The secret is returned exactly once; store it in your secret manager. API keys cannot mint other keys.\n\nRequired role: `either`. An active regular identity is required. This operation requires an authenticated browser session; bearer credentials cannot perform it. Available during platform-holder onboarding.","tags":["Access"],"security":[{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"either","x-dont4get-scope":"","x-dont4get-session-only":true,"x-dont4get-bearer-only":false,"parameters":[{"name":"X-Dont4get-CSRF","in":"header","required":true,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":100,"minLength":1},"kind":{"enum":["full","restricted"]},"scopes":{"type":"array","minItems":1,"maxItems":30,"uniqueItems":true,"items":{"type":"string","maxLength":80}},"expiresAt":{"type":"string","format":"date-time"}},"required":["name","kind","expiresAt"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"name":{"type":"string","maxLength":100},"kind":{"enum":["full","restricted"]},"prefix":{"type":"string","maxLength":32},"role":{"enum":["platform_holder_user","recipient"]},"scopes":{"type":"array","items":{"type":"string","maxLength":80}},"status":{"enum":["active","revoked","expired"]},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"revokedAt":{"type":["string","null"]}},"required":["id","name","kind","prefix","role","scopes","status","createdAt","expiresAt","revokedAt"],"additionalProperties":false},"secret":{"type":"string","maxLength":120}},"required":["key","secret"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/api-keys/{keyId}":{"delete":{"operationId":"revokeApiKey","summary":"Revoke one of your API keys","description":"Idempotent logical revocation; audit history is retained. Previously issued credentials fail on their next request. A full key can revoke its own actor's keys but cannot create new credentials.\n\nRequired role: `either`. Required scope: `api-keys:revoke`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Access"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"either","x-dont4get-scope":"api-keys:revoke","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"keyId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"name":{"type":"string","maxLength":100},"kind":{"enum":["full","restricted"]},"prefix":{"type":"string","maxLength":32},"role":{"enum":["platform_holder_user","recipient"]},"scopes":{"type":"array","items":{"type":"string","maxLength":80}},"status":{"enum":["active","revoked","expired"]},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"revokedAt":{"type":["string","null"]}},"required":["id","name","kind","prefix","role","scopes","status","createdAt","expiresAt","revokedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/interface-locale":{"get":{"operationId":"getHolderInterfaceLocale","summary":"Eigen interfacetaal lezen","description":"Leest de persistente taalvoorkeur van de actor achter deze sessie of API-sleutel en de toegestane taalidentificaties. Dit is de gebruikersvoorkeur; defaultLocale in het organisatieprofiel is een aparte standaard voor afspraken.\n\nRequired role: `platform_holder_user`. Required scope: `profile:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"profile:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"locale":{"anyOf":[{"enum":["en","es","zh-Hans","zh-Hant","hi","ar","fr","pt","bn","ru","ur","id","de","ja","tr","vi","ko","fa","sw","ta","pa-Guru","bg","hr","cs","da","nl","et","fi","el","hu","ga","it","lv","lt","mt","pl","ro","sk","sl","sv","pap-CW","pap-AW","pap-BQ"]},{"type":"null"}]},"supportedLocales":{"type":"array","items":{"enum":["en","es","zh-Hans","zh-Hant","hi","ar","fr","pt","bn","ru","ur","id","de","ja","tr","vi","ko","fa","sw","ta","pa-Guru","bg","hr","cs","da","nl","et","fi","el","hu","ga","it","lv","lt","mt","pl","ro","sk","sl","sv","pap-CW","pap-AW","pap-BQ"]}}},"required":["locale","supportedLocales"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"operationId":"updateHolderInterfaceLocale","summary":"Eigen interfacetaal opslaan","description":"Bewaart uitsluitend de taalvoorkeur van de geauthenticeerde actor. Gebruik een canonieke taalcode uit GET interface-locale, bijvoorbeeld nl of en. De API wijzigt geen actieve browsercookies; een bestaande websessie kan herladen of opnieuw aanmelden vereisen om de persistente voorkeur over te nemen.\n\nRequired role: `platform_holder_user`. Required scope: `profile:write`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"profile:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locale":{"enum":["en","es","zh-Hans","zh-Hant","hi","ar","fr","pt","bn","ru","ur","id","de","ja","tr","vi","ko","fa","sw","ta","pa-Guru","bg","hr","cs","da","nl","et","fi","el","hu","ga","it","lv","lt","mt","pl","ro","sk","sl","sv","pap-CW","pap-AW","pap-BQ"]}},"required":["locale"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"locale":{"enum":["en","es","zh-Hans","zh-Hant","hi","ar","fr","pt","bn","ru","ur","id","de","ja","tr","vi","ko","fa","sw","ta","pa-Guru","bg","hr","cs","da","nl","et","fi","el","hu","ga","it","lv","lt","mt","pl","ro","sk","sl","sv","pap-CW","pap-AW","pap-BQ"]}},"required":["locale"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/companies/search":{"post":{"operationId":"searchHolderCompanies","summary":"Bedrijfsgegevens zoeken voor onboarding","description":"Zoekt bij de bestaande Nederlandse bedrijfsgegevensprovider op naam, KvK-nummer of adres. Lever een unieke lowercase requestId (UUID) voor elke bewuste opzoekactie. De server bewaart running/terminal voortgang vóór de provideroproep. Poll GET companies/progress parallel. Hergebruik van de laatste requestId geeft 429 en veroorzaakt geen dubbele provideroproep; resultaten worden niet als zoekhistorie opgeslagen. Telefoonnummers worden niet teruggegeven.\n\nRequired role: `platform_holder_user`. Required scope: `company:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"company:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$"},"search":{"oneOf":[{"type":"object","properties":{"mode":{"const":"name"},"name":{"type":"string","minLength":2,"maxLength":160}},"required":["mode","name"],"additionalProperties":false},{"type":"object","properties":{"mode":{"const":"kvk"},"kvk":{"type":"string","pattern":"^[0-9]{8}$"}},"required":["mode","kvk"],"additionalProperties":false},{"type":"object","properties":{"mode":{"const":"address"},"postalCode":{"type":"string","maxLength":10},"houseNumber":{"type":"string","maxLength":12}},"required":["mode","postalCode","houseNumber"],"additionalProperties":false}]}},"required":["requestId","search"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"companies":{"type":"array","maxItems":10,"items":{"type":"object","properties":{"duns":{"type":"string","pattern":"^[0-9]{9}$"},"primaryName":{"type":"string","maxLength":500},"tradeNames":{"type":"array","items":{"type":"string","maxLength":500}},"registrationNumber":{"type":"string","maxLength":500},"address":{"type":"string","maxLength":500},"postalCode":{"type":"string","maxLength":500},"city":{"type":"string","maxLength":500},"countryCode":{"const":"NL"}},"required":["duns","primaryName","tradeNames","registrationNumber","address","postalCode","city","countryCode"],"additionalProperties":false}},"retrievedAt":{"type":"string","format":"date-time"}},"required":["companies","retrievedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/companies/progress":{"get":{"operationId":"getHolderCompanyProgress","summary":"Voortgang bedrijfsopzoeking lezen","description":"Toont uitsluitend de meest recente opzoekactie van de eigen actor, gedeeld met diens web-onboarding. Poll tijdens search/detail; na 20 seconden zonder heartbeat verschijnt stalled en na 30 seconden timed_out. Er worden geen zoektermen of resultaten opgeslagen in deze status. Een nieuwe requestId kan na een terminale status opnieuw proberen.\n\nRequired role: `platform_holder_user`. Required scope: `company:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"company:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"progress":{"anyOf":[{"type":"null"},{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$"},"status":{"enum":["running","completed","failed","stalled","timed_out"]},"phase":{"enum":["search","detail"]},"startedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","maxLength":500},"errorCode":{"type":"string","maxLength":500}},"required":["requestId","status","phase","startedAt","updatedAt","completedAt","errorCode"],"additionalProperties":false}]}},"required":["progress"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/companies/{duns}":{"post":{"operationId":"getHolderCompany","summary":"Geselecteerde bedrijfsgegevens ophalen","description":"Leest geminimaliseerde Nederlandse bedrijfsgegevens met registratie, adres en gevalideerde branchecodes. POST start een provideroproep met duurzame voortgang; geef een nieuwe requestId in JSON en poll companies/progress. De gebruiker kiest en controleert gegevens voordat de implementatie ze via PATCH profiel opslaat; een branchevoorstel activeert geen organisatie.\n\nRequired role: `platform_holder_user`. Required scope: `company:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"company:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"duns","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$"}},"required":["requestId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"company":{"type":"object","properties":{"duns":{"type":"string","pattern":"^[0-9]{9}$"},"primaryName":{"type":"string","maxLength":500},"primaryAddress":{"type":"object","properties":{"line1":{"type":"string","maxLength":500},"line2":{"type":"string","maxLength":500},"postalCode":{"type":"string","maxLength":500},"city":{"type":"string","maxLength":500},"countryCode":{"const":"NL"}},"required":["line1","line2","postalCode","city","countryCode"],"additionalProperties":false},"registrationNumbers":{"type":"array","items":{"type":"object","properties":{"number":{"type":"string","maxLength":500},"type":{"const":"KvK"}},"required":["number","type"],"additionalProperties":false}},"industryCodes":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","maxLength":500},"label":{"type":"string","maxLength":500},"type":{"type":"string","maxLength":500},"priority":{"type":["integer","null"],"minimum":1}},"required":["code","label","type","priority"],"additionalProperties":false}},"retrievedAt":{"type":"string","format":"date-time"}},"required":["duns","primaryName","primaryAddress","registrationNumbers","industryCodes","retrievedAt"],"additionalProperties":false}},"required":["company"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}":{"get":{"operationId":"getHolderProfile","summary":"Eigen organisatieprofiel lezen","description":"Leest uitsluitend de organisatie waaraan de identiteit of API-sleutel is gekoppeld. Status en activeringsdatums zijn alleen-lezen; god-user beheer, andere tenants en impersonatie worden niet beschikbaar gesteld.\n\nRequired role: `platform_holder_user`. Required scope: `profile:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"profile:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"billingEmail":{"type":"string","anyOf":[{"const":""},{"format":"email"}],"maxLength":254},"branch":{"enum":["","Horeca","Zakelijke dienstverlening","Ziekenhuizen","Zorg"]},"communicationInboxEmail":{"type":"string","anyOf":[{"const":""},{"format":"email"}],"maxLength":254},"defaultLocale":{"type":"string","maxLength":35},"defaultTimezone":{"type":"string","maxLength":80},"displayName":{"type":"string","maxLength":200},"legalName":{"type":"string","maxLength":200},"financialContactName":{"type":"string","maxLength":500},"financialContactPhoneNumber":{"type":"string","maxLength":40},"generalContactName":{"type":"string","maxLength":500},"headquartersAddressLine1":{"type":"string","maxLength":500},"headquartersCountryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"headquartersPlace":{"type":"string","maxLength":500},"headquartersPostalCode":{"type":"string","maxLength":40},"registrationCountryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"registrationNumber":{"type":"string","maxLength":100},"socialFacebook":{"type":"string","maxLength":2048},"socialInstagram":{"type":"string","maxLength":2048},"schedulingSetup":{"anyOf":[{"type":"object","properties":{"locations":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"name":{"type":"string","minLength":1,"maxLength":120},"personCount":{"type":"integer","minimum":0,"maximum":1000},"roomCount":{"type":"integer","minimum":0,"maximum":1000}},"required":["id","name","personCount","roomCount"],"additionalProperties":false}}},"required":["locations"],"additionalProperties":false},{"type":"null"}],"description":"Current stored onboarding inventory; null means no inventory has been supplied. Named scheduling resources and availability are configured separately."},"socialLinkedIn":{"type":"string","maxLength":2048},"taxNumber":{"type":"string","maxLength":100},"websiteUrl":{"type":"string","maxLength":2048},"whatsappNumber":{"type":"string","maxLength":40},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"status":{"enum":["draft","active","suspended","deleted"]},"activeFrom":{"type":"string","maxLength":500},"activeUntil":{"type":"string","maxLength":500}},"required":["billingEmail","branch","communicationInboxEmail","defaultLocale","defaultTimezone","displayName","legalName","financialContactName","financialContactPhoneNumber","generalContactName","headquartersAddressLine1","headquartersCountryCode","headquartersPlace","headquartersPostalCode","registrationCountryCode","registrationNumber","socialFacebook","socialInstagram","schedulingSetup","socialLinkedIn","taxNumber","websiteUrl","whatsappNumber","id","status","activeFrom","activeUntil"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"operationId":"updateHolderProfile","summary":"Eigen organisatieprofiel bijwerken","description":"Gedeeltelijke profielwijziging met dezelfde telefoonnormalisatie als onboarding. Onbekende velden en lifecycle-, rol-, tenant- en facturatiecontractvelden worden afgewezen. Niet-opgegeven profielvelden blijven behouden. Geen aanmaak van andere organisaties.\n\nRequired role: `platform_holder_user`. Required scope: `profile:write`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"profile:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"billingEmail":{"type":"string","anyOf":[{"const":""},{"format":"email"}],"maxLength":254},"branch":{"enum":["","Horeca","Zakelijke dienstverlening","Ziekenhuizen","Zorg"]},"communicationInboxEmail":{"type":"string","anyOf":[{"const":""},{"format":"email"}],"maxLength":254},"defaultLocale":{"type":"string","maxLength":35},"defaultTimezone":{"type":"string","maxLength":80},"displayName":{"type":"string","maxLength":200},"legalName":{"type":"string","maxLength":200},"financialContactName":{"type":"string","maxLength":500},"financialContactPhoneNumber":{"type":"string","maxLength":40},"generalContactName":{"type":"string","maxLength":500},"headquartersAddressLine1":{"type":"string","maxLength":500},"headquartersCountryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"headquartersPlace":{"type":"string","maxLength":500},"headquartersPostalCode":{"type":"string","maxLength":40},"registrationCountryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"registrationNumber":{"type":"string","maxLength":100},"socialFacebook":{"type":"string","maxLength":2048},"socialInstagram":{"type":"string","maxLength":2048},"schedulingSetup":{"type":"object","properties":{"locations":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"name":{"type":"string","minLength":1,"maxLength":120},"personCount":{"type":"integer","minimum":0,"maximum":1000},"roomCount":{"type":"integer","minimum":0,"maximum":1000}},"required":["id","name","personCount","roomCount"],"additionalProperties":false}}},"required":["locations"],"additionalProperties":false,"description":"Complete tenant inventory for selector eligibility only. Location IDs must be unique. Omission preserves existing inventory; locations=[] explicitly records none. Counts do not create named scheduling resources or booking capacity."},"socialLinkedIn":{"type":"string","maxLength":2048},"taxNumber":{"type":"string","maxLength":100},"websiteUrl":{"type":"string","maxLength":2048},"whatsappNumber":{"type":"string","maxLength":40}},"required":[],"additionalProperties":false,"minProperties":1}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"billingEmail":{"type":"string","anyOf":[{"const":""},{"format":"email"}],"maxLength":254},"branch":{"enum":["","Horeca","Zakelijke dienstverlening","Ziekenhuizen","Zorg"]},"communicationInboxEmail":{"type":"string","anyOf":[{"const":""},{"format":"email"}],"maxLength":254},"defaultLocale":{"type":"string","maxLength":35},"defaultTimezone":{"type":"string","maxLength":80},"displayName":{"type":"string","maxLength":200},"legalName":{"type":"string","maxLength":200},"financialContactName":{"type":"string","maxLength":500},"financialContactPhoneNumber":{"type":"string","maxLength":40},"generalContactName":{"type":"string","maxLength":500},"headquartersAddressLine1":{"type":"string","maxLength":500},"headquartersCountryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"headquartersPlace":{"type":"string","maxLength":500},"headquartersPostalCode":{"type":"string","maxLength":40},"registrationCountryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"registrationNumber":{"type":"string","maxLength":100},"socialFacebook":{"type":"string","maxLength":2048},"socialInstagram":{"type":"string","maxLength":2048},"schedulingSetup":{"anyOf":[{"type":"object","properties":{"locations":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"name":{"type":"string","minLength":1,"maxLength":120},"personCount":{"type":"integer","minimum":0,"maximum":1000},"roomCount":{"type":"integer","minimum":0,"maximum":1000}},"required":["id","name","personCount","roomCount"],"additionalProperties":false}}},"required":["locations"],"additionalProperties":false},{"type":"null"}],"description":"Current stored onboarding inventory; null means no inventory has been supplied. Named scheduling resources and availability are configured separately."},"socialLinkedIn":{"type":"string","maxLength":2048},"taxNumber":{"type":"string","maxLength":100},"websiteUrl":{"type":"string","maxLength":2048},"whatsappNumber":{"type":"string","maxLength":40},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"status":{"enum":["draft","active","suspended","deleted"]},"activeFrom":{"type":"string","maxLength":500},"activeUntil":{"type":"string","maxLength":500}},"required":["billingEmail","branch","communicationInboxEmail","defaultLocale","defaultTimezone","displayName","legalName","financialContactName","financialContactPhoneNumber","generalContactName","headquartersAddressLine1","headquartersCountryCode","headquartersPlace","headquartersPostalCode","registrationCountryCode","registrationNumber","socialFacebook","socialInstagram","schedulingSetup","socialLinkedIn","taxNumber","websiteUrl","whatsappNumber","id","status","activeFrom","activeUntil"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/onboarding/complete":{"post":{"operationId":"completeHolderOnboarding","summary":"Eigen onboarding afronden","description":"Activeert alleen een bestaande conceptorganisatie na servervalidatie van naam, website, contactadressen, branche en een actieve, door Stripe bevestigde betaalmethode. Een geschorste of verwijderde organisatie kan niet worden geactiveerd. Sla het profiel eerst op via PATCH; stuur hier een leeg object.\n\nRequired role: `platform_holder_user`. Required scope: `onboarding:complete`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"onboarding:complete","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"billingEmail":{"type":"string","anyOf":[{"const":""},{"format":"email"}],"maxLength":254},"branch":{"enum":["","Horeca","Zakelijke dienstverlening","Ziekenhuizen","Zorg"]},"communicationInboxEmail":{"type":"string","anyOf":[{"const":""},{"format":"email"}],"maxLength":254},"defaultLocale":{"type":"string","maxLength":35},"defaultTimezone":{"type":"string","maxLength":80},"displayName":{"type":"string","maxLength":200},"legalName":{"type":"string","maxLength":200},"financialContactName":{"type":"string","maxLength":500},"financialContactPhoneNumber":{"type":"string","maxLength":40},"generalContactName":{"type":"string","maxLength":500},"headquartersAddressLine1":{"type":"string","maxLength":500},"headquartersCountryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"headquartersPlace":{"type":"string","maxLength":500},"headquartersPostalCode":{"type":"string","maxLength":40},"registrationCountryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"registrationNumber":{"type":"string","maxLength":100},"socialFacebook":{"type":"string","maxLength":2048},"socialInstagram":{"type":"string","maxLength":2048},"schedulingSetup":{"anyOf":[{"type":"object","properties":{"locations":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"name":{"type":"string","minLength":1,"maxLength":120},"personCount":{"type":"integer","minimum":0,"maximum":1000},"roomCount":{"type":"integer","minimum":0,"maximum":1000}},"required":["id","name","personCount","roomCount"],"additionalProperties":false}}},"required":["locations"],"additionalProperties":false},{"type":"null"}],"description":"Current stored onboarding inventory; null means no inventory has been supplied. Named scheduling resources and availability are configured separately."},"socialLinkedIn":{"type":"string","maxLength":2048},"taxNumber":{"type":"string","maxLength":100},"websiteUrl":{"type":"string","maxLength":2048},"whatsappNumber":{"type":"string","maxLength":40},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"status":{"enum":["draft","active","suspended","deleted"]},"activeFrom":{"type":"string","maxLength":500},"activeUntil":{"type":"string","maxLength":500}},"required":["billingEmail","branch","communicationInboxEmail","defaultLocale","defaultTimezone","displayName","legalName","financialContactName","financialContactPhoneNumber","generalContactName","headquartersAddressLine1","headquartersCountryCode","headquartersPlace","headquartersPostalCode","registrationCountryCode","registrationNumber","socialFacebook","socialInstagram","schedulingSetup","socialLinkedIn","taxNumber","websiteUrl","whatsappNumber","id","status","activeFrom","activeUntil"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/billing":{"get":{"operationId":"getHolderBilling","summary":"Betaalmethode en voortgang lezen","description":"Poll dit endpoint tijdens betaalinrichting. Retourneert de opgeslagen Stripe-status en veilige voortgang; geen klant-, mandaat-, betaalmethode-ID's, tarievenbeheer of incasso-acties. Pending kan gebruikersactie bij Stripe vereisen.\n\nRequired role: `platform_holder_user`. Required scope: `billing:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"billing:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"configured":{"type":"boolean"},"profile":{"anyOf":[{"type":"null"},{"type":"object","properties":{"status":{"enum":["not_configured","pending","active","failed"]},"phase":{"type":"string","maxLength":500},"paymentMethodType":{"enum":["card","sepa_debit",null]},"startedAt":{"type":["string","null"]},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"]},"errorCode":{"type":["string","null"]}},"required":["status","phase","paymentMethodType","startedAt","updatedAt","completedAt","errorCode"],"additionalProperties":false}]}},"required":["configured","profile"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/billing/checkout":{"post":{"operationId":"startHolderBillingCheckout","summary":"Stripe betaalinrichting starten","description":"Maakt via de bestaande Stripe setup-flow een beveiligde checkout-URL. Vereist expliciete toestemming voor toekomstige maandelijkse incasso's. De klant voltooit de betaalinrichting interactief bij Stripe; de webhook bepaalt de uiteindelijke status. Leest de terugkeer-URL uit de canonieke applicatieconfiguratie.\n\nRequired role: `platform_holder_user`. Required scope: `billing:write`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"billing:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"consentAccepted":{"const":true}},"required":["consentAccepted"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"status":{"const":"pending"}},"required":["url","status"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/integrations":{"get":{"operationId":"listHolderIntegrations","summary":"Beschikbare koppelingen en eigen status","description":"Toont de catalogus voor het registratieland van de eigen organisatie plus de opgeslagen verbindingsstatus. Geplande koppelingen blijven herkenbaar als gepland. OAuth-tokens, integratiegeheimen en god-user catalogusbeheer worden nooit teruggegeven.\n\nRequired role: `platform_holder_user`. Required scope: `integrations:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"integrations:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":500},"name":{"type":"string","maxLength":500},"category":{"type":"string","maxLength":500},"connectionStatus":{"type":"string","maxLength":500},"approvalStatus":{"type":"string","maxLength":500},"dataScope":{"type":"string","maxLength":500},"defaultScopes":{"type":"array","items":{"type":"string","maxLength":500}},"canAuthorize":{"type":"boolean"},"status":{"type":"string","maxLength":500},"connectedAt":{"type":["string","null"]},"updatedAt":{"type":["string","null"]},"syncHealth":{"type":["string","null"]}},"required":["id","name","category","connectionStatus","approvalStatus","dataScope","defaultScopes","canAuthorize","status"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/integrations/{providerKey}/authorize":{"post":{"operationId":"authorizeHolderIntegration","summary":"Agenda-autorisatie starten","description":"Geeft de bestaande Google Calendar of Microsoft 365 OAuth-autorisatie-URL met ondertekende tenantgebonden state. Open deze URL voor menselijke toestemming; poll daarna GET integrations. Verbindt alleen de eigen tenant, met bestaande alleen-lezen providerscopes. Andere catalogusproviders zijn nog niet aansluitbaar.\n\nRequired role: `platform_holder_user`. Required scope: `integrations:write`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"integrations:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"providerKey","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"status":{"const":"requires_authorization"}},"required":["url","status"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointments":{"get":{"operationId":"listHolderAppointments","summary":"Eigen afspraken lezen","description":"Gepagineerde afspraken uit uitsluitend de eigen tenant. Resultaten bevatten expliciet toegestane afspraakvelden en geen integratiegeheimen, matchingdetails of contactgegevens. Gebruik de intake-API om afspraken vanuit een bronsysteem aan te leveren.\n\nRequired role: `platform_holder_user`. Required scope: `appointments:read`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointments:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"pageSize","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$","description":"Default 25, maximum 100."}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string","maxLength":4096}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"recipientId":{"type":["string","null"]},"title":{"type":"string","maxLength":500},"startsAt":{"type":["string","null"]},"endsAt":{"type":["string","null"]},"timezone":{"type":"string","maxLength":500},"status":{"type":"string","maxLength":500},"locationText":{"type":["string","null"]},"locationId":{"type":["string","null"]},"organizationId":{"type":["string","null"]},"appointmentTypeId":{"type":["string","null"]},"recipientConfirmationStatus":{"type":"string","maxLength":500},"sourceAppointmentState":{"type":"string","maxLength":500},"createdAt":{"type":["string","null"]},"updatedAt":{"type":["string","null"]}},"required":["id","platformHolderId","title","status"],"additionalProperties":false}},"nextPageToken":{"type":["string","null"]}},"required":["items","nextPageToken"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"operationId":"createHolderAppointment","summary":"Een eigen platformafspraak aanmaken","description":"Maakt een lokale afspraak voor de eigen actieve organisatie na concrete menselijke bevestiging. Handmatige invoer en een bevestigd assistentvoorstel gebruiken dezelfde servervalidatie, ontvangerverwerking en atomaire capaciteitscontrole. clientRequestId is een lowercase UUID voor één bewuste aanmaak; identieke retries hergebruiken deze ID, een gewijzigd voorstel gebruikt een nieuwe ID. Een retry bewaart latere verplaatsing of annulering en leest de opgeslagen bezorgstatus zonder de provideroproep opnieuw te starten. Tenant, actor en bronidentiteit worden uitsluitend server-side bepaald. Een actief eigen afspraaktype is verplicht. resourceIds bevat expliciet gekozen medewerkers en ruimten; schedulingLocationId is de gekozen planningslocatie. De API kan een appuitnodiging of sms sturen: controleer delivery.status afzonderlijk. Geef geen medische, financiële of andere gevoelige toelichting in title of locationText. Een model mag confirmedByHuman niet zelf invullen; bevestiging hoort bij de menselijke applicatie-interface. Deze API wijzigt geen externe agenda.\n\nRequired role: `platform_holder_user`. Required scope: `appointments:write`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointments:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$","description":"Lowercase UUID voor één bewuste aanmaak. Identieke retries hergebruiken deze waarde; gewijzigde gegevens vereisen een nieuwe ID."},"confirmedByHuman":{"const":true},"appointmentTypeId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"timezone":{"type":"string","maxLength":100,"minLength":1},"resourceIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":10,"description":"Explicit person and room scheduling-resource IDs in this tenant. Omission preserves an existing appointment's allocation; it cannot disable the retained appointment-type policy."},"schedulingLocationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$","description":"Explicit tenant scheduling location. This is distinct from the existing source locationId and is never inferred from locationText or component values."},"locationText":{"type":"string","maxLength":500},"title":{"type":"string","maxLength":200},"componentData":{"type":"object","maxProperties":150,"additionalProperties":false,"description":"Optional actual recipient component values keyed by the canonical catalog field key. Core appointment dates, title, own recipient identity and derived map are authoritative elsewhere. Internal notes, raw IDs, privacy and provider data are prohibited. This payload does not grant action permissions.","properties":{"shortDescription":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"referenceNumber":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"publicReference":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.addressLine1":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.addressLine2":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.floor":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.room":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.entrance":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.onlineProvider":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.meetingCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"serviceName":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"unit":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.name":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.productCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.doseUnit":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.dosageForm":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.administrationRoute":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.mealRelation":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.missedReason":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"hospitality.tablePreference":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"hospitality.occasion":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"business.caseReference":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"business.subject":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"business.customerReference":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"cancellationReasonCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"outcomeCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.name":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.city":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.region":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"description":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.accessInstructions":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.lateReasonText":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"instructions.before":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"instructions.after":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recipientNotes":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.instructions":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"cancellationReasonText":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"outcomeNotes":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.postalCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":32,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"priority":{"anyOf":[{"type":"string","enum":["low","normal","high","urgent"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.type":{"anyOf":[{"type":"string","enum":["date","date_time","time_window","deadline","recurring"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.dayPart":{"anyOf":[{"type":"string","enum":["morning","afternoon","evening","night"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.flexibility":{"anyOf":[{"type":"string","enum":["fixed","flexible","approximate"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.frequency":{"anyOf":[{"type":"string","enum":["daily","weekly","monthly","yearly"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.endMode":{"anyOf":[{"type":"string","enum":["never","date","occurrence_count"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.weekOfMonth":{"anyOf":[{"type":"string","enum":["first","second","third","fourth","last"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.mode":{"anyOf":[{"type":"string","enum":["physical","online","telephone","unspecified"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"contactPreference":{"anyOf":[{"type":"string","enum":["app","email","phone"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.amountType":{"anyOf":[{"type":"string","enum":["service_fee","booking_fee","deposit","cancellation_fee","no_show_fee","other"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.taxMode":{"anyOf":[{"type":"string","enum":["included","excluded","exempt","out_of_scope"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.noShowFeeTaxMode":{"anyOf":[{"type":"string","enum":["included","excluded","exempt","out_of_scope"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.paymentStatus":{"anyOf":[{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.refundPolicy":{"anyOf":[{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.checkInMethod":{"anyOf":[{"type":"string","enum":["app","qr","kiosk","staff","geofence"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.status":{"anyOf":[{"type":"string","enum":["expected","arrived","on_time","late","no_show","excused"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.lateReasonCode":{"anyOf":[{"type":"string","enum":["traffic","public_transport","weather","illness","emergency","provider_delay","other","prefer_not_to_say"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.paymentRequired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"remindersEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"confirmationRequired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.canCancel":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.canReschedule":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.checkInRequired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.completionConfirmationRequired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.startDate":{"anyOf":[{"type":"string","format":"date","maxLength":10},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.endDate":{"anyOf":[{"type":"string","format":"date","maxLength":10},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.timeOfDay":{"anyOf":[{"type":"string","pattern":"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.windowStartsAt":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.windowEndsAt":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.dueAt":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.paymentDueAt":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"responseDeadline":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.arrivedAt":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.cancellationDeadline":{"anyOf":[{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"string","maxLength":100,"pattern":"^P(?=.+)(?:[0-9]+D)?(?:T(?=.+)(?:[0-9]+H)?(?:[0-9]+M)?(?:[0-9]+(?:\\.[0-9]+)?S)?)?$"}]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.rescheduleDeadline":{"anyOf":[{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"string","maxLength":100,"pattern":"^P(?=.+)(?:[0-9]+D)?(?:T(?=.+)(?:[0-9]+H)?(?:[0-9]+M)?(?:[0-9]+(?:\\.[0-9]+)?S)?)?$"}]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.actualDurationMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendeeCount":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"capacity":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"companionCount":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"preparationDurationMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"cleanupDurationMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.lateThresholdMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.latenessMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.intakeWindowMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"hospitality.partySize":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.interval":{"anyOf":[{"type":"integer","minimum":1,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.occurrenceCount":{"anyOf":[{"type":"integer","minimum":1,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.dayOfMonth":{"anyOf":[{"anyOf":[{"type":"integer","minimum":1,"maximum":31},{"const":"last"}]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.amountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.taxAmountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.discountAmountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.depositAmountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.cancellationFeeMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.noShowFeeMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.noShowFeeTaxAmountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.taxRate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.noShowFeeTaxRate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"quantity":{"anyOf":[{"type":"number","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.doseAmount":{"anyOf":[{"type":"number","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.onlineMeetingUrl":{"anyOf":[{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"termsUrl":{"anyOf":[{"anyOf":[{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},{"type":"string","maxLength":2000,"pattern":"^/(?!/)[^\\\\]*$"}],"description":"Stable same-origin relative path or external HTTPS URL; temporary deployment hosts are prohibited."},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"externalLinks":{"anyOf":[{"type":"array","items":{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},"maxItems":25,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.dialInNumber":{"anyOf":[{"type":"string","minLength":3,"maxLength":40,"pattern":"^[+0-9 ()-]+$"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.countryCode":{"anyOf":[{"type":"string","pattern":"^[A-Z]{2}$"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.currency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"tags":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"bringItems":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"accessibilityNeeds":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"languageSupport":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"hospitality.dietaryRequirements":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"business.agendaItems":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"notificationChannels":{"anyOf":[{"type":"array","items":{"type":"string","enum":["app","email","sms","push"]},"maxItems":4,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.daysOfWeek":{"anyOf":[{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.monthsOfYear":{"anyOf":[{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"maxItems":12,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"reminderOffsetsMinutes":{"anyOf":[{"type":"array","items":{"type":"integer","minimum":0,"maximum":525600},"maxItems":25,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.exceptionDates":{"anyOf":[{"type":"array","items":{"type":"string","format":"date","maxLength":10},"maxItems":200,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.inclusionDates":{"anyOf":[{"type":"array","items":{"type":"string","format":"date","maxLength":10},"maxItems":200,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"preparationChecklist":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"completed":{"type":"boolean"}},"required":["label","completed"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"hospitality.preOrder":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},"quantity":{"type":"number","minimum":0,"maximum":1000000}},"required":["label","quantity"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"participantRoles":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},"role":{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"}},"required":["label","role"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."}}},"recipient":{"type":"object","properties":{"displayName":{"type":"string","maxLength":200},"email":{"type":"string","format":"email","maxLength":254},"phoneCountryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phoneNumber":{"type":"string","maxLength":40},"phoneNumberE164":{"type":"string","pattern":"^\\+[1-9][0-9]{6,14}$"}},"required":[],"additionalProperties":false}},"required":["clientRequestId","confirmedByHuman","appointmentTypeId","startsAt","endsAt","timezone","resourceIds","recipient"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"appointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"delivery":{"type":"object","properties":{"channel":{"type":"string"},"status":{"type":"string"},"provider":{"type":"string"},"errorCode":{"type":"string"},"downloadUrl":{"type":"string"}},"required":["channel","status"],"additionalProperties":false},"recipientId":{"type":["string","null"]},"recipientMatch":{"type":["object","null"],"properties":{"created":{"type":"boolean"},"matchedBy":{"type":"string"}},"additionalProperties":false},"sourceAppointmentState":{"const":"definitive"},"status":{"const":"accepted"}},"required":["appointmentId","delivery","recipientId","recipientMatch","sourceAppointmentState","status"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointments/{appointmentId}":{"get":{"operationId":"getHolderAppointment","summary":"Eigen afspraak lezen","description":"Leest één afspraak binnen de tenant van de sleutel of sessie. Een afspraak uit een andere tenant is via dit pad niet bereikbaar.\n\nRequired role: `platform_holder_user`. Required scope: `appointments:read`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointments:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"recipientId":{"type":["string","null"]},"title":{"type":"string","maxLength":500},"startsAt":{"type":["string","null"]},"endsAt":{"type":["string","null"]},"timezone":{"type":"string","maxLength":500},"status":{"type":"string","maxLength":500},"locationText":{"type":["string","null"]},"locationId":{"type":["string","null"]},"organizationId":{"type":["string","null"]},"appointmentTypeId":{"type":["string","null"]},"recipientConfirmationStatus":{"type":"string","maxLength":500},"sourceAppointmentState":{"type":"string","maxLength":500},"createdAt":{"type":["string","null"]},"updatedAt":{"type":["string","null"]}},"required":["id","platformHolderId","title","status"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointment-types/catalog":{"get":{"operationId":"getHolderAppointmentTypeCatalog","summary":"Standaardtypen en veldcatalogus lezen","description":"Alleen-lezen standaardtypen voor eigen tenantpresets. platformHolderVisibleFieldKeys is de effectieve selectie na controle van de opgeslagen onboardinginventaris. configuredPlatformHolderVisibleFieldKeys behoudt de onderliggende keuze; disabledPlatformHolderFieldKeys noemt tijdelijk niet-toepasselijke keuzvelden. Een locatiekeuze vereist meerdere locaties; een medewerkerkeuze vereist meerdere personen op minstens één locatie. Verplichte gegevens blijven behouden, ook wanneer één vaste keuze geen zichtbaar veld nodig heeft. Ontvangersvelden en globale catalogus worden niet gewijzigd.\n\nRequired role: `platform_holder_user`. Required scope: `appointment-types:read`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointment-types:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"types":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","maxLength":500},"label":{"type":"string","maxLength":500},"description":{"type":"string","maxLength":500},"requiredFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"platformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"configuredPlatformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"disabledPlatformHolderFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"recipientVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}}},"required":["key","label","description","requiredFieldKeys","platformHolderVisibleFieldKeys","configuredPlatformHolderVisibleFieldKeys","disabledPlatformHolderFieldKeys","recipientVisibleFieldKeys"],"additionalProperties":false}},"fields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","maxLength":500},"label":{"type":"string","maxLength":500},"category":{"type":"string","maxLength":500},"dataType":{"type":"string","maxLength":500},"sensitivity":{"type":"string","maxLength":500}},"required":["key","label","category","dataType","sensitivity"],"additionalProperties":false}}},"required":["types","fields"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointment-types":{"get":{"operationId":"listHolderAppointmentTypes","summary":"Eigen afspraaktypen lezen","description":"Gepagineerde eigen presets, inclusief gearchiveerde typen zodat historische verwijzingen leesbaar blijven. De globale god-user catalogus blijft gescheiden.\n\nRequired role: `platform_holder_user`. Required scope: `appointment-types:read`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointment-types:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"pageSize","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$","description":"Default 25, maximum 100."}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string","maxLength":4096}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"baseTypeKey":{"enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"platformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Effective holder selection after current tenant inventory eligibility. Required underlying data can remain configured while a single-choice selector is hidden."},"recipientVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"schedulingPolicy":{"anyOf":[{"type":"object","properties":{"mode":{"enum":["unconstrained","resources"]},"personCount":{"type":"integer","minimum":0,"maximum":10},"roomCount":{"type":"integer","minimum":0,"maximum":10},"locationUnits":{"type":"integer","minimum":0,"maximum":100},"slotMinutes":{"type":"integer","minimum":1,"maximum":60},"bufferBeforeMinutes":{"type":"integer","minimum":0,"maximum":240},"bufferAfterMinutes":{"type":"integer","minimum":0,"maximum":240}},"required":["mode","personCount","roomCount","locationUnits","slotMinutes","bufferBeforeMinutes","bufferAfterMinutes"],"additionalProperties":false,"description":"Complete booking policy. personCount + roomCount must be at most 10. In unconstrained mode all resource counts and buffers must be zero. In resources mode at least one person, room or location unit is required. Cross-field rules are validated by the server."},{"type":"null"}]},"configuredPlatformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Persisted holder selection, including temporarily disabled choices. Send this value in the request's platformHolderVisibleFieldKeys when preserving all configured choices."},"disabledPlatformHolderFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Read-only selector eligibility derived from the authenticated tenant's stored onboarding inventory. Recipient selections are unaffected."},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"integer","minimum":1},"status":{"enum":["active","archived"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["baseTypeKey","label","description","platformHolderVisibleFieldKeys","recipientVisibleFieldKeys","schedulingPolicy","configuredPlatformHolderVisibleFieldKeys","disabledPlatformHolderFieldKeys","id","version","status","createdAt","updatedAt"],"additionalProperties":false}},"nextPageToken":{"type":["string","null"]}},"required":["items","nextPageToken"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"operationId":"createHolderAppointmentType","summary":"Eigen afspraaktype maken","description":"Maakt een tenantgebonden preset op basis van een bekend standaardtype. Verplichte velden blijven behouden; onbekende en dubbele veldnamen worden afgewezen. Een optionele volledige schedulingPolicy bepaalt personeels-, ruimte- en locatiecapaciteit, tijdslots en buffers voor nieuwe resourceboekingen. Zonder beleid blijft het bestaande type ongeconfigureerd. Een beperkte API-sleutel zonder appointment-types:write kan dit niet uitvoeren.\n\nRequired role: `platform_holder_user`. Required scope: `appointment-types:write`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointment-types:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"baseTypeKey":{"enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"platformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"recipientVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"schedulingPolicy":{"type":"object","properties":{"mode":{"enum":["unconstrained","resources"]},"personCount":{"type":"integer","minimum":0,"maximum":10},"roomCount":{"type":"integer","minimum":0,"maximum":10},"locationUnits":{"type":"integer","minimum":0,"maximum":100},"slotMinutes":{"type":"integer","minimum":1,"maximum":60},"bufferBeforeMinutes":{"type":"integer","minimum":0,"maximum":240},"bufferAfterMinutes":{"type":"integer","minimum":0,"maximum":240}},"required":["mode","personCount","roomCount","locationUnits","slotMinutes","bufferBeforeMinutes","bufferAfterMinutes"],"additionalProperties":false,"description":"Complete booking policy. personCount + roomCount must be at most 10. In unconstrained mode all resource counts and buffers must be zero. In resources mode at least one person, room or location unit is required. Cross-field rules are validated by the server."}},"required":["baseTypeKey","label","description","platformHolderVisibleFieldKeys","recipientVisibleFieldKeys"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"baseTypeKey":{"enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"platformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Effective holder selection after current tenant inventory eligibility. Required underlying data can remain configured while a single-choice selector is hidden."},"recipientVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"schedulingPolicy":{"anyOf":[{"type":"object","properties":{"mode":{"enum":["unconstrained","resources"]},"personCount":{"type":"integer","minimum":0,"maximum":10},"roomCount":{"type":"integer","minimum":0,"maximum":10},"locationUnits":{"type":"integer","minimum":0,"maximum":100},"slotMinutes":{"type":"integer","minimum":1,"maximum":60},"bufferBeforeMinutes":{"type":"integer","minimum":0,"maximum":240},"bufferAfterMinutes":{"type":"integer","minimum":0,"maximum":240}},"required":["mode","personCount","roomCount","locationUnits","slotMinutes","bufferBeforeMinutes","bufferAfterMinutes"],"additionalProperties":false,"description":"Complete booking policy. personCount + roomCount must be at most 10. In unconstrained mode all resource counts and buffers must be zero. In resources mode at least one person, room or location unit is required. Cross-field rules are validated by the server."},{"type":"null"}]},"configuredPlatformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Persisted holder selection, including temporarily disabled choices. Send this value in the request's platformHolderVisibleFieldKeys when preserving all configured choices."},"disabledPlatformHolderFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Read-only selector eligibility derived from the authenticated tenant's stored onboarding inventory. Recipient selections are unaffected."},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"integer","minimum":1},"status":{"enum":["active","archived"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["baseTypeKey","label","description","platformHolderVisibleFieldKeys","recipientVisibleFieldKeys","schedulingPolicy","configuredPlatformHolderVisibleFieldKeys","disabledPlatformHolderFieldKeys","id","version","status","createdAt","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointment-types/{appointmentTypeId}":{"get":{"operationId":"getHolderAppointmentType","summary":"Eigen afspraaktype lezen","description":"Leest een eigen tenantpreset met versie en archiefstatus.\n\nRequired role: `platform_holder_user`. Required scope: `appointment-types:read`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointment-types:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentTypeId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"baseTypeKey":{"enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"platformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Effective holder selection after current tenant inventory eligibility. Required underlying data can remain configured while a single-choice selector is hidden."},"recipientVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"schedulingPolicy":{"anyOf":[{"type":"object","properties":{"mode":{"enum":["unconstrained","resources"]},"personCount":{"type":"integer","minimum":0,"maximum":10},"roomCount":{"type":"integer","minimum":0,"maximum":10},"locationUnits":{"type":"integer","minimum":0,"maximum":100},"slotMinutes":{"type":"integer","minimum":1,"maximum":60},"bufferBeforeMinutes":{"type":"integer","minimum":0,"maximum":240},"bufferAfterMinutes":{"type":"integer","minimum":0,"maximum":240}},"required":["mode","personCount","roomCount","locationUnits","slotMinutes","bufferBeforeMinutes","bufferAfterMinutes"],"additionalProperties":false,"description":"Complete booking policy. personCount + roomCount must be at most 10. In unconstrained mode all resource counts and buffers must be zero. In resources mode at least one person, room or location unit is required. Cross-field rules are validated by the server."},{"type":"null"}]},"configuredPlatformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Persisted holder selection, including temporarily disabled choices. Send this value in the request's platformHolderVisibleFieldKeys when preserving all configured choices."},"disabledPlatformHolderFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Read-only selector eligibility derived from the authenticated tenant's stored onboarding inventory. Recipient selections are unaffected."},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"integer","minimum":1},"status":{"enum":["active","archived"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["baseTypeKey","label","description","platformHolderVisibleFieldKeys","recipientVisibleFieldKeys","schedulingPolicy","configuredPlatformHolderVisibleFieldKeys","disabledPlatformHolderFieldKeys","id","version","status","createdAt","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"operationId":"updateHolderAppointmentType","summary":"Eigen afspraaktype bijwerken","description":"Wijzigt label, toelichting, zichtbare velden of een volledige schedulingPolicy met optimistic concurrency. Geef de laatst gelezen expectedVersion mee; een verouderde versie geeft 409. Niet-opgegeven beleid blijft behouden; mode=unconstrained schakelt resourcevereisten expliciet uit. Bestaande afspraken behouden hun opgeslagen reservatie. Het basistype blijft behouden. Een gearchiveerd type kan niet worden aangepast.\n\nRequired role: `platform_holder_user`. Required scope: `appointment-types:write`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointment-types:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentTypeId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"platformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"recipientVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"schedulingPolicy":{"type":"object","properties":{"mode":{"enum":["unconstrained","resources"]},"personCount":{"type":"integer","minimum":0,"maximum":10},"roomCount":{"type":"integer","minimum":0,"maximum":10},"locationUnits":{"type":"integer","minimum":0,"maximum":100},"slotMinutes":{"type":"integer","minimum":1,"maximum":60},"bufferBeforeMinutes":{"type":"integer","minimum":0,"maximum":240},"bufferAfterMinutes":{"type":"integer","minimum":0,"maximum":240}},"required":["mode","personCount","roomCount","locationUnits","slotMinutes","bufferBeforeMinutes","bufferAfterMinutes"],"additionalProperties":false,"description":"Complete booking policy. personCount + roomCount must be at most 10. In unconstrained mode all resource counts and buffers must be zero. In resources mode at least one person, room or location unit is required. Cross-field rules are validated by the server."},"expectedVersion":{"type":"integer","minimum":1}},"required":["expectedVersion"],"additionalProperties":false,"minProperties":2}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"baseTypeKey":{"enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"platformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Effective holder selection after current tenant inventory eligibility. Required underlying data can remain configured while a single-choice selector is hidden."},"recipientVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"schedulingPolicy":{"anyOf":[{"type":"object","properties":{"mode":{"enum":["unconstrained","resources"]},"personCount":{"type":"integer","minimum":0,"maximum":10},"roomCount":{"type":"integer","minimum":0,"maximum":10},"locationUnits":{"type":"integer","minimum":0,"maximum":100},"slotMinutes":{"type":"integer","minimum":1,"maximum":60},"bufferBeforeMinutes":{"type":"integer","minimum":0,"maximum":240},"bufferAfterMinutes":{"type":"integer","minimum":0,"maximum":240}},"required":["mode","personCount","roomCount","locationUnits","slotMinutes","bufferBeforeMinutes","bufferAfterMinutes"],"additionalProperties":false,"description":"Complete booking policy. personCount + roomCount must be at most 10. In unconstrained mode all resource counts and buffers must be zero. In resources mode at least one person, room or location unit is required. Cross-field rules are validated by the server."},{"type":"null"}]},"configuredPlatformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Persisted holder selection, including temporarily disabled choices. Send this value in the request's platformHolderVisibleFieldKeys when preserving all configured choices."},"disabledPlatformHolderFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Read-only selector eligibility derived from the authenticated tenant's stored onboarding inventory. Recipient selections are unaffected."},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"integer","minimum":1},"status":{"enum":["active","archived"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["baseTypeKey","label","description","platformHolderVisibleFieldKeys","recipientVisibleFieldKeys","schedulingPolicy","configuredPlatformHolderVisibleFieldKeys","disabledPlatformHolderFieldKeys","id","version","status","createdAt","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"operationId":"archiveHolderAppointmentType","summary":"Eigen afspraaktype archiveren","description":"Archiveert een eigen preset, bewaart historische gegevens en weigert een verouderde expectedVersion. Dezelfde archiefaanvraag op een reeds gearchiveerd type is veilig herhaalbaar wanneer de actuele versie wordt gebruikt.\n\nRequired role: `platform_holder_user`. Required scope: `appointment-types:write`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointment-types:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentTypeId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"expectedVersion","in":"query","required":true,"schema":{"type":"string","pattern":"^[1-9][0-9]{0,8}$"}},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"baseTypeKey":{"enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":2000},"platformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Effective holder selection after current tenant inventory eligibility. Required underlying data can remain configured while a single-choice selector is hidden."},"recipientVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]}},"schedulingPolicy":{"anyOf":[{"type":"object","properties":{"mode":{"enum":["unconstrained","resources"]},"personCount":{"type":"integer","minimum":0,"maximum":10},"roomCount":{"type":"integer","minimum":0,"maximum":10},"locationUnits":{"type":"integer","minimum":0,"maximum":100},"slotMinutes":{"type":"integer","minimum":1,"maximum":60},"bufferBeforeMinutes":{"type":"integer","minimum":0,"maximum":240},"bufferAfterMinutes":{"type":"integer","minimum":0,"maximum":240}},"required":["mode","personCount","roomCount","locationUnits","slotMinutes","bufferBeforeMinutes","bufferAfterMinutes"],"additionalProperties":false,"description":"Complete booking policy. personCount + roomCount must be at most 10. In unconstrained mode all resource counts and buffers must be zero. In resources mode at least one person, room or location unit is required. Cross-field rules are validated by the server."},{"type":"null"}]},"configuredPlatformHolderVisibleFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Persisted holder selection, including temporarily disabled choices. Send this value in the request's platformHolderVisibleFieldKeys when preserving all configured choices."},"disabledPlatformHolderFieldKeys":{"type":"array","uniqueItems":true,"maxItems":154,"items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"description":"Read-only selector eligibility derived from the authenticated tenant's stored onboarding inventory. Recipient selections are unaffected."},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"integer","minimum":1},"status":{"enum":["active","archived"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["baseTypeKey","label","description","platformHolderVisibleFieldKeys","recipientVisibleFieldKeys","schedulingPolicy","configuredPlatformHolderVisibleFieldKeys","disabledPlatformHolderFieldKeys","id","version","status","createdAt","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointment-requests":{"get":{"operationId":"listHolderAppointmentRequests","summary":"Ontvangerverzoeken voor eigen afspraken lezen","description":"Leest gepagineerd bevestigings-, annulerings- en verplaatsingsverzoeken die bij deze platformhouder horen. De versie is een server-timestamp die bij beoordeling ongewijzigd moet worden teruggestuurd. Contactgegevens en interne verzoekfingerprints blijven verborgen.\n\nRequired role: `platform_holder_user`. Required scope: `appointment-requests:read`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointment-requests:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"pageSize","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$","description":"Default 25, maximum 100."}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string","maxLength":4096}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"string","format":"date-time"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"appointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"recipientId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"action":{"enum":["confirm","cancel","reschedule"]},"status":{"enum":["pending_review","approved","rejected","completed","failed"]},"proposedStartsAt":{"type":["string","null"]},"proposedEndsAt":{"type":["string","null"]},"reasonCode":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","version","platformHolderId","appointmentId","recipientId","action","status","proposedStartsAt","proposedEndsAt","reasonCode","createdAt","updatedAt"],"additionalProperties":false}},"nextPageToken":{"type":["string","null"]}},"required":["items","nextPageToken"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointment-requests/{recipientId}/{appointmentRequestId}/review":{"post":{"operationId":"reviewHolderAppointmentRequest","summary":"Ontvangerverzoek door een mens beoordelen","description":"Legt menselijke goedkeuring of afwijzing vast voor een eigen afspraakverzoek. confirmedByHuman=true bevestigt dat een bevoegde medewerker de beslissing heeft genomen. expectedVersion voorkomt overschrijven van een gelijktijdige beoordeling. Goedkeuring wijzigt de oorspronkelijke afspraak of externe agenda niet: sourceSynchronizationRequired=true betekent dat de implementerende partij de wijziging nog in het bronsysteem moet verwerken. Geen geautomatiseerde AI-beslissing.\n\nRequired role: `platform_holder_user`. Required scope: `appointment-requests:write`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointment-requests:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"recipientId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentRequestId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"enum":["approved","rejected"]},"confirmedByHuman":{"const":true},"expectedVersion":{"type":"string","format":"date-time"}},"required":["decision","confirmedByHuman","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"string","format":"date-time"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"appointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"recipientId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"action":{"enum":["confirm","cancel","reschedule"]},"status":{"enum":["pending_review","approved","rejected","completed","failed"]},"proposedStartsAt":{"type":["string","null"]},"proposedEndsAt":{"type":["string","null"]},"reasonCode":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"sourceSynchronizationRequired":{"type":"boolean"}},"required":["id","version","platformHolderId","appointmentId","recipientId","action","status","proposedStartsAt","proposedEndsAt","reasonCode","createdAt","updatedAt","sourceSynchronizationRequired"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/profile":{"get":{"operationId":"getRecipientProfile","summary":"Read your recipient profile","description":"The recipient is derived from the authenticated, active actor link. Contact details and identity links cannot be reassigned through this API.\n\nRequired role: `recipient`. Required scope: `recipient:profile:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:profile:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"displayName":{"type":"string","minLength":1,"maxLength":160},"preferredLocale":{"type":"string","minLength":2,"maxLength":35,"description":"Valid BCP 47 language tag, for example nl-NL."},"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Valid IANA timezone, for example Europe/Amsterdam."},"appStatus":{"type":"string","maxLength":40},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","displayName","preferredLocale","timezone","appStatus","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"operationId":"updateRecipientProfile","summary":"Update your recipient profile","description":"Updates only the explicitly supplied display name, locale and timezone. Unknown properties, identity fields and contact changes are rejected.\n\nRequired role: `recipient`. Required scope: `recipient:profile:write`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:profile:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":160},"preferredLocale":{"type":"string","minLength":2,"maxLength":35,"description":"Valid BCP 47 language tag, for example nl-NL."},"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Valid IANA timezone, for example Europe/Amsterdam."}},"required":[],"additionalProperties":false,"minProperties":1}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"displayName":{"type":"string","minLength":1,"maxLength":160},"preferredLocale":{"type":"string","minLength":2,"maxLength":35,"description":"Valid BCP 47 language tag, for example nl-NL."},"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Valid IANA timezone, for example Europe/Amsterdam."},"appStatus":{"type":"string","maxLength":40},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","displayName","preferredLocale","timezone","appStatus","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/preferences":{"get":{"operationId":"getRecipientPreferences","summary":"Read reminder and inbox preferences","description":"Returns persisted preferences, with conservative defaults when not previously configured. These express user preferences; they do not grant operating-system permissions, register a device or start inbox ingestion.\n\nRequired role: `recipient`. Required scope: `recipient:preferences:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:preferences:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"pushEnabled":{"type":"boolean"},"defaultNoticeMinutes":{"type":"integer","minimum":0,"maximum":10080},"followUpNoticeMinutes":{"type":"integer","minimum":0,"maximum":10080},"routeAwareEnabled":{"type":"boolean"},"routeProvider":{"type":"string","enum":["google_maps","apple_maps","waze"]},"travelMode":{"type":"string","enum":["driving","transit","cycling","walking"]},"tone":{"type":"string","enum":["calm_chime","clear_bell","urgent_ring","silent_vibration"]},"intensity":{"type":"string","enum":["gentle","standard","persistent"]},"vibrationEnabled":{"type":"boolean"},"notifyOnChanges":{"type":"boolean"},"inboxEnabled":{"type":"boolean"},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["pushEnabled","defaultNoticeMinutes","followUpNoticeMinutes","routeAwareEnabled","routeProvider","travelMode","tone","intensity","vibrationEnabled","notifyOnChanges","inboxEnabled","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"operationId":"updateRecipientPreferences","summary":"Update reminder and inbox preferences","description":"Persists the supplied preferences. Push delivery, location access, route estimation and inbox ingestion require separately configured services and device permissions; enabling a preference does not claim those services are active.\n\nRequired role: `recipient`. Required scope: `recipient:preferences:write`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:preferences:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pushEnabled":{"type":"boolean"},"defaultNoticeMinutes":{"type":"integer","minimum":0,"maximum":10080},"followUpNoticeMinutes":{"type":"integer","minimum":0,"maximum":10080},"routeAwareEnabled":{"type":"boolean"},"routeProvider":{"type":"string","enum":["google_maps","apple_maps","waze"]},"travelMode":{"type":"string","enum":["driving","transit","cycling","walking"]},"tone":{"type":"string","enum":["calm_chime","clear_bell","urgent_ring","silent_vibration"]},"intensity":{"type":"string","enum":["gentle","standard","persistent"]},"vibrationEnabled":{"type":"boolean"},"notifyOnChanges":{"type":"boolean"},"inboxEnabled":{"type":"boolean"}},"required":[],"additionalProperties":false,"minProperties":1}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"pushEnabled":{"type":"boolean"},"defaultNoticeMinutes":{"type":"integer","minimum":0,"maximum":10080},"followUpNoticeMinutes":{"type":"integer","minimum":0,"maximum":10080},"routeAwareEnabled":{"type":"boolean"},"routeProvider":{"type":"string","enum":["google_maps","apple_maps","waze"]},"travelMode":{"type":"string","enum":["driving","transit","cycling","walking"]},"tone":{"type":"string","enum":["calm_chime","clear_bell","urgent_ring","silent_vibration"]},"intensity":{"type":"string","enum":["gentle","standard","persistent"]},"vibrationEnabled":{"type":"boolean"},"notifyOnChanges":{"type":"boolean"},"inboxEnabled":{"type":"boolean"},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["pushEnabled","defaultNoticeMinutes","followUpNoticeMinutes","routeAwareEnabled","routeProvider","travelMode","tone","intensity","vibrationEnabled","notifyOnChanges","inboxEnabled","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/appointments":{"get":{"operationId":"listRecipientAppointments","summary":"List your appointments across platform holders","description":"The server filters on the stable recipient ID, never an email address or phone number. Returns a minimal recipient-visible projection; internal metadata, provider credentials, matching details and other recipients are excluded.\n\nRequired role: `recipient`. Required scope: `recipient:appointments:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:appointments:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"pageSize","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$","description":"Default 25, maximum 100."}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string","maxLength":4096}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"title":{"type":"string","maxLength":500},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":["string","null"],"format":"date-time"},"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Valid IANA timezone, for example Europe/Amsterdam."},"status":{"type":"string","maxLength":80},"locationText":{"type":["string","null"]},"recipientConfirmationStatus":{"type":"string","maxLength":80},"sourceAppointmentState":{"type":"string","maxLength":80},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","platformHolderId","title","startsAt","endsAt","timezone","status","locationText","recipientConfirmationStatus","sourceAppointmentState","updatedAt"],"additionalProperties":false}},"nextPageToken":{"type":["string","null"]}},"required":["items","nextPageToken"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/appointments/{platformHolderId}/{appointmentId}":{"get":{"operationId":"getRecipientAppointment","summary":"Read one of your appointments","description":"A platform-holder ID identifies the source; it does not grant access. Appointments belonging to another recipient return 404.\n\nRequired role: `recipient`. Required scope: `recipient:appointments:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:appointments:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"title":{"type":"string","maxLength":500},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":["string","null"],"format":"date-time"},"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Valid IANA timezone, for example Europe/Amsterdam."},"status":{"type":"string","maxLength":80},"locationText":{"type":["string","null"]},"recipientConfirmationStatus":{"type":"string","maxLength":80},"sourceAppointmentState":{"type":"string","maxLength":80},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","platformHolderId","title","startsAt","endsAt","timezone","status","locationText","recipientConfirmationStatus","sourceAppointmentState","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/appointments/{platformHolderId}/{appointmentId}/presentation":{"get":{"operationId":"getRecipientAppointmentPresentation","summary":"Read the current mobile presentation of your appointment","description":"Checks recipient ownership before resolving the same-holder appointment-type preset and current tenant/global layout. Defaults to the unchanged schema version 1 projection; schemaVersion=2 retains the existing map contract. Explicitly request schemaVersion=3 for allowlisted typed component values, saved component styles/icons, the Dont4get style guide and ordered one/two-column rows. Selected recipient components use real values or unavailable/null. Internal metadata, private notes and fictional preview content are never projected. Map destinations are validated data, not verified geocodes; current device location is never read or returned. Missing presets use general_appointment; storage failures or malformed configuration do not silently fall back. This read does not freeze a historical layout or grant action permissions.\n\nRequired role: `recipient`. Required scope: `recipient:appointments:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:appointments:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"schemaVersion","in":"query","required":false,"schema":{"type":"string","enum":["1","2","3"],"description":"Defaults to 1. Explicitly request 2 for the existing map contract or 3 for typed values, component styles, the style guide and paired rows."}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"oneOf":[{"type":"object","properties":{"schemaVersion":{"type":"integer","const":1},"appointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"typeKey":{"type":"string","enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Valid IANA timezone, for example Europe/Amsterdam."},"layoutSource":{"type":"string","enum":["tenant","global","built_in"]},"layoutVersion":{"type":"integer","minimum":1},"layoutMode":{"const":"current","description":"The current effective layout, not a historical appointment snapshot."},"components":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"fieldKey":{"type":"string","enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"label":{"type":"string","maxLength":200},"dataType":{"type":"string","enum":["string","text","string/reference","array<string>","enum: low | normal | high | urgent","reference","enum: date | date_time | time_window | deadline | recurring","IANA timezone","date","time","enum: morning | afternoon | evening | night","integer","datetime","enum: fixed | flexible | approximate","boolean","enum: daily | weekly | monthly | yearly","array<weekday>","integer/enum","enum","array<integer>","enum: never | date | occurrence_count","array<date>","enum: physical | online | telephone | unspecified","ISO 3166-1 alpha-2","decimal","enum/string","HTTPS URL","phone","email","E.164 phone","BCP 47 locale","array<reference>","map","integer in smallest currency unit","enum: service_fee | booking_fee | deposit | cancellation_fee | no_show_fee | other","ISO 4217 currency code","enum: included | excluded | exempt | out_of_scope","decimal fraction","array<enum>","datetime/duration","enum: app | qr | kiosk | staff | geofence","enum: expected | arrived | on_time | late | no_show | excused","integer/derived","enum: traffic | public_transport | weather | illness | emergency | provider_delay | other | prefer_not_to_say","array<object>","array<enum/string>","array<locale/string>","array<url>","url/reference","string/code","enum/code","reference/string","array<string/code>","enum/reference","enum: normal | personal | sensitive | special_category"]},"kind":{"type":"string","enum":["title","text","list","badge","action"]},"icon":{"type":"string","enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"type":"string","enum":["default","mint","pink"]},"availability":{"const":"available"},"value":{"anyOf":[{"type":"string","maxLength":5000},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string","maxLength":5000},"maxItems":200}]}},"required":["fieldKey","label","dataType","kind","icon","tone","availability","value"],"additionalProperties":false},{"type":"object","properties":{"fieldKey":{"type":"string","enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"label":{"type":"string","maxLength":200},"dataType":{"type":"string","enum":["string","text","string/reference","array<string>","enum: low | normal | high | urgent","reference","enum: date | date_time | time_window | deadline | recurring","IANA timezone","date","time","enum: morning | afternoon | evening | night","integer","datetime","enum: fixed | flexible | approximate","boolean","enum: daily | weekly | monthly | yearly","array<weekday>","integer/enum","enum","array<integer>","enum: never | date | occurrence_count","array<date>","enum: physical | online | telephone | unspecified","ISO 3166-1 alpha-2","decimal","enum/string","HTTPS URL","phone","email","E.164 phone","BCP 47 locale","array<reference>","map","integer in smallest currency unit","enum: service_fee | booking_fee | deposit | cancellation_fee | no_show_fee | other","ISO 4217 currency code","enum: included | excluded | exempt | out_of_scope","decimal fraction","array<enum>","datetime/duration","enum: app | qr | kiosk | staff | geofence","enum: expected | arrived | on_time | late | no_show | excused","integer/derived","enum: traffic | public_transport | weather | illness | emergency | provider_delay | other | prefer_not_to_say","array<object>","array<enum/string>","array<locale/string>","array<url>","url/reference","string/code","enum/code","reference/string","array<string/code>","enum/reference","enum: normal | personal | sensitive | special_category"]},"kind":{"type":"string","enum":["title","text","list","badge","action"]},"icon":{"type":"string","enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"type":"string","enum":["default","mint","pink"]},"availability":{"const":"unavailable"},"value":{"type":"null"}},"required":["fieldKey","label","dataType","kind","icon","tone","availability","value"],"additionalProperties":false}]},"maxItems":153,"description":"Recipient-visible components in the configured order. Unavailable values must be rendered honestly; never replace them with sample content."}},"required":["schemaVersion","appointmentId","platformHolderId","typeKey","timezone","layoutSource","layoutVersion","layoutMode","components"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"integer","const":2},"appointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"typeKey":{"type":"string","enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Valid IANA timezone, for example Europe/Amsterdam."},"layoutSource":{"type":"string","enum":["tenant","global","built_in"]},"layoutVersion":{"type":"integer","minimum":1},"layoutMode":{"const":"current","description":"The current effective layout, not a historical appointment snapshot."},"components":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"fieldKey":{"type":"string","enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"label":{"type":"string","maxLength":200},"dataType":{"type":"string","enum":["string","text","string/reference","array<string>","enum: low | normal | high | urgent","reference","enum: date | date_time | time_window | deadline | recurring","IANA timezone","date","time","enum: morning | afternoon | evening | night","integer","datetime","enum: fixed | flexible | approximate","boolean","enum: daily | weekly | monthly | yearly","array<weekday>","integer/enum","enum","array<integer>","enum: never | date | occurrence_count","array<date>","enum: physical | online | telephone | unspecified","ISO 3166-1 alpha-2","decimal","enum/string","HTTPS URL","phone","email","E.164 phone","BCP 47 locale","array<reference>","map","integer in smallest currency unit","enum: service_fee | booking_fee | deposit | cancellation_fee | no_show_fee | other","ISO 4217 currency code","enum: included | excluded | exempt | out_of_scope","decimal fraction","array<enum>","datetime/duration","enum: app | qr | kiosk | staff | geofence","enum: expected | arrived | on_time | late | no_show | excused","integer/derived","enum: traffic | public_transport | weather | illness | emergency | provider_delay | other | prefer_not_to_say","array<object>","array<enum/string>","array<locale/string>","array<url>","url/reference","string/code","enum/code","reference/string","array<string/code>","enum/reference","enum: normal | personal | sensitive | special_category"]},"kind":{"type":"string","enum":["title","text","list","badge","action"]},"icon":{"type":"string","enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"type":"string","enum":["default","mint","pink"]},"availability":{"const":"available"},"value":{"anyOf":[{"type":"string","maxLength":5000},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string","maxLength":5000},"maxItems":200}]}},"required":["fieldKey","label","dataType","kind","icon","tone","availability","value"],"additionalProperties":false},{"type":"object","properties":{"fieldKey":{"type":"string","enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"label":{"type":"string","maxLength":200},"dataType":{"type":"string","enum":["string","text","string/reference","array<string>","enum: low | normal | high | urgent","reference","enum: date | date_time | time_window | deadline | recurring","IANA timezone","date","time","enum: morning | afternoon | evening | night","integer","datetime","enum: fixed | flexible | approximate","boolean","enum: daily | weekly | monthly | yearly","array<weekday>","integer/enum","enum","array<integer>","enum: never | date | occurrence_count","array<date>","enum: physical | online | telephone | unspecified","ISO 3166-1 alpha-2","decimal","enum/string","HTTPS URL","phone","email","E.164 phone","BCP 47 locale","array<reference>","map","integer in smallest currency unit","enum: service_fee | booking_fee | deposit | cancellation_fee | no_show_fee | other","ISO 4217 currency code","enum: included | excluded | exempt | out_of_scope","decimal fraction","array<enum>","datetime/duration","enum: app | qr | kiosk | staff | geofence","enum: expected | arrived | on_time | late | no_show | excused","integer/derived","enum: traffic | public_transport | weather | illness | emergency | provider_delay | other | prefer_not_to_say","array<object>","array<enum/string>","array<locale/string>","array<url>","url/reference","string/code","enum/code","reference/string","array<string/code>","enum/reference","enum: normal | personal | sensitive | special_category"]},"kind":{"type":"string","enum":["title","text","list","badge","action"]},"icon":{"type":"string","enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"type":"string","enum":["default","mint","pink"]},"availability":{"const":"unavailable"},"value":{"type":"null"}},"required":["fieldKey","label","dataType","kind","icon","tone","availability","value"],"additionalProperties":false},{"type":"object","properties":{"fieldKey":{"const":"location.map"},"label":{"type":"string","maxLength":200},"dataType":{"const":"derived-map"},"kind":{"const":"map"},"icon":{"const":"pin"},"tone":{"const":"default"},"availability":{"const":"available"},"value":{"type":"object","properties":{"destination":{"oneOf":[{"type":"object","properties":{"name":{"type":["string","null"],"maxLength":200},"addressLine1":{"type":"string","minLength":1,"maxLength":500},"addressLine2":{"type":["string","null"],"maxLength":500},"postalCode":{"type":["string","null"],"maxLength":32},"city":{"type":["string","null"],"maxLength":200},"region":{"type":["string","null"],"maxLength":200},"countryCode":{"type":["string","null"],"pattern":"^[A-Z]{2}$"},"latitude":{"type":"null"},"longitude":{"type":"null"}},"required":["name","addressLine1","addressLine2","postalCode","city","region","countryCode","latitude","longitude"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":["string","null"],"maxLength":200},"addressLine1":{"type":"string","minLength":1,"maxLength":500},"addressLine2":{"type":["string","null"],"maxLength":500},"postalCode":{"type":["string","null"],"maxLength":32},"city":{"type":["string","null"],"maxLength":200},"region":{"type":["string","null"],"maxLength":200},"countryCode":{"type":["string","null"],"pattern":"^[A-Z]{2}$"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["name","addressLine1","addressLine2","postalCode","city","region","countryCode","latitude","longitude"],"additionalProperties":false}]},"currentLocationSource":{"const":"device"}},"required":["destination","currentLocationSource"],"additionalProperties":false}},"required":["fieldKey","label","dataType","kind","icon","tone","availability","value"],"additionalProperties":false},{"type":"object","properties":{"fieldKey":{"const":"location.map"},"label":{"type":"string","maxLength":200},"dataType":{"const":"derived-map"},"kind":{"const":"map"},"icon":{"const":"pin"},"tone":{"const":"default"},"availability":{"const":"unavailable"},"value":{"type":"null"}},"required":["fieldKey","label","dataType","kind","icon","tone","availability","value"],"additionalProperties":false}]},"maxItems":154,"description":"Recipient-visible components in the configured order. Unavailable values must be rendered honestly; never replace them with sample content."}},"required":["schemaVersion","appointmentId","platformHolderId","typeKey","timezone","layoutSource","layoutVersion","layoutMode","components"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"integer","const":3},"appointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"typeKey":{"type":"string","enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"timezone":{"type":"string","minLength":1,"maxLength":100,"description":"Valid IANA timezone, for example Europe/Amsterdam."},"layoutSource":{"type":"string","enum":["tenant","global","built_in"]},"layoutVersion":{"type":"integer","minimum":1},"layoutMode":{"const":"current","description":"The current effective layout, not a historical appointment snapshot."},"components":{"type":"array","items":{"type":"object","properties":{"fieldKey":{"type":"string","enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"label":{"type":"string","maxLength":200},"dataType":{"type":"string","enum":["string","text","string/reference","array<string>","enum: low | normal | high | urgent","reference","enum: date | date_time | time_window | deadline | recurring","IANA timezone","date","time","enum: morning | afternoon | evening | night","integer","datetime","enum: fixed | flexible | approximate","boolean","enum: daily | weekly | monthly | yearly","array<weekday>","integer/enum","enum","array<integer>","enum: never | date | occurrence_count","array<date>","enum: physical | online | telephone | unspecified","ISO 3166-1 alpha-2","decimal","derived-map","enum/string","HTTPS URL","phone","email","E.164 phone","BCP 47 locale","array<reference>","map","integer in smallest currency unit","enum: service_fee | booking_fee | deposit | cancellation_fee | no_show_fee | other","ISO 4217 currency code","enum: included | excluded | exempt | out_of_scope","decimal fraction","array<enum>","datetime/duration","enum: app | qr | kiosk | staff | geofence","enum: expected | arrived | on_time | late | no_show | excused","integer/derived","enum: traffic | public_transport | weather | illness | emergency | provider_delay | other | prefer_not_to_say","array<object>","array<enum/string>","array<locale/string>","array<url>","url/reference","string/code","enum/code","reference/string","array<string/code>","enum/reference","enum: normal | personal | sensitive | special_category"]},"kind":{"type":"string","enum":["title","text","list","badge","action","map"]},"icon":{"type":"string","enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"type":"string","enum":["default","mint","pink"]},"style":{"type":"object","properties":{"preset":{"type":"string","enum":["card","plain","highlight"]},"icon":{"type":"string","enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"type":"string","enum":["default","mint","pink"]},"width":{"type":"string","enum":["full","narrow"]},"pairWith":{"type":["string","null"],"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired",null]}},"required":["preset","icon","tone","width","pairWith"],"additionalProperties":false},"format":{"type":"object","properties":{"kind":{"type":"string","enum":["text","date","time","datetime","duration_minutes","currency_minor","percent","number","boolean","list","map"]},"currency":{"type":["string","null"],"pattern":"^[A-Z]{3}$"},"unit":{"type":["string","null"],"maxLength":500}},"required":["kind","currency","unit"],"additionalProperties":false},"availability":{"type":"string","enum":["available","unavailable"]},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"string","enum":["low","normal","high","urgent"]},{"type":"string","enum":["date","date_time","time_window","deadline","recurring"]},{"type":"string","minLength":1,"maxLength":100,"pattern":"\\S"},{"type":"string","format":"date","maxLength":10},{"type":"string","pattern":"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$"},{"type":"string","enum":["morning","afternoon","evening","night"]},{"type":"integer","minimum":0,"maximum":1000000},{"type":"string","format":"date-time","maxLength":50},{"type":"string","enum":["fixed","flexible","approximate"]},{"type":"boolean"},{"type":"string","enum":["daily","weekly","monthly","yearly"]},{"type":"integer","minimum":1,"maximum":1000000},{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7,"uniqueItems":true},{"anyOf":[{"type":"integer","minimum":1,"maximum":31},{"const":"last"}]},{"type":"string","enum":["first","second","third","fourth","last"]},{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"maxItems":12,"uniqueItems":true},{"type":"string","enum":["never","date","occurrence_count"]},{"type":"array","items":{"type":"string","format":"date","maxLength":10},"maxItems":200,"uniqueItems":true},{"type":"string","enum":["physical","online","telephone","unspecified"]},{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"string","minLength":1,"maxLength":32,"pattern":"\\S"},{"type":"string","pattern":"^[A-Z]{2}$"},{"type":"number","minimum":-90,"maximum":90},{"type":"number","minimum":-180,"maximum":180},{"type":"object","properties":{"destination":{"oneOf":[{"type":"object","properties":{"name":{"type":["string","null"],"maxLength":200},"addressLine1":{"type":"string","minLength":1,"maxLength":500},"addressLine2":{"type":["string","null"],"maxLength":500},"postalCode":{"type":["string","null"],"maxLength":32},"city":{"type":["string","null"],"maxLength":200},"region":{"type":["string","null"],"maxLength":200},"countryCode":{"type":["string","null"],"pattern":"^[A-Z]{2}$"},"latitude":{"type":"null"},"longitude":{"type":"null"}},"required":["name","addressLine1","addressLine2","postalCode","city","region","countryCode","latitude","longitude"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":["string","null"],"maxLength":200},"addressLine1":{"type":"string","minLength":1,"maxLength":500},"addressLine2":{"type":["string","null"],"maxLength":500},"postalCode":{"type":["string","null"],"maxLength":32},"city":{"type":["string","null"],"maxLength":200},"region":{"type":["string","null"],"maxLength":200},"countryCode":{"type":["string","null"],"pattern":"^[A-Z]{2}$"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["name","addressLine1","addressLine2","postalCode","city","region","countryCode","latitude","longitude"],"additionalProperties":false}]},"currentLocationSource":{"const":"device"}},"required":["destination","currentLocationSource"],"additionalProperties":false},{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},{"type":"string","minLength":3,"maxLength":40,"pattern":"^[+0-9 ()-]+$"},{"type":"string","format":"email","maxLength":254},{"type":"string","pattern":"^\\+[1-9][0-9]{6,14}$"},{"type":"string","minLength":2,"maxLength":35},{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},"role":{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"}},"required":["label","role"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"string","enum":["app","email","phone"]},{"type":"number","minimum":0,"maximum":1000000},{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"string","enum":["service_fee","booking_fee","deposit","cancellation_fee","no_show_fee","other"]},{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"string","enum":["included","excluded","exempt","out_of_scope"]},{"type":"number","minimum":0,"maximum":1},{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},{"type":"array","items":{"type":"integer","minimum":0,"maximum":525600},"maxItems":25,"uniqueItems":true},{"type":"array","items":{"type":"string","enum":["app","email","sms","push"]},"maxItems":4,"uniqueItems":true},{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"string","maxLength":100,"pattern":"^P(?=.+)(?:[0-9]+D)?(?:T(?=.+)(?:[0-9]+H)?(?:[0-9]+M)?(?:[0-9]+(?:\\.[0-9]+)?S)?)?$"}]},{"type":"string","enum":["app","qr","kiosk","staff","geofence"]},{"type":"string","enum":["expected","arrived","on_time","late","no_show","excused"]},{"type":"string","enum":["traffic","public_transport","weather","illness","emergency","provider_delay","other","prefer_not_to_say"]},{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"completed":{"type":"boolean"}},"required":["label","completed"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"array","items":{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},"maxItems":25,"uniqueItems":true},{"anyOf":[{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},{"type":"string","maxLength":2000,"pattern":"^/(?!/)[^\\\\]*$"}],"description":"Stable same-origin relative path or external HTTPS URL; temporary deployment hosts are prohibited."},{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},"quantity":{"type":"number","minimum":0,"maximum":1000000}},"required":["label","quantity"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"null"}]}},"required":["fieldKey","label","dataType","kind","icon","tone","style","format","availability","value"],"additionalProperties":false,"allOf":[{"if":{"properties":{"availability":{"const":"unavailable"}}},"then":{"properties":{"value":{"type":"null"}}},"else":{"properties":{"value":{"not":{"type":"null"}}}}},{"if":{"properties":{"fieldKey":{"const":"title"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"title"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"shortDescription"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"description"}}},"then":{"properties":{"dataType":{"const":"text"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"subcategoryKey"}}},"then":{"properties":{"dataType":{"const":"string/reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"tags"}}},"then":{"properties":{"dataType":{"const":"array<string>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"priority"}}},"then":{"properties":{"dataType":{"const":"enum: low | normal | high | urgent"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["low","normal","high","urgent"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"referenceNumber"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"publicReference"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"organizationId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"departmentId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"ownerTeamId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"organizerUserId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.type"}}},"then":{"properties":{"dataType":{"const":"enum: date | date_time | time_window | deadline | recurring"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["date","date_time","time_window","deadline","recurring"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.timezone"}}},"then":{"properties":{"dataType":{"const":"IANA timezone"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":100,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.startDate"}}},"then":{"properties":{"dataType":{"const":"date"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"date","maxLength":10},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.startTime"}}},"then":{"properties":{"dataType":{"const":"time"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","pattern":"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.endDate"}}},"then":{"properties":{"dataType":{"const":"date"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"date","maxLength":10},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.endTime"}}},"then":{"properties":{"dataType":{"const":"time"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","pattern":"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.dayPart"}}},"then":{"properties":{"dataType":{"const":"enum: morning | afternoon | evening | night"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["morning","afternoon","evening","night"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.durationMinutes"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.actualDurationMinutes"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.windowStartsAt"}}},"then":{"properties":{"dataType":{"const":"datetime"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.windowEndsAt"}}},"then":{"properties":{"dataType":{"const":"datetime"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.dueAt"}}},"then":{"properties":{"dataType":{"const":"datetime"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"schedule.flexibility"}}},"then":{"properties":{"dataType":{"const":"enum: fixed | flexible | approximate"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["fixed","flexible","approximate"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.enabled"}}},"then":{"properties":{"dataType":{"const":"boolean"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.frequency"}}},"then":{"properties":{"dataType":{"const":"enum: daily | weekly | monthly | yearly"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["daily","weekly","monthly","yearly"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.interval"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":1,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.daysOfWeek"}}},"then":{"properties":{"dataType":{"const":"array<weekday>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.dayOfMonth"}}},"then":{"properties":{"dataType":{"const":"integer/enum"},"kind":{"const":"text"},"value":{"anyOf":[{"anyOf":[{"type":"integer","minimum":1,"maximum":31},{"const":"last"}]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.weekOfMonth"}}},"then":{"properties":{"dataType":{"const":"enum"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["first","second","third","fourth","last"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.monthsOfYear"}}},"then":{"properties":{"dataType":{"const":"array<integer>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"maxItems":12,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.startDate"}}},"then":{"properties":{"dataType":{"const":"date"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"date","maxLength":10},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.endMode"}}},"then":{"properties":{"dataType":{"const":"enum: never | date | occurrence_count"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["never","date","occurrence_count"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.endDate"}}},"then":{"properties":{"dataType":{"const":"date"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"date","maxLength":10},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.occurrenceCount"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":1,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.exceptionDates"}}},"then":{"properties":{"dataType":{"const":"array<date>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","format":"date","maxLength":10},"maxItems":200,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.inclusionDates"}}},"then":{"properties":{"dataType":{"const":"array<date>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","format":"date","maxLength":10},"maxItems":200,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recurrence.timeOfDay"}}},"then":{"properties":{"dataType":{"const":"time"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","pattern":"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.mode"}}},"then":{"properties":{"dataType":{"const":"enum: physical | online | telephone | unspecified"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["physical","online","telephone","unspecified"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.locationId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"location.name"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.addressLine1"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.addressLine2"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.postalCode"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":32,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.city"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.region"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.countryCode"}}},"then":{"properties":{"dataType":{"const":"ISO 3166-1 alpha-2"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","pattern":"^[A-Z]{2}$"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.latitude"}}},"then":{"properties":{"dataType":{"const":"decimal"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"number","minimum":-90,"maximum":90},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.longitude"}}},"then":{"properties":{"dataType":{"const":"decimal"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"number","minimum":-180,"maximum":180},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.map"}}},"then":{"properties":{"dataType":{"const":"derived-map"},"kind":{"const":"map"},"value":{"anyOf":[{"type":"object","properties":{"destination":{"oneOf":[{"type":"object","properties":{"name":{"type":["string","null"],"maxLength":200},"addressLine1":{"type":"string","minLength":1,"maxLength":500},"addressLine2":{"type":["string","null"],"maxLength":500},"postalCode":{"type":["string","null"],"maxLength":32},"city":{"type":["string","null"],"maxLength":200},"region":{"type":["string","null"],"maxLength":200},"countryCode":{"type":["string","null"],"pattern":"^[A-Z]{2}$"},"latitude":{"type":"null"},"longitude":{"type":"null"}},"required":["name","addressLine1","addressLine2","postalCode","city","region","countryCode","latitude","longitude"],"additionalProperties":false},{"type":"object","properties":{"name":{"type":["string","null"],"maxLength":200},"addressLine1":{"type":"string","minLength":1,"maxLength":500},"addressLine2":{"type":["string","null"],"maxLength":500},"postalCode":{"type":["string","null"],"maxLength":32},"city":{"type":["string","null"],"maxLength":200},"region":{"type":["string","null"],"maxLength":200},"countryCode":{"type":["string","null"],"pattern":"^[A-Z]{2}$"},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180}},"required":["name","addressLine1","addressLine2","postalCode","city","region","countryCode","latitude","longitude"],"additionalProperties":false}]},"currentLocationSource":{"const":"device"}},"required":["destination","currentLocationSource"],"additionalProperties":false},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.floor"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.room"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.entrance"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.accessInstructions"}}},"then":{"properties":{"dataType":{"const":"text"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.onlineProvider"}}},"then":{"properties":{"dataType":{"const":"enum/string"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.onlineMeetingUrl"}}},"then":{"properties":{"dataType":{"const":"HTTPS URL"},"kind":{"const":"action"},"value":{"anyOf":[{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.dialInNumber"}}},"then":{"properties":{"dataType":{"const":"phone"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":3,"maxLength":40,"pattern":"^[+0-9 ()-]+$"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"location.meetingCode"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recipientId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"recipient.displayName"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recipient.email"}}},"then":{"properties":{"dataType":{"const":"email"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"email","maxLength":254},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recipient.phoneNumberE164"}}},"then":{"properties":{"dataType":{"const":"E.164 phone"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","pattern":"^\\+[1-9][0-9]{6,14}$"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recipient.preferredLocale"}}},"then":{"properties":{"dataType":{"const":"BCP 47 locale"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":2,"maxLength":35},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"assignedProfessionalId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"participantIds"}}},"then":{"properties":{"dataType":{"const":"array<reference>"},"kind":{"const":"list"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"participantRoles"}}},"then":{"properties":{"dataType":{"const":"map"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},"role":{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"}},"required":["label","role"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"attendeeCount"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"capacity"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"companionCount"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"contactPreference"}}},"then":{"properties":{"dataType":{"const":"enum"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["app","email","phone"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"serviceId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"serviceName"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"resourceIds"}}},"then":{"properties":{"dataType":{"const":"array<reference>"},"kind":{"const":"list"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"quantity"}}},"then":{"properties":{"dataType":{"const":"decimal"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"unit"}}},"then":{"properties":{"dataType":{"const":"enum/string"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"preparationDurationMinutes"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"cleanupDurationMinutes"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.amountMinor"}}},"then":{"properties":{"dataType":{"const":"integer in smallest currency unit"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.amountType"}}},"then":{"properties":{"dataType":{"const":"enum: service_fee | booking_fee | deposit | cancellation_fee | no_show_fee | other"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["service_fee","booking_fee","deposit","cancellation_fee","no_show_fee","other"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.currency"}}},"then":{"properties":{"dataType":{"const":"ISO 4217 currency code"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.taxMode"}}},"then":{"properties":{"dataType":{"const":"enum: included | excluded | exempt | out_of_scope"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["included","excluded","exempt","out_of_scope"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.taxAmountMinor"}}},"then":{"properties":{"dataType":{"const":"integer in smallest currency unit"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.taxRate"}}},"then":{"properties":{"dataType":{"const":"decimal fraction"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.discountAmountMinor"}}},"then":{"properties":{"dataType":{"const":"integer in smallest currency unit"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.depositAmountMinor"}}},"then":{"properties":{"dataType":{"const":"integer in smallest currency unit"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.paymentRequired"}}},"then":{"properties":{"dataType":{"const":"boolean"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.paymentStatus"}}},"then":{"properties":{"dataType":{"const":"enum"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.paymentDueAt"}}},"then":{"properties":{"dataType":{"const":"datetime"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.cancellationFeeMinor"}}},"then":{"properties":{"dataType":{"const":"integer in smallest currency unit"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.noShowFeeMinor"}}},"then":{"properties":{"dataType":{"const":"integer in smallest currency unit"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.noShowFeeTaxMode"}}},"then":{"properties":{"dataType":{"const":"enum: included | excluded | exempt | out_of_scope"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["included","excluded","exempt","out_of_scope"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.noShowFeeTaxAmountMinor"}}},"then":{"properties":{"dataType":{"const":"integer in smallest currency unit"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.noShowFeeTaxRate"}}},"then":{"properties":{"dataType":{"const":"decimal fraction"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"financial.refundPolicy"}}},"then":{"properties":{"dataType":{"const":"enum"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"reminderPolicyId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"remindersEnabled"}}},"then":{"properties":{"dataType":{"const":"boolean"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"reminderOffsetsMinutes"}}},"then":{"properties":{"dataType":{"const":"array<integer>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"integer","minimum":0,"maximum":525600},"maxItems":25,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"notificationChannels"}}},"then":{"properties":{"dataType":{"const":"array<enum>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","enum":["app","email","sms","push"]},"maxItems":4,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"messageTemplateId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"confirmationRequired"}}},"then":{"properties":{"dataType":{"const":"boolean"},"kind":{"const":"action"},"value":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"responseDeadline"}}},"then":{"properties":{"dataType":{"const":"datetime"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"actions.canCancel"}}},"then":{"properties":{"dataType":{"const":"boolean"},"kind":{"const":"action"},"value":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"actions.cancellationDeadline"}}},"then":{"properties":{"dataType":{"const":"datetime/duration"},"kind":{"const":"text"},"value":{"anyOf":[{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"string","maxLength":100,"pattern":"^P(?=.+)(?:[0-9]+D)?(?:T(?=.+)(?:[0-9]+H)?(?:[0-9]+M)?(?:[0-9]+(?:\\.[0-9]+)?S)?)?$"}]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"actions.canReschedule"}}},"then":{"properties":{"dataType":{"const":"boolean"},"kind":{"const":"action"},"value":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"actions.rescheduleDeadline"}}},"then":{"properties":{"dataType":{"const":"datetime/duration"},"kind":{"const":"text"},"value":{"anyOf":[{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"string","maxLength":100,"pattern":"^P(?=.+)(?:[0-9]+D)?(?:T(?=.+)(?:[0-9]+H)?(?:[0-9]+M)?(?:[0-9]+(?:\\.[0-9]+)?S)?)?$"}]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"actions.checkInRequired"}}},"then":{"properties":{"dataType":{"const":"boolean"},"kind":{"const":"action"},"value":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"actions.checkInMethod"}}},"then":{"properties":{"dataType":{"const":"enum: app | qr | kiosk | staff | geofence"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["app","qr","kiosk","staff","geofence"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"actions.completionConfirmationRequired"}}},"then":{"properties":{"dataType":{"const":"boolean"},"kind":{"const":"action"},"value":{"anyOf":[{"type":"boolean"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"attendance.status"}}},"then":{"properties":{"dataType":{"const":"enum: expected | arrived | on_time | late | no_show | excused"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["expected","arrived","on_time","late","no_show","excused"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"attendance.arrivedAt"}}},"then":{"properties":{"dataType":{"const":"datetime"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"attendance.lateThresholdMinutes"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"attendance.latenessMinutes"}}},"then":{"properties":{"dataType":{"const":"integer/derived"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"attendance.lateReasonCode"}}},"then":{"properties":{"dataType":{"const":"enum: traffic | public_transport | weather | illness | emergency | provider_delay | other | prefer_not_to_say"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","enum":["traffic","public_transport","weather","illness","emergency","provider_delay","other","prefer_not_to_say"]},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"attendance.lateReasonText"}}},"then":{"properties":{"dataType":{"const":"text"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"instructions.before"}}},"then":{"properties":{"dataType":{"const":"text"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"instructions.after"}}},"then":{"properties":{"dataType":{"const":"text"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"bringItems"}}},"then":{"properties":{"dataType":{"const":"array<string>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"preparationChecklist"}}},"then":{"properties":{"dataType":{"const":"array<object>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"completed":{"type":"boolean"}},"required":["label","completed"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"recipientNotes"}}},"then":{"properties":{"dataType":{"const":"text"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"internalNotes"}}},"then":{"properties":{"dataType":{"const":"text"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"accessibilityNeeds"}}},"then":{"properties":{"dataType":{"const":"array<enum/string>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"languageSupport"}}},"then":{"properties":{"dataType":{"const":"array<locale/string>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"attachmentIds"}}},"then":{"properties":{"dataType":{"const":"array<reference>"},"kind":{"const":"list"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"externalLinks"}}},"then":{"properties":{"dataType":{"const":"array<url>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},"maxItems":25,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"termsUrl"}}},"then":{"properties":{"dataType":{"const":"url/reference"},"kind":{"const":"action"},"value":{"anyOf":[{"anyOf":[{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},{"type":"string","maxLength":2000,"pattern":"^/(?!/)[^\\\\]*$"}],"description":"Stable same-origin relative path or external HTTPS URL; temporary deployment hosts are prohibited."},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.name"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.productCode"}}},"then":{"properties":{"dataType":{"const":"string/code"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.doseAmount"}}},"then":{"properties":{"dataType":{"const":"decimal"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"number","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.doseUnit"}}},"then":{"properties":{"dataType":{"const":"enum/code"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.dosageForm"}}},"then":{"properties":{"dataType":{"const":"enum/code"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.administrationRoute"}}},"then":{"properties":{"dataType":{"const":"enum/code"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.mealRelation"}}},"then":{"properties":{"dataType":{"const":"enum"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.intakeWindowMinutes"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.instructions"}}},"then":{"properties":{"dataType":{"const":"text"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.missedReason"}}},"then":{"properties":{"dataType":{"const":"enum/string"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"medication.prescriberReference"}}},"then":{"properties":{"dataType":{"const":"reference/string"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"medication.pharmacyId"}}},"then":{"properties":{"dataType":{"const":"reference"},"kind":{"const":"text"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"hospitality.partySize"}}},"then":{"properties":{"dataType":{"const":"integer"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"hospitality.tablePreference"}}},"then":{"properties":{"dataType":{"const":"enum/string"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"hospitality.dietaryRequirements"}}},"then":{"properties":{"dataType":{"const":"array<string/code>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"hospitality.occasion"}}},"then":{"properties":{"dataType":{"const":"enum/string"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"hospitality.preOrder"}}},"then":{"properties":{"dataType":{"const":"array<object>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},"quantity":{"type":"number","minimum":0,"maximum":1000000}},"required":["label","quantity"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"business.caseReference"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"business.subject"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"business.agendaItems"}}},"then":{"properties":{"dataType":{"const":"array<string>"},"kind":{"const":"list"},"value":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"business.customerReference"}}},"then":{"properties":{"dataType":{"const":"string"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"cancellationReasonCode"}}},"then":{"properties":{"dataType":{"const":"enum/reference"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"cancellationReasonText"}}},"then":{"properties":{"dataType":{"const":"text"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"outcomeCode"}}},"then":{"properties":{"dataType":{"const":"enum/reference"},"kind":{"const":"badge"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"outcomeNotes"}}},"then":{"properties":{"dataType":{"const":"text"},"kind":{"const":"text"},"value":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}]}}}},{"if":{"properties":{"fieldKey":{"const":"privacy.sensitivity"}}},"then":{"properties":{"dataType":{"const":"enum: normal | personal | sensitive | special_category"},"kind":{"const":"badge"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"privacy.visibilityScope"}}},"then":{"properties":{"dataType":{"const":"array<enum>"},"kind":{"const":"list"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}},{"if":{"properties":{"fieldKey":{"const":"privacy.consentRequired"}}},"then":{"properties":{"dataType":{"const":"boolean"},"kind":{"const":"badge"},"value":{"type":"null"},"availability":{"const":"unavailable"}}}}]},"maxItems":154,"description":"Recipient-visible components in the configured order. Unavailable values must be rendered honestly; never replace them with sample content."},"rows":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"columns":{"type":"integer","const":1},"fieldKeys":{"type":"array","items":{"type":"string","enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"minItems":1,"maxItems":1,"uniqueItems":true}},"required":["columns","fieldKeys"],"additionalProperties":false},{"type":"object","properties":{"columns":{"type":"integer","const":2},"fieldKeys":{"type":"array","items":{"type":"string","enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"minItems":2,"maxItems":2,"uniqueItems":true}},"required":["columns","fieldKeys"],"additionalProperties":false}]},"maxItems":154,"description":"One or two adjacent components per row, in exactly the order of components. A lone narrow component fills its row."},"styleGuide":{"type":"object","const":{"version":1,"fontFamily":"system","cardRadius":10,"gap":10,"padding":12,"labelFontSize":10,"valueFontSize":15,"narrowValueFontSize":14,"titleFontSize":26,"iconSize":22,"titleIconSize":28,"iconStrokeWidth":1.8,"minimumColumnWidth":120,"collapseBelowWidth":280,"text":"#0c1227","mutedText":"#5b6982","tones":{"default":{"background":"#ffffff","border":"#e0e5ed","icon":"#4e5b74","accent":"#203d65","badgeBackground":"#e8eef8","badgeText":"#203d65"},"mint":{"background":"#edfff7","border":"#c8efdf","icon":"#177468","accent":"#177468","badgeBackground":"#dbfaed","badgeText":"#07845f"},"pink":{"background":"#fff0f6","border":"#f3b7d0","icon":"#c9136a","accent":"#ec006c","badgeBackground":"#ffe1ee","badgeText":"#c9136a"}},"presets":{"card":{"border":true,"background":"tone","emphasis":"normal"},"plain":{"border":false,"background":"transparent","emphasis":"normal"},"highlight":{"border":true,"background":"tone","emphasis":"strong"}},"kinds":{"badge":{"fontSize":12,"radius":20,"horizontalPadding":9,"verticalPadding":5},"action":{"fontSize":13,"radius":7,"padding":9},"list":{"fontSize":13,"lineHeight":1.6,"indentation":14}},"pairing":"adjacent_compatible_narrow","unpairedNarrow":"full"},"description":"Closed Dont4get design tokens shared with the component preview. Apply accessible native equivalents without executing arbitrary CSS."}},"required":["schemaVersion","appointmentId","platformHolderId","typeKey","timezone","layoutSource","layoutVersion","layoutMode","components","rows","styleGuide"],"additionalProperties":false}]},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/appointments/{platformHolderId}/{appointmentId}/responses":{"post":{"operationId":"createRecipientAppointmentRequest","summary":"Request confirmation, cancellation or rescheduling","description":"Records an auditable request with status pending_review. The provider appointment remains unchanged. Reuse clientRequestId for an identical retry; a different payload with that ID returns 409. Proposed dates are required only for reschedule. There is no automatic provider worker behind this endpoint.\n\nRequired role: `recipient`. Required scope: `recipient:appointments:respond`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:appointments:respond","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"action":{"type":"string","enum":["confirm","cancel","reschedule"]},"proposedStartsAt":{"type":"string","format":"date-time"},"proposedEndsAt":{"type":"string","format":"date-time"},"reasonCode":{"type":"string","enum":["schedule_conflict","unavailable","no_longer_needed","other"]}},"required":["clientRequestId","action"],"additionalProperties":false}}}},"responses":{"202":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"appointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"action":{"type":"string","enum":["confirm","cancel","reschedule"]},"status":{"type":"string","enum":["pending_review","approved","rejected","completed","failed"]},"proposedStartsAt":{"type":["string","null"],"format":"date-time"},"proposedEndsAt":{"type":["string","null"],"format":"date-time"},"reasonCode":{"type":["string","null"],"enum":["schedule_conflict","unavailable","no_longer_needed","other",null]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","platformHolderId","appointmentId","action","status","proposedStartsAt","proposedEndsAt","reasonCode","createdAt","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/appointment-requests":{"get":{"operationId":"listRecipientAppointmentRequests","summary":"List your appointment requests","description":"Read persisted request status. pending_review means awaiting human handling; it is not a running background task or proof that a provider accepted a change.\n\nRequired role: `recipient`. Required scope: `recipient:appointments:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:appointments:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"pageSize","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$","description":"Default 25, maximum 100."}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string","maxLength":4096}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"appointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"action":{"type":"string","enum":["confirm","cancel","reschedule"]},"status":{"type":"string","enum":["pending_review","approved","rejected","completed","failed"]},"proposedStartsAt":{"type":["string","null"],"format":"date-time"},"proposedEndsAt":{"type":["string","null"],"format":"date-time"},"reasonCode":{"type":["string","null"],"enum":["schedule_conflict","unavailable","no_longer_needed","other",null]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","platformHolderId","appointmentId","action","status","proposedStartsAt","proposedEndsAt","reasonCode","createdAt","updatedAt"],"additionalProperties":false}},"nextPageToken":{"type":["string","null"]}},"required":["items","nextPageToken"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/appointment-requests/{requestId}":{"get":{"operationId":"getRecipientAppointmentRequest","summary":"Read an appointment request status","description":"Returns only a request belonging to the authenticated recipient.\n\nRequired role: `recipient`. Required scope: `recipient:appointments:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:appointments:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"requestId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"platformHolderId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"appointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"action":{"type":"string","enum":["confirm","cancel","reschedule"]},"status":{"type":"string","enum":["pending_review","approved","rejected","completed","failed"]},"proposedStartsAt":{"type":["string","null"],"format":"date-time"},"proposedEndsAt":{"type":["string","null"],"format":"date-time"},"reasonCode":{"type":["string","null"],"enum":["schedule_conflict","unavailable","no_longer_needed","other",null]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","platformHolderId","appointmentId","action","status","proposedStartsAt","proposedEndsAt","reasonCode","createdAt","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/suggestions":{"get":{"operationId":"listRecipientSuggestions","summary":"List your appointment suggestions","description":"Returns existing suggestions prepared for this recipient. This API does not run an AI model or ingest an inbox. Raw source messages and model payloads are not exposed.\n\nRequired role: `recipient`. Required scope: `recipient:suggestions:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:suggestions:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"pageSize","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$","description":"Default 25, maximum 100."}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string","maxLength":4096}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"source":{"type":"string","maxLength":100},"summary":{"type":"string","maxLength":500},"confidence":{"type":"string","enum":["low","medium","high"]},"proposedStartsAt":{"type":["string","null"],"format":"date-time"},"proposedEndsAt":{"type":["string","null"],"format":"date-time"},"timezone":{"type":["string","null"]},"status":{"type":"string","enum":["pending_review","approved","rejected"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"reviewedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","source","summary","confidence","proposedStartsAt","proposedEndsAt","timezone","status","createdAt","updatedAt","reviewedAt"],"additionalProperties":false}},"nextPageToken":{"type":["string","null"]}},"required":["items","nextPageToken"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/suggestions/{suggestionId}":{"get":{"operationId":"getRecipientSuggestion","summary":"Read an appointment suggestion","description":"Read the proposed appointment fields for human review. Suggestions have no effect on provider appointments.\n\nRequired role: `recipient`. Required scope: `recipient:suggestions:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:suggestions:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"suggestionId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"source":{"type":"string","maxLength":100},"summary":{"type":"string","maxLength":500},"confidence":{"type":"string","enum":["low","medium","high"]},"proposedStartsAt":{"type":["string","null"],"format":"date-time"},"proposedEndsAt":{"type":["string","null"],"format":"date-time"},"timezone":{"type":["string","null"]},"status":{"type":"string","enum":["pending_review","approved","rejected"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"reviewedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","source","summary","confidence","proposedStartsAt","proposedEndsAt","timezone","status","createdAt","updatedAt","reviewedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/suggestions/{suggestionId}/review":{"post":{"operationId":"reviewRecipientSuggestion","summary":"Record a human review of a suggestion","description":"The caller must obtain actual human review and send confirmedByHuman=true. The authenticated actor and API key, if used, are audited. Approval marks the suggestion approved; it does not create or change a provider appointment. Repeating the same decision is idempotent; reversing it returns 409.\n\nRequired role: `recipient`. Required scope: `recipient:suggestions:review`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:suggestions:review","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"suggestionId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["approved","rejected"]},"confirmedByHuman":{"type":"boolean","const":true}},"required":["decision","confirmedByHuman"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"source":{"type":"string","maxLength":100},"summary":{"type":"string","maxLength":500},"confidence":{"type":"string","enum":["low","medium","high"]},"proposedStartsAt":{"type":["string","null"],"format":"date-time"},"proposedEndsAt":{"type":["string","null"],"format":"date-time"},"timezone":{"type":["string","null"]},"status":{"type":"string","enum":["pending_review","approved","rejected"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"reviewedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","source","summary","confidence","proposedStartsAt","proposedEndsAt","timezone","status","createdAt","updatedAt","reviewedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/deletion-requests":{"post":{"operationId":"createRecipientDeletionRequest","summary":"Request deletion of your recipient data","description":"Records an auditable pending_review request after explicit human confirmation. No data is deleted by this endpoint, and no deletion worker is started. An authorized privacy operator must assess identity, retention duties and completion separately. clientRequestId provides idempotent retries.\n\nRequired role: `recipient`. Required scope: `recipient:deletion:request`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:deletion:request","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"confirmedByHuman":{"type":"boolean","const":true}},"required":["clientRequestId","confirmedByHuman"],"additionalProperties":false}}}},"responses":{"202":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"status":{"type":"string","enum":["pending_review","approved","rejected","completed","failed"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","status","createdAt","updatedAt","completedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"operationId":"listRecipientDeletionRequests","summary":"List your data-deletion requests","description":"Returns the recorded human-handled status. A pending request is not proof that deletion has occurred.\n\nRequired role: `recipient`. Required scope: `recipient:deletion:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:deletion:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"pageSize","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$","description":"Default 25, maximum 100."}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string","maxLength":4096}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"status":{"type":"string","enum":["pending_review","approved","rejected","completed","failed"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","status","createdAt","updatedAt","completedAt"],"additionalProperties":false}},"nextPageToken":{"type":["string","null"]}},"required":["items","nextPageToken"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/recipient/deletion-requests/{requestId}":{"get":{"operationId":"getRecipientDeletionRequest","summary":"Read a data-deletion request status","description":"Returns only the authenticated recipient's request and safe completion metadata.\n\nRequired role: `recipient`. Required scope: `recipient:deletion:read`. Use a scoped bearer API key, a verified and linked opaque recipient SMS session, or an authorized same-origin browser session.","tags":["Recipient"],"security":[{"bearerKey":[]},{"recipientSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"recipient","x-dont4get-scope":"recipient:deletion:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"requestId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"status":{"type":"string","enum":["pending_review","approved","rejected","completed","failed"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","status","createdAt","updatedAt","completedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/scheduling/resources":{"get":{"operationId":"listHolderSchedulingResources","summary":"Eigen planningsmiddelen lezen","description":"Leest gepagineerd locaties, medewerkers en ruimten van uitsluitend de eigen organisatie, met lokale beschikbaarheidsuren en uitzonderingen.\n\nRequired role: `platform_holder_user`. Required scope: `scheduling:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Planning"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"scheduling:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"pageSize","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:[1-9]|[1-9][0-9]|100)$","description":"Default 25, maximum 100."}},{"name":"pageToken","in":"query","required":false,"schema":{"type":"string","maxLength":4096}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"kind":{"enum":["location","person","room"]},"locationIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":100,"description":"A location has none, a room has exactly one, and a person has at least one active location in this tenant."},"capacity":{"type":"integer","minimum":1,"maximum":100,"description":"Locations may allow parallel appointments; people and rooms have capacity 1."},"timezone":{"type":"string","minLength":1,"maxLength":80,"description":"Valid IANA timezone used for local availability hours."},"status":{"enum":["active","inactive"]},"weekly":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"integer","minimum":1,"maximum":7,"description":"ISO weekday: Monday is 1 and Sunday is 7."},"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["dayOfWeek","startMinute","endMinute"],"additionalProperties":false},"maxItems":84},"exceptions":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"windows":{"type":"array","items":{"type":"object","properties":{"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["startMinute","endMinute"],"additionalProperties":false},"maxItems":24,"description":"Replaces weekly hours for this local date. An empty array closes the resource."}},"required":["date","windows"],"additionalProperties":false},"maxItems":366},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"integer","minimum":1},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["name","kind","locationIds","capacity","timezone","status","weekly","exceptions","id","version","createdAt","updatedAt"],"additionalProperties":false}},"nextPageToken":{"type":["string","null"]}},"required":["items","nextPageToken"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"operationId":"createHolderSchedulingResource","summary":"Eigen planningsmiddel maken","description":"Maakt een tenantgebonden locatie, medewerker of ruimte. Medewerkers en ruimten hebben capaciteit 1; locaties kunnen parallelle capaciteit hebben. Locatieverwijzingen moeten bij deze organisatie horen. Uren en uitzonderingen worden server-side gevalideerd. Identieke retries met clientRequestId maken geen tweede middel.\n\nRequired role: `platform_holder_user`. Required scope: `scheduling:write`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Planning"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"scheduling:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"kind":{"enum":["location","person","room"]},"locationIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":100,"description":"A location has none, a room has exactly one, and a person has at least one active location in this tenant."},"capacity":{"type":"integer","minimum":1,"maximum":100,"description":"Locations may allow parallel appointments; people and rooms have capacity 1."},"timezone":{"type":"string","minLength":1,"maxLength":80,"description":"Valid IANA timezone used for local availability hours."},"status":{"enum":["active","inactive"]},"weekly":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"integer","minimum":1,"maximum":7,"description":"ISO weekday: Monday is 1 and Sunday is 7."},"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["dayOfWeek","startMinute","endMinute"],"additionalProperties":false},"maxItems":84},"exceptions":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"windows":{"type":"array","items":{"type":"object","properties":{"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["startMinute","endMinute"],"additionalProperties":false},"maxItems":24,"description":"Replaces weekly hours for this local date. An empty array closes the resource."}},"required":["date","windows"],"additionalProperties":false},"maxItems":366},"clientRequestId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$","description":"Lowercase UUID for one intentional operation. Identical retries reuse it; different payloads must not."}},"required":["name","kind","locationIds","capacity","timezone","status","weekly","exceptions","clientRequestId"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"kind":{"enum":["location","person","room"]},"locationIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":100,"description":"A location has none, a room has exactly one, and a person has at least one active location in this tenant."},"capacity":{"type":"integer","minimum":1,"maximum":100,"description":"Locations may allow parallel appointments; people and rooms have capacity 1."},"timezone":{"type":"string","minLength":1,"maxLength":80,"description":"Valid IANA timezone used for local availability hours."},"status":{"enum":["active","inactive"]},"weekly":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"integer","minimum":1,"maximum":7,"description":"ISO weekday: Monday is 1 and Sunday is 7."},"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["dayOfWeek","startMinute","endMinute"],"additionalProperties":false},"maxItems":84},"exceptions":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"windows":{"type":"array","items":{"type":"object","properties":{"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["startMinute","endMinute"],"additionalProperties":false},"maxItems":24,"description":"Replaces weekly hours for this local date. An empty array closes the resource."}},"required":["date","windows"],"additionalProperties":false},"maxItems":366},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"integer","minimum":1},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["name","kind","locationIds","capacity","timezone","status","weekly","exceptions","id","version","createdAt","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/scheduling/resources/{resourceId}":{"get":{"operationId":"getHolderSchedulingResource","summary":"Eigen planningsmiddel lezen","description":"Leest één planningsmiddel en zijn versie uit de eigen organisatie. Een middel van een andere tenant is niet bereikbaar.\n\nRequired role: `platform_holder_user`. Required scope: `scheduling:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Planning"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"scheduling:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"resourceId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"kind":{"enum":["location","person","room"]},"locationIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":100,"description":"A location has none, a room has exactly one, and a person has at least one active location in this tenant."},"capacity":{"type":"integer","minimum":1,"maximum":100,"description":"Locations may allow parallel appointments; people and rooms have capacity 1."},"timezone":{"type":"string","minLength":1,"maxLength":80,"description":"Valid IANA timezone used for local availability hours."},"status":{"enum":["active","inactive"]},"weekly":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"integer","minimum":1,"maximum":7,"description":"ISO weekday: Monday is 1 and Sunday is 7."},"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["dayOfWeek","startMinute","endMinute"],"additionalProperties":false},"maxItems":84},"exceptions":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"windows":{"type":"array","items":{"type":"object","properties":{"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["startMinute","endMinute"],"additionalProperties":false},"maxItems":24,"description":"Replaces weekly hours for this local date. An empty array closes the resource."}},"required":["date","windows"],"additionalProperties":false},"maxItems":366},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"integer","minimum":1},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["name","kind","locationIds","capacity","timezone","status","weekly","exceptions","id","version","createdAt","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"patch":{"operationId":"updateHolderSchedulingResource","summary":"Eigen planningsmiddel bijwerken","description":"Vervangt de volledige configuratie na controle van expectedVersion en bestaande reserveringen. Een gelijktijdige boeking of configuratiewijziging wordt niet overschreven. De identiteit en het soort middel blijven behouden; historische reserveringen worden niet verwijderd.\n\nRequired role: `platform_holder_user`. Required scope: `scheduling:write`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Planning"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"scheduling:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"resourceId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"kind":{"enum":["location","person","room"]},"locationIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":100,"description":"A location has none, a room has exactly one, and a person has at least one active location in this tenant."},"capacity":{"type":"integer","minimum":1,"maximum":100,"description":"Locations may allow parallel appointments; people and rooms have capacity 1."},"timezone":{"type":"string","minLength":1,"maxLength":80,"description":"Valid IANA timezone used for local availability hours."},"status":{"enum":["active","inactive"]},"weekly":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"integer","minimum":1,"maximum":7,"description":"ISO weekday: Monday is 1 and Sunday is 7."},"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["dayOfWeek","startMinute","endMinute"],"additionalProperties":false},"maxItems":84},"exceptions":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"windows":{"type":"array","items":{"type":"object","properties":{"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["startMinute","endMinute"],"additionalProperties":false},"maxItems":24,"description":"Replaces weekly hours for this local date. An empty array closes the resource."}},"required":["date","windows"],"additionalProperties":false},"maxItems":366},"expectedVersion":{"type":"integer","minimum":1}},"required":["name","kind","locationIds","capacity","timezone","status","weekly","exceptions","expectedVersion"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"kind":{"enum":["location","person","room"]},"locationIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":100,"description":"A location has none, a room has exactly one, and a person has at least one active location in this tenant."},"capacity":{"type":"integer","minimum":1,"maximum":100,"description":"Locations may allow parallel appointments; people and rooms have capacity 1."},"timezone":{"type":"string","minLength":1,"maxLength":80,"description":"Valid IANA timezone used for local availability hours."},"status":{"enum":["active","inactive"]},"weekly":{"type":"array","items":{"type":"object","properties":{"dayOfWeek":{"type":"integer","minimum":1,"maximum":7,"description":"ISO weekday: Monday is 1 and Sunday is 7."},"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["dayOfWeek","startMinute","endMinute"],"additionalProperties":false},"maxItems":84},"exceptions":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"windows":{"type":"array","items":{"type":"object","properties":{"startMinute":{"type":"integer","minimum":0,"maximum":1439},"endMinute":{"type":"integer","minimum":1,"maximum":1440}},"required":["startMinute","endMinute"],"additionalProperties":false},"maxItems":24,"description":"Replaces weekly hours for this local date. An empty array closes the resource."}},"required":["date","windows"],"additionalProperties":false},"maxItems":366},"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"version":{"type":"integer","minimum":1},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["name","kind","locationIds","capacity","timezone","status","weekly","exceptions","id","version","createdAt","updatedAt"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/scheduling/availability":{"post":{"operationId":"checkHolderSchedulingAvailability","summary":"Beschikbaarheid voor een afspraak controleren","description":"Controleert tijdslots, buffers, personeels- en ruimtevereisten, lokale openingsuren en resterende capaciteit. Deze read reserveert niets; de uiteindelijke mutation controleert alles opnieuw atomair. excludeAppointmentId mag uitsluitend een eigen bestaande afspraak uitsluiten voor een verplaatsingsvoorstel. Zonder schedulingPolicy worden geen resourcegaranties gegeven.\n\nRequired role: `platform_holder_user`. Required scope: `scheduling:read`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Planning"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"scheduling:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"appointmentTypeId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"locationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"resourceIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":10},"excludeAppointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"}},"required":["appointmentTypeId","startsAt","endsAt","resourceIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"available":{"type":"boolean"},"reasonCode":{"type":["string","null"],"maxLength":100},"policyConfigured":{"type":"boolean"}},"required":["available","reasonCode","policyConfigured"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointments/{appointmentId}/scheduling":{"get":{"operationId":"getHolderAppointmentScheduling","summary":"Planning en versie van een eigen afspraak lezen","description":"Leest de huidige lokale afspraakversie en opgeslagen resourceallocatie. Bestaande afspraken zonder resourceplanning behouden scheduling=null; er worden geen historische middelen of capaciteitsgaranties afgeleid.\n\nRequired role: `platform_holder_user`. Required scope: `appointments:read`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Planning"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointments:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"status":{"type":"string","maxLength":80},"version":{"type":"integer","minimum":0,"description":"Legacy appointments begin at version 0; successful scheduling mutations increment it."},"startsAt":{"type":["string","null"],"format":"date-time"},"endsAt":{"type":["string","null"],"format":"date-time"},"scheduling":{"anyOf":[{"type":"object","properties":{"policy":{"type":"object","properties":{"mode":{"enum":["unconstrained","resources"]},"personCount":{"type":"integer","minimum":0,"maximum":10},"roomCount":{"type":"integer","minimum":0,"maximum":10},"locationUnits":{"type":"integer","minimum":0,"maximum":100},"slotMinutes":{"type":"integer","minimum":1,"maximum":60},"bufferBeforeMinutes":{"type":"integer","minimum":0,"maximum":240},"bufferAfterMinutes":{"type":"integer","minimum":0,"maximum":240}},"required":["mode","personCount","roomCount","locationUnits","slotMinutes","bufferBeforeMinutes","bufferAfterMinutes"],"additionalProperties":false,"description":"Complete booking policy. personCount + roomCount must be at most 10. In unconstrained mode all resource counts and buffers must be zero. In resources mode at least one person, room or location unit is required. Cross-field rules are validated by the server."},"policyVersion":{"type":"integer","minimum":1},"locationId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},{"type":"null"}]},"resourceIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":10},"occupiedStartsAt":{"type":"string","format":"date-time"},"occupiedEndsAt":{"type":"string","format":"date-time"}},"required":["policy","policyVersion","locationId","resourceIds","occupiedStartsAt","occupiedEndsAt"],"additionalProperties":false},{"type":"null"}]},"sourceSynchronizationRequired":{"type":"boolean","description":"True when an external source must be synchronized separately. A local update is not proof of an external calendar update."}},"required":["id","status","version","startsAt","endsAt","scheduling","sourceSynchronizationRequired"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointments/{appointmentId}/schedule":{"patch":{"operationId":"updateHolderAppointmentSchedule","summary":"Eigen afspraak lokaal verplaatsen","description":"Wijzigt uitsluitend het lokale tijdvak en de expliciete resourceallocatie na controle van expectedVersion, huidige typevereisten, uren en capaciteit. Oude capaciteit wordt pas vrijgegeven wanneer het nieuwe tijdvak atomair is vastgelegd. Een mislukt voorstel behoudt de oorspronkelijke reservering. clientRequestId voorkomt dubbele verwerking. Een geïmporteerde afspraak onder bronbeheer wordt met 409 SOURCE_MANAGED_APPOINTMENT geweigerd: wijzig het bronsysteem en lever de resulterende toestand via intake aan. Externe agenda's en uitnodigingen worden niet automatisch aangepast.\n\nRequired role: `platform_holder_user`. Required scope: `appointments:write`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Planning"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointments:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$","description":"Lowercase UUID for one intentional operation. Identical retries reuse it; different payloads must not."},"expectedVersion":{"type":"integer","minimum":0},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"locationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"resourceIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":10}},"required":["clientRequestId","expectedVersion","startsAt","endsAt","resourceIds"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"status":{"type":"string","maxLength":80},"version":{"type":"integer","minimum":0,"description":"Legacy appointments begin at version 0; successful scheduling mutations increment it."},"startsAt":{"type":["string","null"],"format":"date-time"},"endsAt":{"type":["string","null"],"format":"date-time"},"scheduling":{"anyOf":[{"type":"object","properties":{"policy":{"type":"object","properties":{"mode":{"enum":["unconstrained","resources"]},"personCount":{"type":"integer","minimum":0,"maximum":10},"roomCount":{"type":"integer","minimum":0,"maximum":10},"locationUnits":{"type":"integer","minimum":0,"maximum":100},"slotMinutes":{"type":"integer","minimum":1,"maximum":60},"bufferBeforeMinutes":{"type":"integer","minimum":0,"maximum":240},"bufferAfterMinutes":{"type":"integer","minimum":0,"maximum":240}},"required":["mode","personCount","roomCount","locationUnits","slotMinutes","bufferBeforeMinutes","bufferAfterMinutes"],"additionalProperties":false,"description":"Complete booking policy. personCount + roomCount must be at most 10. In unconstrained mode all resource counts and buffers must be zero. In resources mode at least one person, room or location unit is required. Cross-field rules are validated by the server."},"policyVersion":{"type":"integer","minimum":1},"locationId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},{"type":"null"}]},"resourceIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":10},"occupiedStartsAt":{"type":"string","format":"date-time"},"occupiedEndsAt":{"type":"string","format":"date-time"}},"required":["policy","policyVersion","locationId","resourceIds","occupiedStartsAt","occupiedEndsAt"],"additionalProperties":false},{"type":"null"}]},"sourceSynchronizationRequired":{"type":"boolean","description":"True when an external source must be synchronized separately. A local update is not proof of an external calendar update."}},"required":["id","status","version","startsAt","endsAt","scheduling","sourceSynchronizationRequired"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointments/{appointmentId}/cancel":{"post":{"operationId":"cancelHolderAppointment","summary":"Eigen afspraak lokaal annuleren","description":"Vereist concrete menselijke bevestiging en de actuele afspraakversie. Markeert de lokale afspraak geannuleerd en geeft capaciteit in dezelfde atomaire commit vrij; de afspraak en audit blijven behouden. clientRequestId ondersteunt identieke retries. Een geïmporteerde afspraak onder bronbeheer wordt met 409 SOURCE_MANAGED_APPOINTMENT geweigerd. Wijzig die in het bronsysteem; externe agenda's en ontvangersberichten worden niet automatisch bijgewerkt.\n\nRequired role: `platform_holder_user`. Required scope: `appointments:write`. Use a scoped bearer API key or an authorized same-origin browser session. Requires an active platform holder.","tags":["Planning"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointments:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"appointmentId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$","description":"Lowercase UUID for one intentional operation. Identical retries reuse it; different payloads must not."},"expectedVersion":{"type":"integer","minimum":0},"confirmedByHuman":{"const":true}},"required":["clientRequestId","expectedVersion","confirmedByHuman"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"status":{"type":"string","maxLength":80},"version":{"type":"integer","minimum":0,"description":"Legacy appointments begin at version 0; successful scheduling mutations increment it."},"startsAt":{"type":["string","null"],"format":"date-time"},"endsAt":{"type":["string","null"],"format":"date-time"},"scheduling":{"anyOf":[{"type":"object","properties":{"policy":{"type":"object","properties":{"mode":{"enum":["unconstrained","resources"]},"personCount":{"type":"integer","minimum":0,"maximum":10},"roomCount":{"type":"integer","minimum":0,"maximum":10},"locationUnits":{"type":"integer","minimum":0,"maximum":100},"slotMinutes":{"type":"integer","minimum":1,"maximum":60},"bufferBeforeMinutes":{"type":"integer","minimum":0,"maximum":240},"bufferAfterMinutes":{"type":"integer","minimum":0,"maximum":240}},"required":["mode","personCount","roomCount","locationUnits","slotMinutes","bufferBeforeMinutes","bufferAfterMinutes"],"additionalProperties":false,"description":"Complete booking policy. personCount + roomCount must be at most 10. In unconstrained mode all resource counts and buffers must be zero. In resources mode at least one person, room or location unit is required. Cross-field rules are validated by the server."},"policyVersion":{"type":"integer","minimum":1},"locationId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},{"type":"null"}]},"resourceIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":10},"occupiedStartsAt":{"type":"string","format":"date-time"},"occupiedEndsAt":{"type":"string","format":"date-time"}},"required":["policy","policyVersion","locationId","resourceIds","occupiedStartsAt","occupiedEndsAt"],"additionalProperties":false},{"type":"null"}]},"sourceSynchronizationRequired":{"type":"boolean","description":"True when an external source must be synchronized separately. A local update is not proof of an external calendar update."}},"required":["id","status","version","startsAt","endsAt","scheduling","sourceSynchronizationRequired"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointment-layouts":{"get":{"operationId":"listHolderAppointmentLayouts","summary":"Eigen afspraakcomponenten en indelingen lezen","description":"Leest de effectieve componentindelingen per standaardtype voor uitsluitend de eigen tenant, met verplichte en zichtbare velden, opgeslagen volgorde, stijloverrides, afgeleide rijen en vaste Dont4get-ontwerptokens. Ontbrekende tenantindelingen erven de bestaande globale beginconfiguratie; ontbrekende configuratie kan de meegeleverde standaard gebruiken. Een opslagfout geeft een fout, nooit een succesvolle voorbeeldconfiguratie. Dit is een indeling, geen afspraakinhoud.\n\nRequired role: `platform_holder_user`. Required scope: `appointment-types:read`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointment-types:read","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"items":{"type":"array","maxItems":8,"items":{"type":"object","properties":{"typeKey":{"enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"label":{"type":"string","maxLength":200},"version":{"type":"integer","minimum":1},"requiredFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"platformHolderVisibleFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"recipientVisibleFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"recipientFieldOrder":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"recipientComponentStyles":{"type":"object","propertyNames":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"maxProperties":154,"additionalProperties":{"type":"object","properties":{"preset":{"enum":["card","plain","highlight"]},"icon":{"enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"enum":["default","mint","pink"]},"width":{"enum":["full","narrow"]},"pairWith":{"type":["string","null"],"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired",null]}},"required":["preset","icon","tone","width","pairWith"],"additionalProperties":false}},"configuredPlatformHolderVisibleFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154,"description":"Persisted holder selection. Send this value when preserving choices currently hidden by tenant inventory eligibility."},"disabledPlatformHolderFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"resolvedRecipientComponentStyles":{"type":"object","propertyNames":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"maxProperties":154,"additionalProperties":{"type":"object","properties":{"preset":{"enum":["card","plain","highlight"]},"icon":{"enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"enum":["default","mint","pink"]},"width":{"enum":["full","narrow"]},"pairWith":{"type":["string","null"],"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired",null]}},"required":["preset","icon","tone","width","pairWith"],"additionalProperties":false},"description":"Complete effective styles for the current recipient selection, including domain defaults. recipientComponentStyles retains the actual saved overrides."},"rows":{"type":"array","maxItems":154,"items":{"oneOf":[{"type":"object","properties":{"columns":{"const":1},"fieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":1,"minItems":1}},"required":["columns","fieldKeys"],"additionalProperties":false},{"type":"object","properties":{"columns":{"const":2},"fieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":2,"minItems":2}},"required":["columns","fieldKeys"],"additionalProperties":false}]}},"styleGuide":{"type":"object","const":{"version":1,"fontFamily":"system","cardRadius":10,"gap":10,"padding":12,"labelFontSize":10,"valueFontSize":15,"narrowValueFontSize":14,"titleFontSize":26,"iconSize":22,"titleIconSize":28,"iconStrokeWidth":1.8,"minimumColumnWidth":120,"collapseBelowWidth":280,"text":"#0c1227","mutedText":"#5b6982","tones":{"default":{"background":"#ffffff","border":"#e0e5ed","icon":"#4e5b74","accent":"#203d65","badgeBackground":"#e8eef8","badgeText":"#203d65"},"mint":{"background":"#edfff7","border":"#c8efdf","icon":"#177468","accent":"#177468","badgeBackground":"#dbfaed","badgeText":"#07845f"},"pink":{"background":"#fff0f6","border":"#f3b7d0","icon":"#c9136a","accent":"#ec006c","badgeBackground":"#ffe1ee","badgeText":"#c9136a"}},"presets":{"card":{"border":true,"background":"tone","emphasis":"normal"},"plain":{"border":false,"background":"transparent","emphasis":"normal"},"highlight":{"border":true,"background":"tone","emphasis":"strong"}},"kinds":{"badge":{"fontSize":12,"radius":20,"horizontalPadding":9,"verticalPadding":5},"action":{"fontSize":13,"radius":7,"padding":9},"list":{"fontSize":13,"lineHeight":1.6,"indentation":14}},"pairing":"adjacent_compatible_narrow","unpairedNarrow":"full"}}},"required":["typeKey","label","version","requiredFieldKeys","platformHolderVisibleFieldKeys","recipientVisibleFieldKeys","recipientFieldOrder","recipientComponentStyles","configuredPlatformHolderVisibleFieldKeys","disabledPlatformHolderFieldKeys","resolvedRecipientComponentStyles","rows","styleGuide"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointment-layouts/{typeKey}":{"put":{"operationId":"updateHolderAppointmentLayout","summary":"Eigen afspraakcomponenten en indeling opslaan","description":"Slaat uitsluitend een tenantoverride op via dezelfde gevalideerde writer als de componentenbouwer. Geef de laatst gelezen expectedVersion en volledige veldselecties, ontvangersvolgorde en stijloverrides mee. De volgorde bevat ieder zichtbaar ontvangersveld precies eenmaal; iconen, kleuren, breedte en wederzijdse koppelingen volgen het bestaande componentcontract. Verplichte en tijdelijk verborgen platformhouderkeuzes blijven beschermd. Een verouderde versie wordt geweigerd; de writer gebruikt daarnaast een atomaire Firestore-precondition. Globale indelingen en andere tenants worden nooit gewijzigd. Een gelijktijdige write kan een veilige domeinvalidatiefout geven; vernieuw de indeling voordat je een nieuw voorstel maakt.\n\nRequired role: `platform_holder_user`. Required scope: `appointment-types:write`. Use a scoped bearer API key or an authorized same-origin browser session. Available during platform-holder onboarding.","tags":["Platformhouder"],"security":[{"bearerKey":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointment-types:write","x-dont4get-session-only":false,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"typeKey","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":false,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedVersion":{"type":"integer","minimum":1},"platformHolderVisibleFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"recipientVisibleFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"recipientFieldOrder":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"recipientComponentStyles":{"type":"object","propertyNames":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"maxProperties":154,"additionalProperties":{"type":"object","properties":{"preset":{"enum":["card","plain","highlight"]},"icon":{"enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"enum":["default","mint","pink"]},"width":{"enum":["full","narrow"]},"pairWith":{"type":["string","null"],"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired",null]}},"required":["preset","icon","tone","width","pairWith"],"additionalProperties":false}}},"required":["expectedVersion","platformHolderVisibleFieldKeys","recipientVisibleFieldKeys","recipientFieldOrder","recipientComponentStyles"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"typeKey":{"enum":["general_appointment","restaurant_reservation","medical_appointment","medication_intake","business_consultation","service_appointment","pickup_collection","event_or_class"]},"label":{"type":"string","maxLength":200},"version":{"type":"integer","minimum":1},"requiredFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"platformHolderVisibleFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"recipientVisibleFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"recipientFieldOrder":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"recipientComponentStyles":{"type":"object","propertyNames":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"maxProperties":154,"additionalProperties":{"type":"object","properties":{"preset":{"enum":["card","plain","highlight"]},"icon":{"enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"enum":["default","mint","pink"]},"width":{"enum":["full","narrow"]},"pairWith":{"type":["string","null"],"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired",null]}},"required":["preset","icon","tone","width","pairWith"],"additionalProperties":false}},"configuredPlatformHolderVisibleFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154,"description":"Persisted holder selection. Send this value when preserving choices currently hidden by tenant inventory eligibility."},"disabledPlatformHolderFieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":154},"resolvedRecipientComponentStyles":{"type":"object","propertyNames":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"maxProperties":154,"additionalProperties":{"type":"object","properties":{"preset":{"enum":["card","plain","highlight"]},"icon":{"enum":["calendar","clock","pin","bell","user","wallet","check","file","briefcase","pill","repeat","info"]},"tone":{"enum":["default","mint","pink"]},"width":{"enum":["full","narrow"]},"pairWith":{"type":["string","null"],"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired",null]}},"required":["preset","icon","tone","width","pairWith"],"additionalProperties":false},"description":"Complete effective styles for the current recipient selection, including domain defaults. recipientComponentStyles retains the actual saved overrides."},"rows":{"type":"array","maxItems":154,"items":{"oneOf":[{"type":"object","properties":{"columns":{"const":1},"fieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":1,"minItems":1}},"required":["columns","fieldKeys"],"additionalProperties":false},{"type":"object","properties":{"columns":{"const":2},"fieldKeys":{"type":"array","items":{"enum":["title","shortDescription","description","subcategoryKey","tags","priority","referenceNumber","publicReference","organizationId","departmentId","ownerTeamId","organizerUserId","schedule.type","schedule.timezone","schedule.startDate","schedule.startTime","schedule.endDate","schedule.endTime","schedule.dayPart","schedule.durationMinutes","schedule.actualDurationMinutes","schedule.windowStartsAt","schedule.windowEndsAt","schedule.dueAt","schedule.flexibility","recurrence.enabled","recurrence.frequency","recurrence.interval","recurrence.daysOfWeek","recurrence.dayOfMonth","recurrence.weekOfMonth","recurrence.monthsOfYear","recurrence.startDate","recurrence.endMode","recurrence.endDate","recurrence.occurrenceCount","recurrence.exceptionDates","recurrence.inclusionDates","recurrence.timeOfDay","location.mode","location.locationId","location.name","location.addressLine1","location.addressLine2","location.postalCode","location.city","location.region","location.countryCode","location.latitude","location.longitude","location.map","location.floor","location.room","location.entrance","location.accessInstructions","location.onlineProvider","location.onlineMeetingUrl","location.dialInNumber","location.meetingCode","recipientId","recipient.displayName","recipient.email","recipient.phoneNumberE164","recipient.preferredLocale","assignedProfessionalId","participantIds","participantRoles","attendeeCount","capacity","companionCount","contactPreference","serviceId","serviceName","resourceIds","quantity","unit","preparationDurationMinutes","cleanupDurationMinutes","financial.amountMinor","financial.amountType","financial.currency","financial.taxMode","financial.taxAmountMinor","financial.taxRate","financial.discountAmountMinor","financial.depositAmountMinor","financial.paymentRequired","financial.paymentStatus","financial.paymentDueAt","financial.cancellationFeeMinor","financial.noShowFeeMinor","financial.noShowFeeTaxMode","financial.noShowFeeTaxAmountMinor","financial.noShowFeeTaxRate","financial.refundPolicy","reminderPolicyId","remindersEnabled","reminderOffsetsMinutes","notificationChannels","messageTemplateId","confirmationRequired","responseDeadline","actions.canCancel","actions.cancellationDeadline","actions.canReschedule","actions.rescheduleDeadline","actions.checkInRequired","actions.checkInMethod","actions.completionConfirmationRequired","attendance.status","attendance.arrivedAt","attendance.lateThresholdMinutes","attendance.latenessMinutes","attendance.lateReasonCode","attendance.lateReasonText","instructions.before","instructions.after","bringItems","preparationChecklist","recipientNotes","internalNotes","accessibilityNeeds","languageSupport","attachmentIds","externalLinks","termsUrl","medication.name","medication.productCode","medication.doseAmount","medication.doseUnit","medication.dosageForm","medication.administrationRoute","medication.mealRelation","medication.intakeWindowMinutes","medication.instructions","medication.missedReason","medication.prescriberReference","medication.pharmacyId","hospitality.partySize","hospitality.tablePreference","hospitality.dietaryRequirements","hospitality.occasion","hospitality.preOrder","business.caseReference","business.subject","business.agendaItems","business.customerReference","cancellationReasonCode","cancellationReasonText","outcomeCode","outcomeNotes","privacy.sensitivity","privacy.visibilityScope","privacy.consentRequired"]},"uniqueItems":true,"maxItems":2,"minItems":2}},"required":["columns","fieldKeys"],"additionalProperties":false}]}},"styleGuide":{"type":"object","const":{"version":1,"fontFamily":"system","cardRadius":10,"gap":10,"padding":12,"labelFontSize":10,"valueFontSize":15,"narrowValueFontSize":14,"titleFontSize":26,"iconSize":22,"titleIconSize":28,"iconStrokeWidth":1.8,"minimumColumnWidth":120,"collapseBelowWidth":280,"text":"#0c1227","mutedText":"#5b6982","tones":{"default":{"background":"#ffffff","border":"#e0e5ed","icon":"#4e5b74","accent":"#203d65","badgeBackground":"#e8eef8","badgeText":"#203d65"},"mint":{"background":"#edfff7","border":"#c8efdf","icon":"#177468","accent":"#177468","badgeBackground":"#dbfaed","badgeText":"#07845f"},"pink":{"background":"#fff0f6","border":"#f3b7d0","icon":"#c9136a","accent":"#ec006c","badgeBackground":"#ffe1ee","badgeText":"#c9136a"}},"presets":{"card":{"border":true,"background":"tone","emphasis":"normal"},"plain":{"border":false,"background":"transparent","emphasis":"normal"},"highlight":{"border":true,"background":"tone","emphasis":"strong"}},"kinds":{"badge":{"fontSize":12,"radius":20,"horizontalPadding":9,"verticalPadding":5},"action":{"fontSize":13,"radius":7,"padding":9},"list":{"fontSize":13,"lineHeight":1.6,"indentation":14}},"pairing":"adjacent_compatible_narrow","unpairedNarrow":"full"}}},"required":["typeKey","label","version","requiredFieldKeys","platformHolderVisibleFieldKeys","recipientVisibleFieldKeys","recipientFieldOrder","recipientComponentStyles","configuredPlatformHolderVisibleFieldKeys","disabledPlatformHolderFieldKeys","resolvedRecipientComponentStyles","rows","styleGuide"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/voice/capabilities":{"get":{"operationId":"getHolderVoiceCapabilities","summary":"Stemfuncties en invoercontracten lezen","description":"Zonder query: compacte actielijst zonder grote schema's. Met operationId: één toegestane operatie met exacte parameters/query/body/response-schema's. Lees eerst de lijst en daarna het schema voor de gekozen actie. Nieuwe businessoperaties worden pas na beoordeling toegevoegd. Alleen eigen ingelogde platformhouder; geen API-sleutels, impersonatie of ontvangers. Geen ElevenLabs-verbinding vereist voor deze metadata.\n\nRequired role: `platform_holder_user`. Required scope: `voice:use`. This operation requires an authenticated browser session; bearer credentials cannot perform it. Available during platform-holder onboarding.","tags":["Platformhouder stem"],"security":[{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"voice:use","x-dont4get-session-only":true,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"operationId","in":"query","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"}}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"schemaVersion":{"const":1},"contractVersion":{"type":"string","maxLength":32},"runtime":{"type":"object","properties":{"configured":{"type":"boolean"},"region":{"enum":["eu",null]},"agentId":{"type":["string","null"]},"errorCode":{"type":["string","null"]}},"required":["configured","region","agentId","errorCode"],"additionalProperties":false},"operations":{"type":"array","items":{"type":"object","properties":{"operationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"mode":{"enum":["read","proposal"]},"method":{"type":"string","maxLength":10},"path":{"type":"string","maxLength":500},"summary":{"type":"string","maxLength":500},"description":{"type":"string","maxLength":8000},"scope":{"type":"string","maxLength":100},"allowDraft":{"type":"boolean"},"schemaIncluded":{"type":"boolean"},"parameters":{"type":"object","additionalProperties":true,"maxProperties":100},"query":{"type":"object","additionalProperties":true,"maxProperties":100},"body":{"type":"object","additionalProperties":true,"maxProperties":100},"response":{"type":"object","additionalProperties":true,"maxProperties":100},"humanFields":{"type":"array","items":{"type":"string","maxLength":80}}},"required":["operationId","mode","method","path","summary","description","scope","allowDraft","schemaIncluded","humanFields"],"additionalProperties":false}}},"required":["schemaVersion","contractVersion","runtime","operations"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/voice/sessions":{"post":{"operationId":"startHolderVoiceSession","summary":"Private ElevenLabs-verbinding voorbereiden","description":"Bewaar de clientRequestId vooraf als sessionId. Poll GET sessions/{sessionId} parallel tijdens dit verzoek. Een idempotente retry hergebruikt dezelfde verbinding. Verbindingsgeheimen zijn alleen voor de eigen app, nooit voor een toolresultaat of log. EU-verwerking en serverconfiguratie moeten expliciet gereed zijn.\n\nRequired role: `platform_holder_user`. Required scope: `voice:use`. This operation requires an authenticated browser session; bearer credentials cannot perform it. Available during platform-holder onboarding.","tags":["Platformhouder stem"],"security":[{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"voice:use","x-dont4get-session-only":true,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":true,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$"}},"required":["clientRequestId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$"},"status":{"enum":["connecting","ready","failed","timed_out","expired"]},"phase":{"type":"string","maxLength":80},"startedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"errorCode":{"type":["string","null"]},"connection":{"anyOf":[{"type":"null"},{"type":"object","properties":{"provider":{"const":"elevenlabs"},"transport":{"const":"websocket"},"region":{"const":"eu"},"agentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"signedUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time"}},"required":["provider","transport","region","agentId","signedUrl","expiresAt"],"additionalProperties":false}]}},"required":["sessionId","status","phase","startedAt","updatedAt","completedAt","expiresAt","errorCode","connection"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/voice/sessions/{sessionId}":{"get":{"operationId":"getHolderVoiceSession","summary":"Verbindingsvoortgang lezen","description":"Alleen de maker kan de status en kortlevende signed URL lezen. connecting ouder dan 30 seconden wordt timed_out. expiresAt begrenst de actiesessie; connection.expiresAt begrenst afzonderlijk het starten van de verbinding. Geen transcript of API-sleutel wordt opgeslagen.\n\nRequired role: `platform_holder_user`. Required scope: `voice:use`. This operation requires an authenticated browser session; bearer credentials cannot perform it. Available during platform-holder onboarding.","tags":["Platformhouder stem"],"security":[{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"voice:use","x-dont4get-session-only":true,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"sessionId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$"},"status":{"enum":["connecting","ready","failed","timed_out","expired"]},"phase":{"type":"string","maxLength":80},"startedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"errorCode":{"type":["string","null"]},"connection":{"anyOf":[{"type":"null"},{"type":"object","properties":{"provider":{"const":"elevenlabs"},"transport":{"const":"websocket"},"region":{"const":"eu"},"agentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"signedUrl":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time"}},"required":["provider","transport","region","agentId","signedUrl","expiresAt"],"additionalProperties":false}]}},"required":["sessionId","status","phase","startedAt","updatedAt","completedAt","expiresAt","errorCode","connection"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/voice/actions":{"post":{"operationId":"runHolderVoiceAction","summary":"Stemactie lezen of als voorstel voorbereiden","description":"Clienttool roept dit via de bestaande eigen app-sessie aan. De server bindt de tenant, valideert de onderliggende DTO en weigert onbekende operaties en menselijke bevestigingsvelden. Reads voeren dezelfde businesshandler uit; writes bewaren een versleuteld, onveranderlijk voorstel. Geen wijziging gebeurt voordat een afzonderlijke bevestigingsknop wordt gebruikt. Bij hetzelfde clientRequestId moet de aanvraag identiek blijven.\n\nRequired role: `platform_holder_user`. Required scope: `voice:use`. This operation requires an authenticated browser session; bearer credentials cannot perform it. Available during platform-holder onboarding.","tags":["Platformhouder stem"],"security":[{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"voice:use","x-dont4get-session-only":true,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":true,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$"},"clientRequestId":{"type":"string","format":"uuid","pattern":"^[a-f0-9-]{36}$"},"operationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"arguments":{"type":"object","properties":{"params":{"type":"object","additionalProperties":true,"maxProperties":100},"query":{"type":"object","additionalProperties":true,"maxProperties":100},"body":{"type":"object","additionalProperties":true,"maxProperties":100}},"required":[],"additionalProperties":false}},"required":["sessionId","clientRequestId","operationId","arguments"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"kind":{"enum":["read","proposal"]},"operationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"data":{},"proposalId":{"type":["string","null"]}},"required":["kind","operationId","data","proposalId"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/voice/proposals/{proposalId}":{"get":{"operationId":"getHolderVoiceProposal","summary":"Exact stemvoorstel en uitvoeringsstatus lezen","description":"Render de door de server bewaarde argumenten in een eigen reviewformulier. Poll automatisch tijdens uitvoering. Na 30 seconden zonder update: stalled; na 120 seconden: timed_out. Een onzekere uitvoering mag nooit blind opnieuw worden uitgevoerd. Resultaten en voorstelinhoud worden versleuteld bewaard; geen audio of transcript.\n\nRequired role: `platform_holder_user`. Required scope: `voice:use`. This operation requires an authenticated browser session; bearer credentials cannot perform it. Available during platform-holder onboarding.","tags":["Platformhouder stem"],"security":[{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"voice:use","x-dont4get-session-only":true,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"proposalId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"proposalId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"operationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"summary":{"type":"string","maxLength":500},"status":{"enum":["prepared","running","completed","failed","expired","cancelled","stalled","timed_out"]},"arguments":{"type":"object","properties":{"params":{"type":"object","additionalProperties":true,"maxProperties":100},"query":{"type":"object","additionalProperties":true,"maxProperties":100},"body":{"type":"object","additionalProperties":true,"maxProperties":100}},"required":[],"additionalProperties":false},"phase":{"type":"string","maxLength":80},"startedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"errorCode":{"type":["string","null"]},"mayHaveApplied":{"type":"boolean"},"result":{}},"required":["proposalId","operationId","summary","status","arguments","phase","startedAt","updatedAt","completedAt","expiresAt","errorCode","mayHaveApplied","result"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/voice/proposals/{proposalId}/confirm":{"post":{"operationId":"confirmHolderVoiceProposal","summary":"Exact voorstel via een menselijke appactie uitvoeren","description":"Uitsluitend aanroepen vanuit een aparte menselijke bevestigingsknop, nooit registreren als ElevenLabs-tool. De server accepteert geen vervangende argumenten, hercontroleert rechten en tenant en claimt de uitvoering atomair. Dubbele bevestiging voert nooit opnieuw uit. Voor betaalinrichting moet een aparte toestemmingskeuze billingConsentAccepted=true leveren. De onderliggende API blijft gezaghebbend voor actuele versie/capaciteit.\n\nRequired role: `platform_holder_user`. Required scope: `voice:use`. This operation requires an authenticated browser session; bearer credentials cannot perform it. Available during platform-holder onboarding.","tags":["Platformhouder stem"],"security":[{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"voice:use","x-dont4get-session-only":true,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"proposalId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":true,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"confirmedByHuman":{"const":true},"billingConsentAccepted":{"const":true}},"required":["confirmedByHuman"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"proposalId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"operationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"summary":{"type":"string","maxLength":500},"status":{"enum":["prepared","running","completed","failed","expired","cancelled","stalled","timed_out"]},"arguments":{"type":"object","properties":{"params":{"type":"object","additionalProperties":true,"maxProperties":100},"query":{"type":"object","additionalProperties":true,"maxProperties":100},"body":{"type":"object","additionalProperties":true,"maxProperties":100}},"required":[],"additionalProperties":false},"phase":{"type":"string","maxLength":80},"startedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"errorCode":{"type":["string","null"]},"mayHaveApplied":{"type":"boolean"},"result":{}},"required":["proposalId","operationId","summary","status","arguments","phase","startedAt","updatedAt","completedAt","expiresAt","errorCode","mayHaveApplied","result"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/voice/proposals/{proposalId}/cancel":{"post":{"operationId":"cancelHolderVoiceProposal","summary":"Niet-uitgevoerd stemvoorstel verwerpen","description":"Verwerpt uitsluitend een eigen prepared voorstel; reeds gestarte uitvoering wordt niet afgebroken of herhaald.\n\nRequired role: `platform_holder_user`. Required scope: `voice:use`. This operation requires an authenticated browser session; bearer credentials cannot perform it. Available during platform-holder onboarding.","tags":["Platformhouder stem"],"security":[{"browserSession":[]},{"secureBrowserSession":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"voice:use","x-dont4get-session-only":true,"x-dont4get-bearer-only":false,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"proposalId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."},{"name":"X-Dont4get-CSRF","in":"header","required":true,"schema":{"type":"string","const":"1"},"description":"Required when using browser-session authentication, together with a same-origin Origin header. Not required for bearer-key requests. Swagger supplies this header when browser-session mode is explicitly enabled."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"additionalProperties":false,"properties":{"data":{"type":"object","properties":{"proposalId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"operationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"summary":{"type":"string","maxLength":500},"status":{"enum":["prepared","running","completed","failed","expired","cancelled","stalled","timed_out"]},"arguments":{"type":"object","properties":{"params":{"type":"object","additionalProperties":true,"maxProperties":100},"query":{"type":"object","additionalProperties":true,"maxProperties":100},"body":{"type":"object","additionalProperties":true,"maxProperties":100}},"required":[],"additionalProperties":false},"phase":{"type":"string","maxLength":80},"startedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"errorCode":{"type":["string","null"]},"mayHaveApplied":{"type":"boolean"},"result":{}},"required":["proposalId","operationId","summary","status","arguments","phase","startedAt","updatedAt","completedAt","expiresAt","errorCode","mayHaveApplied","result"],"additionalProperties":false},"requestId":{"type":"string"}}}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/platform-holders/{platformHolderId}/appointments/intake":{"post":{"operationId":"intakeAppointment","summary":"Submit a definitive appointment","description":"Upserts authoritative source state by tenant + sourceSystem + externalAppointmentId. New scoped keys and existing appointments:intake keys are supported. This original endpoint retains its unwrapped response for compatibility. Confirmed intake may trigger an app invitation/SMS; check delivery.status, because accepted intake is not proof of delivery. status=cancelled preserves history and releases stored scheduling capacity atomically without sending an invitation. The source system remains authoritative; this endpoint does not write external calendars. An optional appointmentTypeId on a confirmed intake must refer to an active appointment type owned by this tenant. Do not put medical, financial or other sensitive detail in title or metadata.\n\nRequired role: `platform_holder_user`. Required scope: `appointments:intake`. This legacy-compatible operation accepts a bearer API key only; browser sessions cannot perform it. Requires an active platform holder.","tags":["Appointments"],"security":[{"bearerKey":[]}],"x-dont4get-role":"platform_holder_user","x-dont4get-scope":"appointments:intake","x-dont4get-session-only":false,"x-dont4get-bearer-only":true,"parameters":[{"name":"platformHolderId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"description":"Stable resource identifier. Authorization is evaluated server-side for every request."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sourceSystem":{"type":"string","maxLength":100,"minLength":1},"externalAppointmentId":{"type":"string","maxLength":200,"minLength":1},"externalCalendarId":{"type":"string","maxLength":200},"organizationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"locationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"locationText":{"type":"string","maxLength":500},"title":{"type":"string","maxLength":200},"schedulingLocationId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$","description":"Explicit tenant scheduling location. This is distinct from the existing source locationId and is never inferred from locationText or component values."},"resourceIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"uniqueItems":true,"maxItems":10,"description":"Explicit person and room scheduling-resource IDs in this tenant. Omission preserves an existing appointment's allocation; it cannot disable the retained appointment-type policy."},"appointmentTypeId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"timezone":{"type":"string","maxLength":100,"minLength":1},"status":{"enum":["confirmed","cancelled"],"default":"confirmed","description":"Authoritative source appointment state. Cancelled releases capacity and suppresses invitation delivery; omitted defaults to confirmed."},"componentData":{"type":"object","maxProperties":150,"additionalProperties":false,"description":"Optional actual recipient component values keyed by the canonical catalog field key. Core appointment dates, title, own recipient identity and derived map are authoritative elsewhere. Internal notes, raw IDs, privacy and provider data are prohibited. This payload does not grant action permissions.","properties":{"shortDescription":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"referenceNumber":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"publicReference":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.addressLine1":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.addressLine2":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.floor":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.room":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.entrance":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.onlineProvider":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.meetingCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"serviceName":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"unit":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.name":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.productCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.doseUnit":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.dosageForm":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.administrationRoute":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.mealRelation":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.missedReason":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"hospitality.tablePreference":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"hospitality.occasion":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"business.caseReference":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"business.subject":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"business.customerReference":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"cancellationReasonCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"outcomeCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.name":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.city":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.region":{"anyOf":[{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"description":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.accessInstructions":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.lateReasonText":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"instructions.before":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"instructions.after":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recipientNotes":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.instructions":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"cancellationReasonText":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"outcomeNotes":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.postalCode":{"anyOf":[{"type":"string","minLength":1,"maxLength":32,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"priority":{"anyOf":[{"type":"string","enum":["low","normal","high","urgent"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.type":{"anyOf":[{"type":"string","enum":["date","date_time","time_window","deadline","recurring"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.dayPart":{"anyOf":[{"type":"string","enum":["morning","afternoon","evening","night"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.flexibility":{"anyOf":[{"type":"string","enum":["fixed","flexible","approximate"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.frequency":{"anyOf":[{"type":"string","enum":["daily","weekly","monthly","yearly"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.endMode":{"anyOf":[{"type":"string","enum":["never","date","occurrence_count"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.weekOfMonth":{"anyOf":[{"type":"string","enum":["first","second","third","fourth","last"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.mode":{"anyOf":[{"type":"string","enum":["physical","online","telephone","unspecified"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"contactPreference":{"anyOf":[{"type":"string","enum":["app","email","phone"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.amountType":{"anyOf":[{"type":"string","enum":["service_fee","booking_fee","deposit","cancellation_fee","no_show_fee","other"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.taxMode":{"anyOf":[{"type":"string","enum":["included","excluded","exempt","out_of_scope"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.noShowFeeTaxMode":{"anyOf":[{"type":"string","enum":["included","excluded","exempt","out_of_scope"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.paymentStatus":{"anyOf":[{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.refundPolicy":{"anyOf":[{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.checkInMethod":{"anyOf":[{"type":"string","enum":["app","qr","kiosk","staff","geofence"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.status":{"anyOf":[{"type":"string","enum":["expected","arrived","on_time","late","no_show","excused"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.lateReasonCode":{"anyOf":[{"type":"string","enum":["traffic","public_transport","weather","illness","emergency","provider_delay","other","prefer_not_to_say"]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.paymentRequired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"remindersEnabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"confirmationRequired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.canCancel":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.canReschedule":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.checkInRequired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.completionConfirmationRequired":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.startDate":{"anyOf":[{"type":"string","format":"date","maxLength":10},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.endDate":{"anyOf":[{"type":"string","format":"date","maxLength":10},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.timeOfDay":{"anyOf":[{"type":"string","pattern":"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.windowStartsAt":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.windowEndsAt":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.dueAt":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.paymentDueAt":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"responseDeadline":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.arrivedAt":{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.cancellationDeadline":{"anyOf":[{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"string","maxLength":100,"pattern":"^P(?=.+)(?:[0-9]+D)?(?:T(?=.+)(?:[0-9]+H)?(?:[0-9]+M)?(?:[0-9]+(?:\\.[0-9]+)?S)?)?$"}]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"actions.rescheduleDeadline":{"anyOf":[{"anyOf":[{"type":"string","format":"date-time","maxLength":50},{"type":"string","maxLength":100,"pattern":"^P(?=.+)(?:[0-9]+D)?(?:T(?=.+)(?:[0-9]+H)?(?:[0-9]+M)?(?:[0-9]+(?:\\.[0-9]+)?S)?)?$"}]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"schedule.actualDurationMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendeeCount":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"capacity":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"companionCount":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"preparationDurationMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"cleanupDurationMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.lateThresholdMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"attendance.latenessMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.intakeWindowMinutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"hospitality.partySize":{"anyOf":[{"type":"integer","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.interval":{"anyOf":[{"type":"integer","minimum":1,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.occurrenceCount":{"anyOf":[{"type":"integer","minimum":1,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.dayOfMonth":{"anyOf":[{"anyOf":[{"type":"integer","minimum":1,"maximum":31},{"const":"last"}]},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.amountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.taxAmountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.discountAmountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.depositAmountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.cancellationFeeMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.noShowFeeMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.noShowFeeTaxAmountMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.taxRate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.noShowFeeTaxRate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"quantity":{"anyOf":[{"type":"number","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"medication.doseAmount":{"anyOf":[{"type":"number","minimum":0,"maximum":1000000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.latitude":{"anyOf":[{"type":"number","minimum":-90,"maximum":90},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.longitude":{"anyOf":[{"type":"number","minimum":-180,"maximum":180},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.onlineMeetingUrl":{"anyOf":[{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"termsUrl":{"anyOf":[{"anyOf":[{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},{"type":"string","maxLength":2000,"pattern":"^/(?!/)[^\\\\]*$"}],"description":"Stable same-origin relative path or external HTTPS URL; temporary deployment hosts are prohibited."},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"externalLinks":{"anyOf":[{"type":"array","items":{"type":"string","format":"uri","pattern":"^https://","maxLength":2000},"maxItems":25,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.dialInNumber":{"anyOf":[{"type":"string","minLength":3,"maxLength":40,"pattern":"^[+0-9 ()-]+$"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"location.countryCode":{"anyOf":[{"type":"string","pattern":"^[A-Z]{2}$"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"financial.currency":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"tags":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"bringItems":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"accessibilityNeeds":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"languageSupport":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"hospitality.dietaryRequirements":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"business.agendaItems":{"anyOf":[{"type":"array","items":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"notificationChannels":{"anyOf":[{"type":"array","items":{"type":"string","enum":["app","email","sms","push"]},"maxItems":4,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.daysOfWeek":{"anyOf":[{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.monthsOfYear":{"anyOf":[{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"maxItems":12,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"reminderOffsetsMinutes":{"anyOf":[{"type":"array","items":{"type":"integer","minimum":0,"maximum":525600},"maxItems":25,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.exceptionDates":{"anyOf":[{"type":"array","items":{"type":"string","format":"date","maxLength":10},"maxItems":200,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"recurrence.inclusionDates":{"anyOf":[{"type":"array","items":{"type":"string","format":"date","maxLength":10},"maxItems":200,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"preparationChecklist":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"},"completed":{"type":"boolean"}},"required":["label","completed"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"hospitality.preOrder":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},"quantity":{"type":"number","minimum":0,"maximum":1000000}},"required":["label","quantity"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."},"participantRoles":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"pattern":"\\S"},"role":{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"}},"required":["label","role"],"additionalProperties":false},"maxItems":100,"uniqueItems":true},{"type":"null"}],"description":"Null clears this component and suppresses its legacy value."}}},"metadata":{"type":"object","maxProperties":25,"propertyNames":{"pattern":"^[a-zA-Z][a-zA-Z0-9_]{0,63}$"},"additionalProperties":{"type":"string","maxLength":500}},"recipient":{"type":"object","properties":{"displayName":{"type":"string","maxLength":200},"email":{"type":"string","format":"email","maxLength":254},"externalRecipientId":{"type":"string","maxLength":200},"phoneCountryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"phoneNumber":{"type":"string","maxLength":40},"phoneNumberE164":{"type":"string","pattern":"^\\+[1-9][0-9]{6,14}$"}},"required":[],"additionalProperties":false}},"required":["sourceSystem","externalAppointmentId","startsAt","endsAt","timezone","recipient"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success. See the response schema and operation description for state transitions and any remaining human review.","headers":{"X-Request-Id":{"description":"Safe correlation identifier for support.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"appointmentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$"},"delivery":{"type":"object","properties":{"channel":{"type":"string"},"status":{"type":"string"},"provider":{"type":"string"},"errorCode":{"type":"string"},"downloadUrl":{"type":"string"}},"required":["channel","status"],"additionalProperties":false},"recipientId":{"type":["string","null"]},"recipientMatch":{"type":["object","null"],"properties":{"created":{"type":"boolean"},"matchedBy":{"type":"string"}},"additionalProperties":false},"sourceAppointmentState":{"const":"definitive"},"status":{"const":"accepted"}},"required":["appointmentId","delivery","recipientId","recipientMatch","sourceAppointmentState","status"],"additionalProperties":false}}}},"400":{"description":"Malformed JSON, unknown fields, or an invalid request. Correct the request before retrying.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}},"401":{"description":"Missing, expired, revoked, or invalid authentication. Reauthenticate; do not retry indefinitely.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}},"403":{"description":"The authenticated actor lacks the required role, scope, active assignment or tenant state. God-user privileges are never accepted here.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}},"404":{"description":"The resource is unavailable in the caller's authorized context. This does not reveal whether another tenant owns it.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}},"409":{"description":"The operation conflicts with current state. Read the resource and resolve the conflict before retrying.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}},"412":{"description":"A write precondition no longer matches. Fetch the latest version and reconcile the change.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}},"413":{"description":"The request body exceeds the documented size limit. Reduce the payload before retrying.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}},"415":{"description":"Unsupported content type. Send JSON bodies as application/json.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}},"429":{"description":"Too many requests. Respect Retry-After when returned and retry with bounded exponential backoff.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}},"500":{"description":"The operation could not be completed. Preserve the request identifier for support, without logging personal data or credentials.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}},"503":{"description":"A required service is unavailable or unconfigured. Retry only when safe for this operation.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ApiError"},{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}]}}}}}}}},"components":{"securitySchemes":{"bearerKey":{"type":"http","scheme":"bearer","bearerFormat":"Dont4get API key","description":"Paste only the secret key. Store it in a secret manager; never in URLs, source code or browser localStorage. The key is bound to one regular actor and their current role."},"recipientSession":{"type":"http","scheme":"bearer","bearerFormat":"Opaque recipient session","description":"Existing Dont4get SMS login accessToken: 43 base64url characters, not a JWT. Send only the token. The API verifies its SHA-256 session record, expiry, active native profile and explicit platform-recipient binding in the same environment. It grants recipient self-service only and cannot manage API keys. Beta login remains on https://test.dont4get.io/api/v1/recipient/auth; these login endpoints retain their existing unwrapped responses and are not hosted by this data API."},"browserSession":{"type":"apiKey","in":"cookie","name":"authjs.session-token","description":"Browser-managed Auth.js session. Swagger sends no session cookies unless you explicitly enable browser-session mode. JavaScript cannot set the HttpOnly session cookie."},"secureBrowserSession":{"type":"apiKey","in":"cookie","name":"__Secure-authjs.session-token","description":"HTTPS browser-managed Auth.js session. Cookie writes additionally require the same-origin checks documented in the guide."}},"schemas":{"ApiError":{"type":"object","description":"Safe error response. Use the returned machine-readable code and request identifier; never rely on the human message as a stable contract.","additionalProperties":false,"required":["error","requestId"],"properties":{"error":{"type":"object","required":["code","message"],"additionalProperties":false,"properties":{"code":{"type":"string"},"message":{"type":"string"}}},"requestId":{"type":"string"}}}}},"externalDocs":{"description":"Dont4get API guide, security model and integration examples","url":"/developers/api"}}