Lightspeed · Schema
reservation-servicePlatformProfile
reservation-servicePlatformProfile schema from Lightspeed Restaurant K Series API
POSRetailRestaurantEcommerce
Properties
| Name | Type | Description |
|---|---|---|
| baseUrl | string | The base URL of the external platform (optional). |
| depositSupported | boolean | Whether or not the platform supports deposits. |
| displayName | string | The official platform name that will be displayed. |
| errorsWebhookUrl | string | 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 |
| integrationWebhookUrl | string | 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/oper |
| notificationTypes | array | The events that trigger a notification. |
| onboardingWebhookUrl | string | 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-rese |
| orderWebhookUrl | string | The URL where order notifications will be sent. Required for [`order` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operatio |
| posReservationUpdateWebhookUrl | string | The URL where notifications about reservation changes on POS will be sent. |
| ownNotificationsOnly | boolean | When `true`, notifications will only be sent for orders linked to the reservation platform. |
| webhookAuthDetails | object | The authentication credentials to be sent with the webhook notifications. |
| webhookAuthType | string | The type of authentication used by the webhook. |
| allowCourseNumberUpdates | boolean | If true, table statuses can be customized using a number format. |
| inServiceTableStatuses | array | List of customizable table statuses that will be used to notify platforms about reservation progress with outbound API. |
| allowedPosStatuses | array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "reservation-servicePlatformProfile",
"description": "reservation-servicePlatformProfile schema from Lightspeed Restaurant K Series API",
"$id": "https://raw.githubusercontent.com/api-evangelist/lightspeed-pos/refs/heads/main/json-schema/restaurant-k-series-reservation-service-platform-profile-schema.json",
"type": "object",
"properties": {
"baseUrl": {
"description": "The base URL of the external platform (optional).",
"example": "https://my.platform/api/lsk",
"format": "uri",
"type": "string"
},
"depositSupported": {
"description": "Whether or not the platform supports deposits.",
"example": true,
"type": "boolean"
},
"displayName": {
"description": "The official platform name that will be displayed.",
"example": "My Platform",
"type": "string"
},
"errorsWebhookUrl": {
"description": "The URL where notifications for any issues will be sent. <br> Required for [`error` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br> See [Get Sample Error notification](https://api-docs.lsk.lightspeed.app/operation/operation-reservationErrorNotification).\n",
"example": "https://my.platform/api/lsk/webhook/errors",
"type": "string",
"format": "uri"
},
"integrationWebhookUrl": {
"description": "The URL where notifications for activation or deactivation of the customer's integration will be sent. <br> Required for [`integration` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br> See [Integration notification](https://api-docs.lsk.lightspeed.app/operation/operation-reservationintegrationnotification).\n",
"example": "https://my.platform/api/lsk/webhook/integrations",
"type": "string",
"format": "uri"
},
"notificationTypes": {
"description": "The events that trigger a notification.",
"example": [
"ORDER_CLOSED"
],
"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. <br> Required for [`onboarding` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br> See [Onboarding notification](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservationonboardingnotification).\n",
"example": "https://my.platform/api/lsk/webhook/onboarding",
"type": "string",
"format": "uri"
},
"orderWebhookUrl": {
"description": "The URL where order notifications will be sent. <br> Required for [`order` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br> See [Order Notification](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservationordernotification).\n",
"example": "https://my.platform/api/lsk/webhook/orders",
"type": "string",
"format": "uri"
},
"posReservationUpdateWebhookUrl": {
"description": "The URL where notifications about reservation changes on POS will be sent.",
"type": "string",
"format": "uri",
"example": "https://my.platform/api/lsk/webhook/reservation"
},
"ownNotificationsOnly": {
"description": "When `true`, notifications will only be sent for orders linked to the reservation platform.",
"example": true,
"type": "boolean"
},
"webhookAuthDetails": {
"description": "The authentication credentials to be sent with the webhook notifications.",
"properties": {
"apiKeys": {
"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"
},
"example": {
"X-API-ID": "Example-x-api-id",
"X-API-SECRET": "Example-x-api-secret"
},
"type": "object"
},
"parameters": {
"additionalProperties": {
"description": "Key-value pairs of arbitrary static query parameters to send with the webhook request.",
"type": "string"
},
"example": {},
"type": "object"
}
},
"type": "object"
},
"basic": {
"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.",
"example": "Example-Password",
"format": "password",
"type": "string"
},
"username": {
"description": "The basic auth username.",
"example": "LightspeedKSeries",
"type": "string"
}
},
"required": [
"username",
"password"
],
"type": "object"
},
"bearer": {
"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.",
"example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"format": "password",
"type": "string"
},
"ttl": {
"description": "Token expiration time in UTC.",
"example": "2035-01-01T00:00:00",
"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"
},
"oauth2": {
"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"
],
"example": "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"
],
"example": "CLIENT_SECRET_BASIC",
"type": "string"
},
"clientId": {
"description": "The OAuth2 client ID.",
"example": "LightspeedKSeries",
"type": "string"
},
"clientName": {
"description": "The OAuth2 client name.",
"example": "LightspeedKSeries",
"type": "string"
},
"clientSecret": {
"description": "The OAuth2 client secret.",
"example": "Example-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.",
"example": "https://my.platform/public-keys",
"format": "uri",
"type": "string"
},
"providerTokenUri": {
"description": "The external platform URL for getting access tokens by private credentials.",
"example": "https://my.platform/emitter/token",
"format": "uri",
"type": "string"
},
"scopes": {
"description": "The scopes being granted to the API client.",
"example": [
"webhooks-api"
],
"items": {
"type": "string"
},
"type": "array",
"uniqueItems": true
}
},
"required": [
"clientId",
"clientSecret",
"providerTokenUri"
],
"type": "object"
}
},
"type": "object"
},
"webhookAuthType": {
"description": "The type of authentication used by the webhook.",
"enum": [
"BASIC_AUTH",
"BEARER_TOKEN",
"API_KEYS",
"OAUTH2",
"NONE"
],
"example": "OAUTH2",
"type": "string"
},
"allowCourseNumberUpdates": {
"type": "boolean",
"example": true,
"default": false,
"description": "If true, table statuses can be customized using a number format."
},
"inServiceTableStatuses": {
"items": {
"properties": {
"statusLabel": {
"type": "string",
"example": "Appetizer",
"description": "The unique text which will be displayed in the back-office for users."
},
"statusValue": {
"type": "string",
"example": "appetizer",
"description": "The unique code which will be used for outbound communication within table status mapping."
},
"sequence": {
"format": "int32",
"type": "integer",
"example": 1,
"description": "This number is used to resolve collisions between statuses in order of highest priority."
}
},
"type": "object",
"required": [
"statusLabel",
"statusValue",
"sequence"
]
},
"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": {
"description": "External reservation statuses for platforms.",
"enum": [
"ON_HOLD",
"SCHEDULED",
"PARTIALLY_ARRIVED",
"ARRIVED",
"PARTIALLY_SEATED",
"SEATED",
"DEPARTED",
"CANCELLED",
"NO_SHOW",
"ERROR"
],
"example": "SCHEDULED",
"type": "string"
}
}
},
"required": [
"displayName",
"webhookAuthType",
"webhookAuthDetails"
]
}