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
View JSON Schema on GitHub

JSON Schema

restaurant-k-series-reservation-service-platform-profile-schema.json Raw ↑
{
  "$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"
  ]
}