Lightspeed · JSON Structure

Restaurant K Series Reservation Service Platform Profile Structure

reservation-servicePlatformProfile schema from Lightspeed Restaurant K Series API

Type: object Properties: 15 Required: 3
POSRetailRestaurantEcommerce

reservation-servicePlatformProfile is a JSON Structure definition published by Lightspeed, describing 15 properties, of which 3 are required. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.

Properties

baseUrl depositSupported displayName errorsWebhookUrl integrationWebhookUrl notificationTypes onboardingWebhookUrl orderWebhookUrl posReservationUpdateWebhookUrl ownNotificationsOnly webhookAuthDetails webhookAuthType allowCourseNumberUpdates inServiceTableStatuses allowedPosStatuses

Meta-schema: https://json-structure.org/meta/core/v0/#

JSON Structure

Raw ↑
{
  "$schema": "https://json-structure.org/meta/core/v0/#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/lightspeed-pos/refs/heads/main/json-structure/restaurant-k-series-reservation-service-platform-profile-structure.json",
  "name": "reservation-servicePlatformProfile",
  "description": "reservation-servicePlatformProfile schema from Lightspeed Restaurant K Series API",
  "type": "object",
  "properties": {
    "baseUrl": {
      "description": "The base URL of the external platform (optional).",
      "example": "https://my.platform/api/lsk",
      "type": "uri"
    },
    "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": "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": "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": "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": "uri"
    },
    "posReservationUpdateWebhookUrl": {
      "description": "The URL where notifications about reservation changes on POS will be sent.",
      "type": "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",
              "type": "datetime",
              "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",
              "type": "uri"
            },
            "providerTokenUri": {
              "description": "The external platform URL for getting access tokens by private credentials.",
              "example": "https://my.platform/emitter/token",
              "type": "uri"
            },
            "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": {
            "type": "int32",
            "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"
  ]
}