{
  "openapi": "3.0.1",
  "info": {
    "title": "OSIRIS API",
    "description": "OSIRIS services API",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "/osirissec"
    }
  ],
  "paths": {
    "/api/Auth": {
      "head": {
        "tags": [
          "Auth"
        ],
        "responses": {
          "401": {
            "description": "Unauthorized"
          }
        }
      },
      "get": {
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/BI/getFavorites/{customerId}": {
      "get": {
        "tags": [
          "BI"
        ],
        "summary": "Get customer preferences",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "MarketId",
            "in": "header",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-NestIdentifier",
            "in": "header",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scrambledKeyVersion",
            "in": "header",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/Kiosk/storeOrder": {
      "post": {
        "tags": [
          "Kiosk"
        ],
        "summary": "Creates the customer order both in BI and in KIOSK format",
        "parameters": [
          {
            "name": "MarketId",
            "in": "header",
            "description": "Current KIOSK market",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "nestIdentifier",
            "in": "header",
            "description": "Current nest identifier",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The order data",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/StoreOrderDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreOrderDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreOrderDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/StoreOrderDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/Kiosk/GetLastOrders/{customerId}": {
      "get": {
        "tags": [
          "Kiosk"
        ],
        "summary": "Retrieves a compact list of the last orders for a given customer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "query",
            "description": "Number of orders to return",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LastOrderDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Kiosk/recallOrder/{orderId}": {
      "get": {
        "tags": [
          "Kiosk"
        ],
        "summary": "Retrieves a specific order based on order id for recall purposes\r\nThe recalled order is opacque and never interpreted by backend service",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "description": "Unique order id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/Kiosk/getFavorites/{customerId}": {
      "get": {
        "tags": [
          "Kiosk"
        ],
        "summary": "Get customer preferences",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique id of the customer",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteItemDto"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AmountsDto": {
        "type": "object",
        "properties": {
          "tax": {
            "type": "string",
            "nullable": true
          },
          "subtotalIncludesVAT": {
            "type": "string",
            "nullable": true
          },
          "subTotal": {
            "type": "string",
            "nullable": true
          },
          "paid": {
            "type": "string",
            "nullable": true
          },
          "tender": {
            "$ref": "#/components/schemas/TenderDto"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDto"
          }
        },
        "additionalProperties": false
      },
      "CVarDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DOTElementDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "rName": {
            "type": "string",
            "nullable": true
          },
          "qty": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "string",
            "nullable": true
          },
          "promo": {
            "type": "string",
            "nullable": true
          },
          "price": {
            "type": "string",
            "nullable": true
          },
          "vis": {
            "type": "string",
            "nullable": true
          },
          "grp": {
            "type": "string",
            "nullable": true
          },
          "pLevel": {
            "type": "string",
            "nullable": true
          },
          "vatID": {
            "type": "string",
            "nullable": true
          },
          "groupType": {
            "type": "string",
            "nullable": true
          },
          "defaultQuantity": {
            "type": "string",
            "nullable": true
          },
          "internalInfo": {
            "$ref": "#/components/schemas/InternalInfoDto"
          },
          "menuElement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MenuElementDto"
            },
            "nullable": true
          },
          "feature": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeatureDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FavoriteItemDto": {
        "type": "object",
        "properties": {
          "itemId": {
            "type": "string",
            "nullable": true
          },
          "totalQuantity": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "FeatureDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "rName": {
            "type": "string",
            "nullable": true
          },
          "featureType": {
            "type": "string",
            "nullable": true
          },
          "price": {
            "type": "string",
            "nullable": true
          },
          "vis": {
            "type": "string",
            "nullable": true
          },
          "qty": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "string",
            "nullable": true
          },
          "featureGroupID": {
            "type": "string",
            "nullable": true
          },
          "includedQuantity": {
            "type": "string",
            "nullable": true
          },
          "pLevel": {
            "type": "string",
            "nullable": true
          },
          "groupType": {
            "type": "string",
            "nullable": true
          },
          "defaultQuantity": {
            "type": "string",
            "nullable": true
          },
          "internalInfo": {
            "$ref": "#/components/schemas/InternalInfoDto"
          }
        },
        "additionalProperties": false
      },
      "InputDto": {
        "type": "object",
        "properties": {
          "inputName": {
            "type": "string",
            "nullable": true
          },
          "inputValue": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InternalInfoDto": {
        "type": "object",
        "properties": {
          "isSuggestive": {
            "type": "string",
            "nullable": true
          },
          "marketingTags": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "JToken": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JToken"
        }
      },
      "LastOrderDto": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "type": "integer",
            "format": "int32"
          },
          "orderTimestamp": {
            "type": "integer",
            "format": "int64"
          },
          "serviceType": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MetadataItemsDto"
            },
            "nullable": true
          },
          "productCount": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "MenuElementDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "rName": {
            "type": "string",
            "nullable": true
          },
          "qty": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "string",
            "nullable": true
          },
          "componentID": {
            "type": "string",
            "nullable": true
          },
          "uuid": {
            "type": "string",
            "nullable": true
          },
          "price": {
            "type": "string",
            "nullable": true
          },
          "vis": {
            "type": "string",
            "nullable": true
          },
          "pLevel": {
            "type": "string",
            "nullable": true
          },
          "vatID": {
            "type": "string",
            "nullable": true
          },
          "groupType": {
            "type": "string",
            "nullable": true
          },
          "defaultQuantity": {
            "type": "string",
            "nullable": true
          },
          "menuFeature": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeatureDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MetadataItemsDto": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "integer",
            "format": "int64"
          },
          "idx": {
            "type": "integer",
            "format": "int32"
          },
          "itemId": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "OrderDto": {
        "type": "object",
        "properties": {
          "dotElement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DOTElementDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "POSDto": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "operation": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PayDto": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string",
            "format": "time"
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "operation": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PayloadDto": {
        "type": "object",
        "properties": {
          "orderInBiFmt": {
            "$ref": "#/components/schemas/TransactionDto"
          },
          "orderInKioskFmt": {
            "$ref": "#/components/schemas/JToken"
          }
        },
        "additionalProperties": false
      },
      "ServiceDto": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "nullable": true
          },
          "table": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StatDto": {
        "type": "object",
        "properties": {
          "endStatus": {
            "type": "string",
            "nullable": true
          },
          "posStatus": {
            "type": "string",
            "nullable": true
          },
          "posDetail": {
            "type": "string",
            "nullable": true
          },
          "posTovStatus": {
            "type": "string",
            "nullable": true
          },
          "posTovDetail": {
            "type": "string",
            "nullable": true
          },
          "payStatus": {
            "type": "string",
            "nullable": true
          },
          "payDetail": {
            "type": "string",
            "nullable": true
          },
          "pos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/POSDto"
            },
            "nullable": true
          },
          "pay": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StoreOrderDto": {
        "type": "object",
        "properties": {
          "transactionMetadata": {
            "$ref": "#/components/schemas/TransactionMetadataDto"
          },
          "payload": {
            "$ref": "#/components/schemas/PayloadDto"
          }
        },
        "additionalProperties": false
      },
      "TenderDto": {
        "type": "object",
        "properties": {
          "tenderItem": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TenderItemDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TenderItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "tenderType": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "type": "string",
            "nullable": true
          },
          "paid": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TimingDto": {
        "type": "object",
        "properties": {
          "tStartPay": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "tEndPay": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "tEndPos": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "tInOut": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "tFirstItem": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "tEndOrder": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "bcString": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TouchlessDto": {
        "type": "object",
        "properties": {
          "inputs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InputDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TransactionDto": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "ver": {
            "type": "string",
            "nullable": true
          },
          "sim": {
            "type": "string",
            "nullable": true
          },
          "kioskId": {
            "type": "string",
            "nullable": true
          },
          "day": {
            "type": "string",
            "format": "date"
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "refInt": {
            "type": "string",
            "nullable": true
          },
          "lang": {
            "type": "string",
            "nullable": true
          },
          "preOrder": {
            "type": "string",
            "nullable": true
          },
          "closed": {
            "type": "string",
            "nullable": true
          },
          "storeID": {
            "type": "string",
            "nullable": true
          },
          "brandId": {
            "type": "string",
            "nullable": true
          },
          "stat": {
            "$ref": "#/components/schemas/StatDto"
          },
          "timing": {
            "$ref": "#/components/schemas/TimingDto"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceDto"
          },
          "amounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AmountsDto"
            },
            "nullable": true
          },
          "order": {
            "$ref": "#/components/schemas/OrderDto"
          },
          "touchless": {
            "$ref": "#/components/schemas/TouchlessDto"
          },
          "nestIdentifier": {
            "type": "string",
            "nullable": true
          },
          "transactionCvars": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CVarDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TransactionMetadataDto": {
        "required": [
          "orderID",
          "orderTimeStamp",
          "referenceId",
          "storeID"
        ],
        "type": "object",
        "properties": {
          "storeID": {
            "minLength": 1,
            "type": "string"
          },
          "orderID": {
            "minLength": 1,
            "type": "string"
          },
          "parentOrderId": {
            "type": "string",
            "nullable": true
          },
          "customerId": {
            "type": "string",
            "nullable": true
          },
          "serviceType": {
            "type": "integer",
            "format": "int32"
          },
          "posOrderNumber": {
            "type": "string",
            "nullable": true
          },
          "referenceId": {
            "minLength": 1,
            "type": "string"
          },
          "totalAmount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "orderTimeStamp": {
            "type": "integer",
            "format": "int64"
          },
          "metadataItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MetadataItemsDto"
            },
            "nullable": true
          },
          "productCount": {
            "type": "integer",
            "format": "int32"
          },
          "endStatus": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Basic": {
        "type": "http",
        "description": "Please enter your credentials",
        "scheme": "Basic"
      },
      "OTP": {
        "type": "apiKey",
        "description": "##### Please enter the secret pre-shared key here.\r\nThe key itself is never shown. It is only used internally to compute responses to challenges.\r\n##### Depending on pre-shared key mode, the key can be\r\n* For single key : the-key-value in plain text. No format is necessary.\r\n* For multiple keys : the array of keys in JSON format like this (fields are case sensitive)\r\n```json\r\n   [{\"KeyId\": \"the-key-id\", \"KeyValue\" : \"the-key-value\"}]\r\n```",
        "name": "x-secret-key",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "Basic": [ ]
    },
    {
      "OTP": [ ]
    }
  ]
}