{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/lightspeed/main/json-schema/lightspeed-reservation-service-platform-profile-schema.json", "title": "reservation-servicePlatformProfile", "x-generated": "2026-10-12", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/lightspeed-k-series-openapi.yml#/components/schemas/reservation-servicePlatformProfile", "properties": { "baseUrl": { "description": "The base URL of the external platform (optional).", "format": "uri", "type": "string" }, "depositSupported": { "$ref": "#/$defs/reservation-servicePlatformDepositSupported" }, "displayName": { "$ref": "#/$defs/reservation-servicePlatformDisplayName" }, "errorsWebhookUrl": { "description": "The URL where notifications for any issues will be sent.
Required for [`error` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).
See [Get Sample Error notification](https://api-docs.lsk.lightspeed.app/operation/operation-reservationErrorNotification).\n", "type": "string", "format": "uri" }, "integrationWebhookUrl": { "description": "The URL where notifications for activation or deactivation of the customer's integration will be sent.
Required for [`integration` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).
See [Integration notification](https://api-docs.lsk.lightspeed.app/operation/operation-reservationintegrationnotification).\n", "type": "string", "format": "uri" }, "notificationTypes": { "description": "The events that trigger a notification.", "items": { "type": "string", "enum": [ "ORDER_OPENED", "ORDER_UPDATED", "ORDER_CLOSED", "ONBOARDING_STARTED", "INTEGRATION_ACTIVATED", "INTEGRATION_DEACTIVATED", "POS_RESERVATION_UPDATED", "ERROR" ] }, "type": "array", "uniqueItems": true }, "onboardingWebhookUrl": { "description": "The URL where notifications for the customer's integration onboarding will be sent.
Required for [`onboarding` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).
See [Onboarding notification](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservationonboardingnotification).\n", "type": "string", "format": "uri" }, "orderWebhookUrl": { "description": "The URL where order notifications will be sent.
Required for [`order` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).
See [Order Notification](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservationordernotification).\n", "type": "string", "format": "uri" }, "posReservationUpdateWebhookUrl": { "description": "The URL where notifications about reservation changes on POS will be sent.", "type": "string", "format": "uri" }, "ownNotificationsOnly": { "description": "When `true`, notifications will only be sent for orders linked to the reservation platform.", "type": "boolean" }, "webhookAuthDetails": { "description": "The authentication credentials to be sent with the webhook notifications.", "properties": { "apiKeys": { "$ref": "#/$defs/reservation-servicePlatformAPIKeysWebhook" }, "basic": { "$ref": "#/$defs/reservation-servicePlatformBasicAuthWebhook" }, "bearer": { "$ref": "#/$defs/reservation-servicePlatformBearerTokenWebhook" }, "oauth2": { "$ref": "#/$defs/reservation-servicePlatformOAuth2Webhook" } }, "type": "object" }, "webhookAuthType": { "description": "The type of authentication used by the webhook.", "enum": [ "BASIC_AUTH", "BEARER_TOKEN", "API_KEYS", "OAUTH2", "NONE" ], "type": "string" }, "allowCourseNumberUpdates": { "type": "boolean", "default": false, "description": "If true, table statuses can be customized using a number format." }, "inServiceTableStatuses": { "items": { "$ref": "#/$defs/reservation-servicePlatformTableStatusDto" }, "type": "array", "description": "List of customizable table statuses that will be used to notify platforms about reservation progress with outbound API." }, "allowedPosStatuses": { "type": "array", "items": { "$ref": "#/$defs/reservation-servicePlatformReservationStatus" } } }, "required": [ "displayName", "webhookAuthType", "webhookAuthDetails" ], "type": "object", "$defs": { "reservation-servicePlatformAPIKeysWebhook": { "description": "The API keys that will be sent with the webhook notifications. See [API Keys](https://swagger.io/docs/specification/authentication/api-keys/).", "properties": { "headers": { "additionalProperties": { "description": "Key-value pairs of arbitrary static headers to send with the webhook request.", "type": "string" }, "type": "object" }, "parameters": { "additionalProperties": { "description": "Key-value pairs of arbitrary static query parameters to send with the webhook request.", "type": "string" }, "type": "object" } }, "type": "object" }, "reservation-servicePlatformBasicAuthWebhook": { "description": "The basic authentication credentials that will be sent with the webhook notifications. See [Basic Authentication](https://swagger.io/docs/specification/authentication/basic-authentication/).", "properties": { "password": { "description": "The basic auth password.", "format": "password", "type": "string" }, "username": { "description": "The basic auth username.", "type": "string" } }, "required": [ "username", "password" ], "type": "object" }, "reservation-servicePlatformBearerTokenWebhook": { "description": "The bearer token that will be sent with the webhook notifications. See [Bearer Authentication](https://swagger.io/docs/specification/authentication/bearer-authentication/).", "properties": { "token": { "description": "The bearer token.", "format": "password", "type": "string" }, "ttl": { "description": "Token expiration time in UTC.", "format": "date-time", "type": "string", "x-field-extra-annotation": "@com.fasterxml.jackson.annotation.JsonFormat(pattern = \"yyyy-MM-dd'T'HH:mm:ss\", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING, timezone = \"UTC\")" } }, "required": [ "token" ], "type": "object" }, "reservation-servicePlatformDepositSupported": { "description": "Whether or not the platform supports deposits.", "type": "boolean" }, "reservation-servicePlatformDisplayName": { "description": "The official platform name that will be displayed.", "type": "string" }, "reservation-servicePlatformOAuth2Webhook": { "description": "The OAuth2 credentials that will be sent with the webhook notifications. See [OAuth 2.0](https://oauth.net/2/).", "properties": { "authorizationGrantType": { "default": "CLIENT_CREDENTIALS", "description": "The authorization grant type. See [OAuth2 Grant Types](https://oauth.net/2/grant-types/).", "enum": [ "CLIENT_CREDENTIALS" ], "type": "string" }, "clientAuthorizationMethod": { "default": "CLIENT_SECRET_BASIC", "description": "The client authorization method. See [OAuth2 Client Authentication](https://oauth.net/2/client-authentication/).", "enum": [ "CLIENT_SECRET_BASIC", "CLIENT_SECRET_JWT", "CLIENT_SECRET_POST" ], "type": "string" }, "clientId": { "description": "The OAuth2 client ID.", "type": "string" }, "clientName": { "description": "The OAuth2 client name.", "type": "string" }, "clientSecret": { "description": "The OAuth2 client secret.", "format": "password", "type": "string" }, "providerJwkSetUri": { "description": "The external platform URL for getting public keys to verify given access tokens on the K-Series side.", "format": "uri", "type": "string" }, "providerTokenUri": { "description": "The external platform URL for getting access tokens by private credentials.", "format": "uri", "type": "string" }, "scopes": { "description": "The scopes being granted to the API client.", "items": { "type": "string" }, "type": "array", "uniqueItems": true } }, "required": [ "clientId", "clientSecret", "providerTokenUri" ], "type": "object" }, "reservation-servicePlatformReservationStatus": { "description": "External reservation statuses for platforms.", "enum": [ "ON_HOLD", "SCHEDULED", "PARTIALLY_ARRIVED", "ARRIVED", "PARTIALLY_SEATED", "SEATED", "DEPARTED", "CANCELLED", "NO_SHOW", "ERROR" ], "type": "string" }, "reservation-servicePlatformTableStatusDto": { "properties": { "statusLabel": { "type": "string", "description": "The unique text which will be displayed in the back-office for users." }, "statusValue": { "type": "string", "description": "The unique code which will be used for outbound communication within table status mapping." }, "sequence": { "format": "int32", "type": "integer", "description": "This number is used to resolve collisions between statuses in order of highest priority." } }, "type": "object", "required": [ "statusLabel", "statusValue", "sequence" ] } } }