{
  "openapi": "3.1.1",
  "info": {
    "title": "Horizon POPI",
    "description": "POPI for use by 3rd Party (PRODUCTION) .Net/Core 10.0.10",
    "contact": {
      "name": "Horizon Development",
      "url": "https://tissl.co.uk",
      "email": "devteam@tissl.co.uk"
    },
    "license": {
      "name": "Commercial License",
      "url": "https://tissl.co.uk"
    },
    "version": "9.4.0.0"
  },
  "paths": {
    "/api/auth/login": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Domain.Auth.LoginRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Domain.Auth.LoginRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Domain.Auth.LoginRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Domain.Auth.LoginRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/validateCode": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Domain.Auth.ValidateCodeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Domain.Auth.ValidateCodeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Domain.Auth.ValidateCodeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Domain.Auth.ValidateCodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/stream-pos/v1/authorize": {
      "get": {
        "tags": [
          "ExternalAuthorization"
        ],
        "summary": "Request redirect for 0Auth login page.",
        "parameters": [
          {
            "name": "redirect_uri",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "client_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "response_type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/stream-pos/v1/token": {
      "post": {
        "tags": [
          "ExternalAuthorization"
        ],
        "summary": "Request an access token using either an authorization code or a refresh token.",
        "description": "<b>Sample request body for `authorization_code`:</b>\r\n```\r\n{\r\n  \"client_id\": \"your-client-id\",\r\n  \"client_secret\": \"your-client-secret\",\r\n  \"code\": \"authorization-code\",\r\n  \"grant_type\": \"authorization_code\",\r\n  \"redirect_uri\": \"https://your-redirect-uri\"\r\n}\r\n             \r\n```\r\n<b>Sample request body for `refresh_token`:</b>\r\n```\r\n{\r\n  \"client_id\": \"your-client-id\",\r\n  \"client_secret\": \"your-client-secret\",\r\n  \"refresh_token\": \"your-refresh-token\",\r\n  \"grant_type\": \"refresh_token\"\r\n}\r\n             \r\n```",
        "requestBody": {
          "description": "The request payload (see sample below).",
          "content": {
            "application/json-patch+json": {
              "schema": { }
            },
            "application/json": {
              "schema": { }
            },
            "text/json": {
              "schema": { }
            },
            "application/*+json": {
              "schema": { }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Failed/Unauthorized"
          }
        }
      }
    },
    "/order": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Post Order or/and Payment",
        "description": "This is the primary message sent to store . The partner solution can use this method to • Join a POS transaction to a partner's cloud transaction, and/or • Send an order to the POS, and/or • Send payments to the POS, and/or • Get a receipt object",
        "operationId": "ProcessOrder",
        "requestBody": {
          "description": "Order object to add, in JSON.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.Order"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Order"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Orders"
        ],
        "summary": "Cancel order",
        "description": "Cancel order by using the order id and Orgniasation id",
        "operationId": "Cancel",
        "requestBody": {
          "description": "Payment object to add, in JSON.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.CancelOrder"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Order"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      }
    },
    "/order/payment": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Post Payment",
        "description": "Apply a payment to an existing table using the place name or by using the order id",
        "operationId": "ProcessPayment",
        "requestBody": {
          "description": "Payment object to add, in JSON.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.Payment"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Order"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      }
    },
    "/order/discount": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Post Discount",
        "description": "Apply a discount to an existing table using the place name or by using the order id",
        "operationId": "ProcessDiscount",
        "requestBody": {
          "description": "Discount object to add, in JSON.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.Discount"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Order"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      }
    },
    "/order/multiDiscounts": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Post Multi Discounts",
        "description": "Apply a discount to an existing table using the place name or by using the order id",
        "operationId": "ProcessMultiDiscount",
        "requestBody": {
          "description": "Multi Discount object to add, in JSON.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.MultiDiscount"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Order"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      }
    },
    "/order/orderid/{organisationID}/{orderID}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get Order by ID",
        "description": "",
        "operationId": "GetOrderByID",
        "parameters": [
          {
            "name": "organisationID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "orderID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Order"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      }
    },
    "/order/{organisationID}/{receiptNumber}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get Order by Receipt Number",
        "description": "",
        "operationId": "GetOrderByReceipt",
        "parameters": [
          {
            "name": "organisationID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "receiptNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Order"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      }
    },
    "/order/orderUpdates/{organisation}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get Orders Updates",
        "description": "",
        "operationId": "OrderUpdates",
        "parameters": [
          {
            "name": "organisation",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.POS.Domain.Synchronisation.LastOrderUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      }
    },
    "/order/table/{tableNumber}/{organisationID}/{siteID}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get Order by Table",
        "description": "",
        "operationId": "GetOrgOrderByTable",
        "parameters": [
          {
            "name": "tableNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "organisationID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "siteID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Order"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      }
    },
    "/order/receipt/{orderID}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Receipt",
        "description": "",
        "operationId": "Receipt",
        "parameters": [
          {
            "name": "orderID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/order/reservation": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Post Reservation Order",
        "description": "",
        "operationId": "ProcessReservation",
        "requestBody": {
          "description": "Reservation to process to an order object to add, in JSON.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.Reservation"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Order"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      }
    },
    "/order/adjustment": {
      "delete": {
        "tags": [
          "Orders"
        ],
        "summary": "Remove Discount/Charity/Service Charges",
        "description": "",
        "operationId": "RemoveAdjustment",
        "requestBody": {
          "description": "Adjustment object to remove and re-calc, in JSON.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.RemoveAdjustment"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Order"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TISSL.Community.Domain.HttpMessage"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "TISSL.Community.Domain.Auth.LoginRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": [
              "null",
              "string"
            ]
          },
          "password": {
            "type": [
              "null",
              "string"
            ]
          },
          "tenantID": {
            "type": [
              "null",
              "string"
            ]
          },
          "clientID": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Auth.ValidateCodeRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": [
              "null",
              "string"
            ]
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "organisation": {
            "type": [
              "null",
              "string"
            ]
          },
          "clientID": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.HardCodeReference": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.HardIndexReference": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "seqIndex": {
            "type": "integer",
            "format": "int32"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.HardReference": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.HttpMessage": {
        "type": "object",
        "properties": {
          "message": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Action": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "user": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "device": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "method": {
            "type": [
              "null",
              "string"
            ]
          },
          "message": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Adjustments.Adjustment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "adjustmentID": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerFacingName": {
            "type": [
              "null",
              "string"
            ]
          },
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "percentage": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "amount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "increasesPrice": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "displayReasonOnReceipt": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "applyAfterOrderBalance": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "includeAdjustmentInPrice": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "autoApply": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "reason": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Reason"
          },
          "application": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardCodeReference"
          },
          "category": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardCodeReference"
          },
          "value": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timestamp": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "seqIndex": {
            "type": "integer",
            "format": "int64"
          },
          "langAdjustmentName": {
            "type": [
              "null",
              "string"
            ]
          },
          "salesVAT": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "allowMultipleDiscounts": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "allowOverLoadedDiscount": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "applyToListValues": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "applyToNetValues": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "includeInVAT": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "chargePerCover": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "taxGroups": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Adjustments.AdjustmentTaxGroup"
            }
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Adjustments.AdjustmentTaxGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "taxGroupID": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "percentage": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "taxRates": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Adjustments.AdjustmentTaxRate"
            }
          },
          "value": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timestamp": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Adjustments.AdjustmentTaxRate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "taxGroupRateID": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "percentage": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "value": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timestamp": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Course": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "awayCommand": {
            "type": [
              "null",
              "string"
            ]
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
            }
          },
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "colour": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "actions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Action"
            }
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Delivery": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "remoteOrderID": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "address": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.References.Address"
          },
          "phone": {
            "type": [
              "null",
              "string"
            ]
          },
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "source": {
            "type": [
              "null",
              "string"
            ]
          },
          "courier": {
            "type": [
              "null",
              "string"
            ]
          },
          "channel": {
            "type": [
              "null",
              "string"
            ]
          },
          "remoteOrderType": {
            "type": [
              "null",
              "string"
            ]
          },
          "deliveryCost": {
            "type": "number",
            "format": "double"
          },
          "serviceCharge": {
            "type": "number",
            "format": "double"
          },
          "pickupTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "pickupTimeOnly": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "deliveryTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "deliveryTimeOnly": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "notes": {
            "type": [
              "null",
              "string"
            ]
          },
          "prepTime": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Invoice": {
        "type": "object",
        "properties": {
          "number": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.ComboDeal": {
        "type": "object",
        "properties": {
          "comboDealID": {
            "type": "string",
            "format": "uuid"
          },
          "comboProductID": {
            "type": "string",
            "format": "uuid"
          },
          "comboSetID": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.Item": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "isDeleted": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "receiptName": {
            "type": [
              "null",
              "string"
            ]
          },
          "orderingName": {
            "type": [
              "null",
              "string"
            ]
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.ItemMessage"
            }
          },
          "status": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Status"
          },
          "product": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.Product"
          },
          "summary": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.Summary"
          },
          "actions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Action"
            }
          },
          "adjustments": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Adjustments.Adjustment"
            }
          },
          "modifierGroups": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.ModifierGroup"
            }
          },
          "modifiers": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.Modifier"
            }
          },
          "unitQuantity": {
            "type": "number",
            "format": "double"
          },
          "course": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "position": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
          },
          "langReceiptName": {
            "type": [
              "null",
              "string"
            ]
          },
          "excludeFromReceipt": {
            "type": "boolean"
          },
          "comboDeal": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.ComboDeal"
          },
          "isWasted": {
            "type": "boolean"
          },
          "isVoided": {
            "type": "boolean"
          },
          "orderType": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "taxGroups": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.ItemTaxGroup"
            }
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.ItemMessage": {
        "type": "object",
        "properties": {
          "text": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.ItemTaxGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "taxGroupID": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "percentage": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "taxRates": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.ItemTaxRate"
            }
          },
          "value": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timestamp": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.ItemTaxRate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "taxGroupRateID": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "percentage": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "value": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timestamp": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.Modifier": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "price": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "parentID": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "modifierID": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "summary": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.ModifierSummary"
          },
          "adjustments": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Adjustments.Adjustment"
            }
          },
          "product": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.ProductModifier"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.ModifierGroup": {
        "type": "object",
        "properties": {
          "groupID": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "parentID": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.ModifierSummary": {
        "type": "object",
        "properties": {
          "net": {
            "type": "number",
            "format": "double"
          },
          "gross": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": "number",
            "format": "double"
          },
          "discount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "vat": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.Product": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "price": {
            "type": "number",
            "format": "double"
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
            }
          },
          "unit": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.ProductUnit"
          },
          "category": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "course": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "seqIndex": {
            "type": "integer",
            "format": "int64"
          },
          "rootCategory": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "plu": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int64"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "costPrice": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.ProductModifier": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "category": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "rootCategory": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "plu": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int64"
          },
          "costPrice": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.ProductUnit": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "shortName": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Items.Summary": {
        "type": "object",
        "properties": {
          "net": {
            "type": "number",
            "format": "double"
          },
          "gross": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": "number",
            "format": "double"
          },
          "lineNet": {
            "type": "number",
            "format": "double"
          },
          "lineGross": {
            "type": "number",
            "format": "double"
          },
          "lineTotal": {
            "type": "number",
            "format": "double"
          },
          "discount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "vat": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "serviceCharge": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "serviceChargeNet": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "salesVAT": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Loyalty": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": [
              "null",
              "string"
            ]
          },
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "firstName": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastName": {
            "type": [
              "null",
              "string"
            ]
          },
          "balance": {
            "type": "integer",
            "format": "int32"
          },
          "credit": {
            "type": "integer",
            "format": "int32"
          },
          "loyaltyType": {
            "type": "integer",
            "format": "int32"
          },
          "reward": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Message": {
        "type": "object",
        "properties": {
          "text": {
            "type": [
              "null",
              "string"
            ]
          },
          "sendOnce": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
          },
          "isImportant": {
            "type": "boolean"
          },
          "tags": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
            }
          },
          "sendTime": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.TimeReference"
            }
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Order": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "parentID": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "number": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "customerCount": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "owner": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Owner"
          },
          "type": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "status": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Status"
          },
          "place": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Place"
          },
          "site": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Sites.Site"
          },
          "summary": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Summary"
          },
          "actions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Action"
            }
          },
          "adjustments": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Adjustments.Adjustment"
            }
          },
          "items": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Items.Item"
            }
          },
          "payments": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Payments.Payment"
            }
          },
          "reservationRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "notes": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Message"
            }
          },
          "externalRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "courses": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Course"
            }
          },
          "delivery": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Delivery"
          },
          "positions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Positions.Position"
            }
          },
          "pmsRef": {
            "type": [
              "null",
              "string"
            ]
          },
          "isDeleted": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "invoice": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Invoice"
          },
          "ageVerifiedItemId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "vouchers": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.OrderVoucher"
            }
          },
          "customerId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "linkedPlaces": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Place"
            }
          },
          "qrContent": {
            "type": [
              "null",
              "string"
            ]
          },
          "loyalty": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Loyalty"
            }
          },
          "tradingSession": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "tradingDate": {
            "type": [
              "null",
              "string"
            ]
          },
          "version": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.OrderVersion"
          },
          "taxGroups": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.OrderTaxGroup"
            }
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.OrderTaxGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "taxGroupID": {
            "type": "string",
            "format": "uuid"
          },
          "taxRates": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.OrderTaxRate"
            }
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "receiptName": {
            "type": [
              "null",
              "string"
            ]
          },
          "percentage": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "value": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timestamp": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.OrderTaxRate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "taxGroupRateID": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "receiptName": {
            "type": [
              "null",
              "string"
            ]
          },
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "percentage": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "value": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "timestamp": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.OrderVersion": {
        "type": "object",
        "properties": {
          "systemName": {
            "type": [
              "null",
              "string"
            ]
          },
          "systemVersion": {
            "type": [
              "null",
              "string"
            ]
          },
          "calculationVersion": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.OrderVoucher": {
        "type": "object",
        "properties": {
          "voucherTypeId": {
            "type": "string",
            "format": "uuid"
          },
          "voucherCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "isActive": {
            "type": "boolean"
          },
          "voucherType": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Voucher.VoucherType"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "actions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Action"
            }
          },
          "isDeleted": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Owner": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "seqIndex": {
            "type": "integer",
            "format": "int32"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "friendlyName": {
            "type": [
              "null",
              "string"
            ]
          },
          "ownerChanged": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.PaymentExternal": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "reference": {
            "type": [
              "null",
              "string"
            ]
          },
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          },
          "expiry": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Payments.CustomNote": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "reference": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Payments.Method": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Payments.Type"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Payments.Payment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "device": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardIndexReference"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "tendered": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "change": {
            "type": "number",
            "format": "double"
          },
          "tip": {
            "type": "number",
            "format": "double"
          },
          "status": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Status"
          },
          "method": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Payments.Method"
          },
          "actions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Action"
            }
          },
          "drawer": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
          },
          "pdqReceipt": {
            "type": "null"
          },
          "revenueSessionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "cardScheme": {
            "type": [
              "null",
              "string"
            ]
          },
          "entryMethod": {
            "type": [
              "null",
              "string"
            ]
          },
          "langName": {
            "type": [
              "null",
              "string"
            ]
          },
          "requestID": {
            "type": [
              "null",
              "string"
            ]
          },
          "transactionID": {
            "type": [
              "null",
              "string"
            ]
          },
          "customer": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
          },
          "customNote": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Payments.CustomNote"
          },
          "refunds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Refund"
            }
          },
          "externals": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.PaymentExternal"
            }
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Payments.Type": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "overPaymentRule": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardCodeReference"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Place": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "zone": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Positions.Position": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "guest": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Positions.PositionGuest"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Positions.PositionGuest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "guestType": {
            "type": [
              "null",
              "string"
            ]
          },
          "isPartyHost": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Reason": {
        "type": "object",
        "properties": {
          "text": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.References.Address": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "line1": {
            "type": [
              "null",
              "string"
            ]
          },
          "line2": {
            "type": [
              "null",
              "string"
            ]
          },
          "line3": {
            "type": [
              "null",
              "string"
            ]
          },
          "line4": {
            "type": [
              "null",
              "string"
            ]
          },
          "line5": {
            "type": [
              "null",
              "string"
            ]
          },
          "town": {
            "type": [
              "null",
              "string"
            ]
          },
          "postCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "province": {
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardCodeReference"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Refund": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "siteID": {
            "type": "string",
            "format": "uuid"
          },
          "orderID": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "paymentID": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "pdqDevice": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
          },
          "posDevice": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
          },
          "paymentType": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
          },
          "user": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.HardReference"
          },
          "reason": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Reason"
          },
          "pdqReceipt": {
            "type": [
              "null",
              "string"
            ]
          },
          "isOpenRefund": {
            "type": "boolean"
          },
          "revenueSessionId": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "cardScheme": {
            "type": [
              "null",
              "string"
            ]
          },
          "entryMethod": {
            "type": [
              "null",
              "string"
            ]
          },
          "requestId": {
            "type": [
              "null",
              "string"
            ]
          },
          "transactionId": {
            "type": [
              "null",
              "string"
            ]
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Sites.Site": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "vatNumber": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Status": {
        "type": "object",
        "properties": {
          "reason": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Reason"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "code": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Orders.Summary": {
        "type": "object",
        "properties": {
          "balance": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": "number",
            "format": "double"
          },
          "subTotal": {
            "type": "number",
            "format": "double"
          },
          "discount": {
            "type": "number",
            "format": "double"
          },
          "serviceCharge": {
            "type": "number",
            "format": "double"
          },
          "paid": {
            "type": "number",
            "format": "double"
          },
          "supTax": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "charityDonation": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "vouchers": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "netTotal": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "serviceChargeNet": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "coverCharge": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "itemCount": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "tips": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          },
          "vat": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.TimeReference": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Voucher.ScheduleRange": {
        "type": "object",
        "properties": {
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Voucher.SiteVoucherType": {
        "type": "object",
        "properties": {
          "siteID": {
            "type": "string",
            "format": "uuid"
          },
          "voucherTypeID": {
            "type": "string",
            "format": "uuid"
          },
          "voucherType": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Voucher.VoucherType"
          },
          "site": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Orders.Sites.Site"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Voucher.VoucherSchedule": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "ranges": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Voucher.ScheduleRange"
            }
          },
          "isDeleted": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Voucher.VoucherType": {
        "type": "object",
        "properties": {
          "posName": {
            "type": [
              "null",
              "string"
            ]
          },
          "receiptName": {
            "type": [
              "null",
              "string"
            ]
          },
          "minTopUpAmount": {
            "type": "number",
            "format": "double"
          },
          "maxTopUpAmount": {
            "type": "number",
            "format": "double"
          },
          "footerText": {
            "type": [
              "null",
              "string"
            ]
          },
          "startsWith": {
            "type": [
              "null",
              "string"
            ]
          },
          "isAutoGenerated": {
            "type": "boolean"
          },
          "isFullAmountOnly": {
            "type": "boolean"
          },
          "fromDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "toDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "isActive": {
            "type": "boolean"
          },
          "voucherTypeSites": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Voucher.SiteVoucherType"
            }
          },
          "voucherTypeSchedules": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Domain.Voucher.VoucherTypeSchedule"
            }
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "isDeleted": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Domain.Voucher.VoucherTypeSchedule": {
        "type": "object",
        "properties": {
          "voucherTypeID": {
            "type": "string",
            "format": "uuid"
          },
          "scheduleID": {
            "type": "string",
            "format": "uuid"
          },
          "voucherType": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Voucher.VoucherType"
          },
          "schedule": {
            "$ref": "#/components/schemas/TISSL.Community.Domain.Voucher.VoucherSchedule"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.POS.Domain.Synchronisation.LastOrderUpdate": {
        "type": "object",
        "properties": {
          "siteID": {
            "type": "string",
            "format": "uuid"
          },
          "lastUpdateTime": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.CancelOrder": {
        "required": [
          "orderId",
          "organisationId",
          "reason",
          "siteId"
        ],
        "type": "object",
        "properties": {
          "organisationId": {
            "type": "string",
            "description": "Organisation ID",
            "format": "uuid",
            "example": "01519A7B-076C-4315-A228-1D17467147B4"
          },
          "siteId": {
            "type": "string",
            "description": "Site ID",
            "format": "uuid",
            "example": "01519A7B-076C-4315-A228-1D17467147B4"
          },
          "orderId": {
            "type": "string",
            "description": "Required order ID - If specified uses the orderID to reference the order to apply the cancel order",
            "format": "uuid",
            "example": "EED47552-7356-4253-8CFF-BA8AED039A77 or blank"
          },
          "reason": {
            "minLength": 1,
            "type": "string",
            "description": "Reason Type - Mapped to adjustment reasons",
            "example": "Customer Changed Mind"
          },
          "reasonText": {
            "type": [
              "null",
              "string"
            ],
            "description": "Reason Text - Open text why the order got cancelled this may be something that the customer has stated",
            "example": "My order has taken to long"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.CourseItem": {
        "required": [
          "courseId",
          "description"
        ],
        "type": "object",
        "properties": {
          "courseId": {
            "type": "string",
            "description": "Course id",
            "format": "uuid",
            "example": "00000000-0000-0000-0000-000000000000"
          },
          "description": {
            "minLength": 1,
            "type": "string",
            "description": "Course description",
            "example": "No Course"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.CustomerDetail": {
        "type": "object",
        "properties": {
          "customerRef": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional customer reference number",
            "example": "ABC"
          },
          "name": {
            "type": [
              "null",
              "string"
            ],
            "readOnly": true
          },
          "firstName": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastName": {
            "type": [
              "null",
              "string"
            ]
          },
          "address1": {
            "type": [
              "null",
              "string"
            ],
            "description": "The first line of the address – required if channel is “Delivery”",
            "example": "8 High Street"
          },
          "address2": {
            "type": [
              "null",
              "string"
            ],
            "description": "Second line of the address – optional",
            "example": "Wolverton Mill"
          },
          "city": {
            "type": [
              "null",
              "string"
            ],
            "description": "City or Town - required if channel is “Delivery”",
            "example": "Milton Keynes"
          },
          "postCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Postcode - required if channel is “Delivery”",
            "example": "MK12 5BA"
          },
          "phone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Customer phone number",
            "example": "01494 448232"
          },
          "email": {
            "type": [
              "null",
              "string"
            ],
            "description": "Customer email address",
            "example": "Andreea.Nava@gmail.com"
          },
          "note": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Any additional customer delivery details",
            "example": [
              "delivery notes",
              "leave by door"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.Discount": {
        "required": [
          "organisationId",
          "siteId"
        ],
        "type": "object",
        "properties": {
          "organisationId": {
            "type": "string",
            "description": "Organisation ID",
            "format": "uuid",
            "example": "01519A7B-076C-4315-A228-1D17467147B4"
          },
          "siteId": {
            "type": "string",
            "description": "Site ID",
            "format": "uuid",
            "example": "757168CA-B865-48BF-9BF6-E3C2A8CD8D41"
          },
          "orderId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional order ID - If specified uses the orderID to reference the order to apply the discount",
            "format": "uuid",
            "example": "EED47552-7356-4253-8CFF-BA8AED039A77 or blank"
          },
          "deliveryPoint": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional place name - If specified uses the place name to apply the discount",
            "example": "T1 or blank"
          },
          "adjustmentID": {
            "type": "string",
            "description": "Adjustment ID",
            "format": "uuid"
          },
          "percentage": {
            "type": "number",
            "description": "Adjustment (discount) percentage",
            "format": "double",
            "example": 30.00
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional adjustment (discount) reason",
            "example": "VIP"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.DiscountItem": {
        "type": "object",
        "properties": {
          "adjustmentID": {
            "type": "string",
            "description": "Adjustment ID",
            "format": "uuid"
          },
          "isPercentage": {
            "type": "boolean",
            "description": "Is the discount a percentage or a value"
          },
          "percentage": {
            "type": "number",
            "description": "Adjustment (discount) percentage",
            "format": "double",
            "example": 30.00
          },
          "value": {
            "type": "number",
            "description": "Adjustment (discount) value",
            "format": "double",
            "example": 5.00
          },
          "reason": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional adjustment (discount) reason",
            "example": "VIP"
          },
          "itemID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Which Item ID to Discount",
            "format": "uuid"
          },
          "isOrderLevel": {
            "type": "boolean",
            "description": "Is the discount at order level or item"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.ModifierGroupItem": {
        "type": "object",
        "properties": {
          "groupName": {
            "type": [
              "null",
              "string"
            ]
          },
          "parent": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.ModifierItem": {
        "type": "object",
        "properties": {
          "groupName": {
            "type": [
              "null",
              "string"
            ]
          },
          "modifierName": {
            "type": [
              "null",
              "string"
            ]
          },
          "price": {
            "type": [
              "null",
              "number"
            ],
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.MultiDiscount": {
        "required": [
          "organisationId",
          "siteId"
        ],
        "type": "object",
        "properties": {
          "organisationId": {
            "type": "string",
            "description": "Organisation ID",
            "format": "uuid",
            "example": "01519A7B-076C-4315-A228-1D17467147B4"
          },
          "siteId": {
            "type": "string",
            "description": "Site ID",
            "format": "uuid",
            "example": "757168CA-B865-48BF-9BF6-E3C2A8CD8D41"
          },
          "orderId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional order ID - If specified uses the orderID to reference the order to apply the discount",
            "format": "uuid",
            "example": "EED47552-7356-4253-8CFF-BA8AED039A77 or blank"
          },
          "deliveryPoint": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional place name - If specified uses the place name to apply the discount",
            "example": "T1 or blank"
          },
          "discountItems": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.DiscountItem"
            }
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.Order": {
        "required": [
          "channel",
          "orderHeader",
          "organisationId",
          "siteId"
        ],
        "type": "object",
        "properties": {
          "organisationId": {
            "type": "string",
            "description": "Order Organisation ID",
            "format": "uuid",
            "example": "01519A7B-076C-4315-A228-1D17467147B4"
          },
          "siteId": {
            "type": "string",
            "description": "Order Site ID",
            "format": "uuid",
            "example": "757168CA-B865-48BF-9BF6-E3C2A8CD8D41"
          },
          "orderId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional order ID - this can be supplied or autogenerated.  must be supplied for any further calls for a partifcular order for example payment after the order items have been made",
            "example": "EED47552-7356-4253-8CFF-BA8AED039A77 or blank"
          },
          "schedule": {
            "type": [
              "null",
              "string"
            ],
            "description": "Schedule summary",
            "example": "19/03/2021 16:00"
          },
          "channel": {
            "minLength": 1,
            "type": "string"
          },
          "orderHeader": {
            "description": "Order Header Detail",
            "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.OrderHeader"
          },
          "orderItems": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.OrderItem"
            },
            "description": "The order must contain a minimum of one order item. There is no maximum number of order items"
          },
          "paymentItems": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.PaymentItem"
            },
            "description": "The sum of the submitted payments must equal or exceed the sum of Quantity x GrossPrice of all items and modifiers. Any excess tender will be retained as house tip"
          },
          "customerDetails": {
            "description": "Operational requirements may dictate that customer details need to be supplied (i.e. if an order is a delivery order then the site will not be able to deliver this order without a delivery address). The SQL schema will not verify any customer details.",
            "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.CustomerDetail"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.OrderHeader": {
        "required": [
          "customerCount",
          "note",
          "orderType"
        ],
        "type": "object",
        "properties": {
          "extOrderId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Third party order reference",
            "example": "RO4"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Check description which may be the customer name or a code to identify the order placed on the pos",
            "example": "Test remote order"
          },
          "orderNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Tissl order number – this must have been previously reserved by the third party calling the getOrderNumber function. Every order submitted to the service must have a unique check number.",
            "example": "400054"
          },
          "deliveryPoint": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional delivery point i.e. table number. Value must have been retrieved from Tissl. Must be supplied if channel = “Pay At Table”",
            "example": "T4"
          },
          "customerCount": {
            "type": "integer",
            "description": "The number of covers",
            "format": "int32",
            "example": 2
          },
          "orderType": {
            "description": "The order type which to place the order with - check getPosData to check available types",
            "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.OrderTypeItem"
          },
          "serviceCharge": {
            "description": "The service charge details which is an amount and percentage",
            "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.ServiceChargeItem"
          },
          "note": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Any customer notes relating to the order as a whole. It is important that any notes made in relation to allergies or the prepping of items must be made against the item. It is unlikely that this note will be seen by anyone apart from the expediter",
            "example": [
              "nuts allergy",
              "milk allergy"
            ]
          },
          "sendOrder": {
            "type": "boolean",
            "description": "Control the sending of the order. Default is set to true and false will not send the order to printers",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.OrderItem": {
        "required": [
          "grossPrice",
          "netPrice",
          "productId",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "productId": {
            "minLength": 1,
            "type": "string",
            "description": "Tissl item name. Must exist at target site",
            "example": "Seabass"
          },
          "quantity": {
            "type": "integer",
            "description": "Quantity of item ordered",
            "format": "int32",
            "example": 1
          },
          "grossPrice": {
            "type": "number",
            "description": "Gross price of a single unit of the item (no part pennies permitted)",
            "format": "currency",
            "example": 16.95
          },
          "netPrice": {
            "type": "number",
            "description": "Net price of a single unit of the item (correct to four decimal places)",
            "format": "currency",
            "example": 16.14
          },
          "course": {
            "description": "Course number – courses must run sequentially i.e. list all starters together, followed by all mains, followed by all desserts.  0 is for no course",
            "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.CourseItem"
          },
          "note": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Free format text that will be printed with the item or sent to KMS",
            "example": [
              "No marinade"
            ]
          },
          "modifierGroups": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.ModifierGroupItem"
            }
          },
          "modifiers": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.ModifierItem"
            },
            "description": "This is a modification to the way that the item is prepared or served. A burger may be ordered with the modifier of “with cheese”. A steak may be ordered with the cooking temperature of “Well Done” or “Medium”. Sites may charge a premium for a modifier i.e. £0.75 for “with Cheese”."
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.OrderTypeItem": {
        "type": "object",
        "properties": {
          "orderTypeId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Order type id",
            "format": "uuid",
            "example": "9FE87E7C-F141-4CED-9323-157D09BAB1D0"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Order description",
            "example": "Restaurant"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.Payment": {
        "required": [
          "organisationId",
          "siteId"
        ],
        "type": "object",
        "properties": {
          "organisationId": {
            "type": "string",
            "description": "Organisation ID",
            "format": "uuid",
            "example": "01519A7B-076C-4315-A228-1D17467147B4"
          },
          "siteId": {
            "type": "string",
            "description": "Site ID",
            "format": "uuid",
            "example": "757168CA-B865-48BF-9BF6-E3C2A8CD8D41"
          },
          "orderId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional order ID - If specified uses the orderID to reference the order to apply the payment",
            "format": "uuid",
            "example": "EED47552-7356-4253-8CFF-BA8AED039A77 or blank"
          },
          "deliveryPoint": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional place name - If specified uses the place name to apply the payment",
            "example": "T1 or blank"
          },
          "paymentItems": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.PaymentItem"
            },
            "description": "Order Header Detail"
          },
          "useOrderOwner": {
            "type": "boolean",
            "description": "Use order owner details - default to false which is POPI",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.PaymentItem": {
        "required": [
          "amount",
          "paymentType"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "type": [
              "null",
              "string"
            ],
            "description": "Third party reference for this payment",
            "example": "31234567"
          },
          "amount": {
            "type": "number",
            "description": "The value of the payment",
            "format": "currency",
            "example": 55.80
          },
          "tips": {
            "type": "number",
            "description": "Any tips that were added to the value of the payment",
            "format": "currency",
            "example": 2.50
          },
          "paymentType": {
            "description": "The type of payment used",
            "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.PaymentTypeItem"
          },
          "tisslPay": {
            "description": "The type of payment used",
            "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.TisslPayItem"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.PaymentTypeItem": {
        "type": "object",
        "properties": {
          "paymentId": {
            "type": [
              "null",
              "string"
            ],
            "description": "The index of the media within the POS System",
            "format": "uuid",
            "example": "248994CF-72EF-455A-84B9-D995EDD50D14"
          },
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "The media name for example Visa, Mastercard",
            "example": "Card"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.RemoveAdjustment": {
        "required": [
          "adjustmentID",
          "orderId",
          "organisationId",
          "siteId"
        ],
        "type": "object",
        "properties": {
          "organisationId": {
            "type": "string",
            "description": "Organisation ID",
            "format": "uuid",
            "example": "01519A7B-076C-4315-A228-1D17467147B4"
          },
          "siteId": {
            "type": "string",
            "description": "Site ID",
            "format": "uuid",
            "example": "757168CA-B865-48BF-9BF6-E3C2A8CD8D41"
          },
          "orderId": {
            "type": "string",
            "description": "OrderID to reference the order to remove the adjustment",
            "format": "uuid",
            "example": "EED47552-7356-4253-8CFF-BA8AED039A77 or blank"
          },
          "adjustmentID": {
            "type": "string",
            "description": "Adjustment ID",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.Reservation": {
        "required": [
          "coverCount",
          "orderTypeId",
          "providerCode",
          "reservationRef",
          "siteId"
        ],
        "type": "object",
        "properties": {
          "reservationRef": {
            "minLength": 1,
            "type": "string",
            "description": "Third party Reservation Reference/",
            "example": ""
          },
          "siteId": {
            "type": "string",
            "description": "Horizon SiteID/",
            "format": "uuid",
            "example": ""
          },
          "providerCode": {
            "minLength": 1,
            "type": "string",
            "description": "Provider Code/",
            "example": ""
          },
          "deliveryPoint": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional place name - If specified uses the place name for the order",
            "example": "T1 or blank"
          },
          "linkedPlaces": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Optional linked tables/places - If specified uses a list of places to create a temporary linked table on the POS",
            "example": "[\"T1\",\"T2\"] or not specificied or list empty"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional Customer Name/",
            "example": ""
          },
          "orderTypeId": {
            "type": "string",
            "description": "Order Type ID/",
            "format": "uuid",
            "example": ""
          },
          "coverCount": {
            "type": "integer",
            "description": "Cover Count/",
            "format": "int32",
            "example": 3
          },
          "note": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "payment": {
            "$ref": "#/components/schemas/TISSL.Community.Services.Models.POPI.PaymentItem"
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.ServiceChargeItem": {
        "required": [
          "amount",
          "percent"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Amount of the service charge",
            "format": "currency",
            "example": 6.98
          },
          "percent": {
            "type": "number",
            "description": "Percentage of the service charge",
            "format": "double",
            "example": 12.5
          }
        },
        "additionalProperties": false
      },
      "TISSL.Community.Services.Models.POPI.TisslPayItem": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": [
              "null",
              "string"
            ]
          },
          "transactionId": {
            "type": [
              "null",
              "string"
            ]
          },
          "cardScheme": {
            "type": [
              "null",
              "string"
            ]
          },
          "entryMethod": {
            "type": [
              "null",
              "string"
            ]
          },
          "pdqReceipt": {
            "type": "null"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "OAuth 2.0": {
        "type": "oauth2",
        "description": "OAuth 2.0 Bearer Token used for specific endpoints. Authorization: Bearer My_Bearer_Token"
      },
      "ApiKey": {
        "type": "apiKey",
        "description": "Api key needed to access the endpoints. ApiKey: My_API_Key",
        "name": "ApiKey",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "ApiKey": [ ]
    }
  ],
  "tags": [
    {
      "name": "Auth"
    },
    {
      "name": "ExternalAuthorization"
    },
    {
      "name": "Order"
    }
  ]
}