{
  "swagger": "2.0",
  "info": {
    "title": "Rista Platform API",
    "version": "v1",
    "description": "Rista Platform API provides resource oriented URLs to work with your business data. Our API uses [JSON](http://www.json.org) for request and response. API errors are returned using standard HTTP response codes.\n\nYou will need the following to work with your business data using API\n* A registered and active business with Rista. Not registered? [Get it now](https://play.google.com/store/apps/details?id=com.ristaapps.business), register and activate your business\n* Sales Enterprise and API licence for your business. You can purchase these licences from Account Menu\n* An active API Key and Secret Key for your business. Admin can create an API Key from Access Menu.\n* All API endpoints require API Key in `x-api-key` header and a [JWT](http://jwt.io/)(JSON Web Token) in `x-api-token` header\n\n**You need to generate a new JWT api token for each request.**\n\nPrerequisites\n* API Key and Secret Key for your business, if you don't have one request admin to create one from Access Menu\n* Active Sales Enterprise and API Licence\n\nUse a JWT library to create JWT token. Refer [json web token](http://jwt.io/) for available libraries.\n\nToken payload should include the following.\n\n```\n{\"iss\": \"Your API Key\", \"iat\": 1438167698, \"jti\": \"xyz_1438167698489\" }\n```\n\nAttribute   | Description                                                                          | Type    | Required\n:---------: | ------------------------------------------------------------------------------------ | :-----: | :-------:\niss         | Issuer, populate with your API Key                                                   | string  | Yes\niat         | Token issue time, time since epoch in **seconds**. | integer | Yes\njti         | JWT id to uniquely identify the request, **required** for `PUT,POST,DELETE` requests | string  | No\n\n```\ne.g. using node.js jsonwebtoken library \n\nconst jwt = require('jsonwebtoken');\nconst https = require('https');\n\nconst apiKey = 'YOUR API KEY';\nconst secretKey = 'YOUR SECRET KEY';\nconst tokenCreationTime = Math.floor(Date.now() / 1000);\nconst payload = { iss: apiKey, iat: tokenCreationTime };\n\n//jwt library uses HS256 as default.\nconst token = jwt.sign(payload, secretKey);\nconst options = {\n  host: 'api.ristaapps.com',\n  path: '/v1/branch/list',\n  headers: {\n    'x-api-key': apiKey,\n    'x-api-token': token,\n    'content-type': 'application/json'\n  }\n};\n\nhttps.get(options, function (res) { ... });\n```\n\n**Client SDK**\n\nUse this [API specification](https://ristaapps.com/api/documentation/swagger.json) and [swagger code generator](http://swagger.io/swagger-codegen/) tool to generate client SDK for the language of your choice.\n\n"
  },
  "host": "api.ristaapps.com",
  "basePath": "/v1",
  "schemes": [
    "https"
  ],
  "tags": [
    {
      "name": "Analytics"
    },
    {
      "name": "Business"
    },
    {
      "name": "Catalog"
    },
    {
      "name": "Coupon"
    },
    {
      "name": "Customer"
    },
    {
      "name": "Inventory"
    },
    {
      "name": "Sale"
    },
    {
      "name": "Reservation"
    }
  ],
  "paths": {
    "/analytics/sales/summary": {
      "get": {
        "summary": "Get sales summary.",
        "description": "Get sales summary for a given branch on given day or month.",
        "tags": [
          "Analytics"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "period",
            "in": "query",
            "description": "Date in YYYY-MM-DD or Month in YYYY-MM format.",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Sales summary.",
            "schema": {
              "$ref": "#/definitions/SalesSummary"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/analytics/custom/sales/summary": {
      "get": {
        "summary": "Get custom sales summary.",
        "description": "Get custom sales summary for a given branch on given day",
        "tags": [
          "Analytics"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "period",
            "in": "query",
            "description": "Date in YYYY-MM-DD",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Sales summary.",
            "schema": {
              "$ref": "#/definitions/SalesCustomSummary"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/analytics/discount/transactions": {
      "get": {
        "summary": "Get all discount transactions.",
        "description": "Get all discount transactions. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Analytics"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD.",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Provide this if there are more records to fetch. This is provided as output in previous call.",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Discount Transaction result.",
            "schema": {
              "$ref": "#/definitions/DiscountTransactionResult"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/branch/list": {
      "get": {
        "summary": "Get all branch information.",
        "description": "Get information about branches within your business.",
        "tags": [
          "Business"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Branch detail.",
            "schema": {
              "$ref": "#/definitions/BranchListResult"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/branch": {
      "get": {
        "summary": "Get branch information.",
        "description": "Get information about a branch within your business with given branch code.",
        "tags": [
          "Business"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branchCode",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Branch detail.",
            "schema": {
              "$ref": "#/definitions/BranchRequest"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Create or update branch information.",
        "description": "Create a new branch or update existing branch information within your business.",
        "tags": [
          "Business"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "BranchRequest",
            "in": "body",
            "description": "Branch request input",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BranchRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Branch detail.",
            "schema": {
              "$ref": "#/definitions/BranchResponse"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/outlet/status": {
      "get": {
        "summary": "Get aggregator outlet status.",
        "description": "Get current outlet status of a branch and channel at the given order aggregator.",
        "tags": [
          "Business"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Rista branch code",
            "type": "string",
            "required": true
          },
          {
            "name": "channel",
            "in": "query",
            "description": "Rista channel name",
            "type": "string",
            "required": true
          },
          {
            "name": "orderSource",
            "in": "query",
            "description": "Order aggregator source",
            "type": "string",
            "enum": [
              "zomato",
              "swiggy",
              "ownly"
            ],
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Outlet status detail.",
            "schema": {
              "$ref": "#/definitions/OutletStatusResult"
            }
          },
          "400": {
            "description": "Invalid input or branch/channel does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "put": {
        "summary": "Update aggregator outlet status.",
        "description": "Update outlet status of a channel. Note: All order aggregators of the channel will be updated.",
        "tags": [
          "Business"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "channelstatus",
            "in": "body",
            "description": "Channel status input",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BranchChannelStatusInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Branch detail.",
            "schema": {
              "$ref": "#/definitions/Empty"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "If branch/channel/order aggregator does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/branch/txn/list": {
      "get": {
        "summary": "Get all branch Txns (Petty cash).",
        "description": "Get information about branch txns within your business.",
        "tags": [
          "Business"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branchCode",
            "in": "query",
            "description": "Branch Code",
            "type": "string",
            "required": true
          },
          {
            "name": "day",
            "in": "query",
            "description": "businessDay for the required data.",
            "type": "string",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Branch txn detail.",
            "schema": {
              "$ref": "#/definitions/BranchTxnListResult"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/customer": {
      "get": {
        "summary": "Get customer information.",
        "description": "Get customer details with a given customer id or phoneNumber.",
        "tags": [
          "Customer"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "Customer identifier. id or phoneNumber is required.",
            "type": "string",
            "default": ""
          },
          {
            "name": "phoneNumber",
            "in": "query",
            "description": "Customer phone number. id or phoneNumber is required.",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Customer detail.",
            "schema": {
              "$ref": "#/definitions/Customer"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Customer not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Create or update customer.",
        "description": "Create a new customer or update an existing customer by phone number. If a customer with the given `phoneNumber` already exists their details are updated; otherwise a new customer is created. `firstName` is required only when creating a new customer. `customerId` must be unique per business — the request is rejected if another customer already holds the provided ID.",
        "tags": [
          "Customer"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "customer",
            "in": "body",
            "description": "Customer payload. `phoneNumber` identifies the customer for upsert.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CustomerInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Save customer.",
            "schema": {
              "$ref": "#/definitions/Customer"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Provided branch or membership does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/customer/page": {
      "get": {
        "summary": "Get details of customers modified after given day",
        "description": "Returns page of records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Customer"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. The customers modified after this day will be returned",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous customers page call. Provide this to fetch the next page of customer records",
            "required": false,
            "type": "string"
          },
          {
            "name": "hasTaxId",
            "in": "query",
            "description": "If set true then api only returns customers who has taxId configured.",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of Customers.",
            "schema": {
              "$ref": "#/definitions/CustomerPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Customer not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/customer/prepaid/balance": {
      "get": {
        "summary": "Get a customer's prepaid wallet balance.",
        "description": "Returns the customer's latest consolidated prepaid wallet balance. The balance reflects transactions posted through the Customer Prepaid APIs, the Rista UI and POS wallet redemption, and is the same figure Rista checks a redemption against, so it is what the customer can actually spend. A customer with no wallet history returns a balance of 0.",
        "tags": [
          "Customer"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "customerNumber",
            "in": "query",
            "description": "Phone number of the customer whose wallet is read. The wallet is resolved by this.",
            "required": true,
            "type": "string"
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Optional. Not used to resolve the wallet, but if sent it must belong to the same customer as customerNumber, otherwise the request fails with 404.",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Customer prepaid wallet balance.",
            "schema": {
              "$ref": "#/definitions/PrepaidBalance"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "No customer found for the given customerNumber, or customerId does not belong to that customer.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIRequestAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/customer/prepaid/transaction": {
      "post": {
        "summary": "Add money to or refund from a customer prepaid wallet.",
        "description": "Posts a prepaid wallet transaction for a customer. ADD_WALLET credits the wallet, REFUND debits it and fails if the amount exceeds the available balance. Each accepted request posts one transaction, so do not resend a request whose outcome you did not observe - a retry moves the money a second time.",
        "tags": [
          "Customer"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "prepaidtransaction",
            "in": "body",
            "description": "Customer prepaid wallet transaction.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PrepaidTransaction"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Transaction posted, with the resulting wallet balance.",
            "schema": {
              "$ref": "#/definitions/PrepaidTransactionResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "No customer found for the given customerNumber.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIRequestAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/customer/loyalty/points": {
      "post": {
        "summary": "Credit/Debit loyalty points.",
        "description": "Credit/Debit loyalty points to given customer.",
        "tags": [
          "Customer"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "loyaltylot",
            "in": "body",
            "description": "Customer Loyalty lot.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CustomerLoyaltyLot"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Saved loyalty points.",
            "schema": {
              "$ref": "#/definitions/CustomerLoyaltyLot"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Customer not found or loyalty scheme not set for given customer id.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/customer/feedback": {
      "get": {
        "summary": "Get details of customer's feedback on a given business day",
        "description": "Returns page of records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter. API support 1000 records at a time",
        "tags": [
          "Customer"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "businessDay",
            "in": "query",
            "description": "Date in YYYY-MM-DD. The feedback submitted on this day will be returned",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous feedBack api call. Provide this to fetch the next page of customer feedback records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of Customers feedback.",
            "schema": {
              "$ref": "#/definitions/CustomerFeedbackPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/outlet/delivery/timings": {
      "get": {
        "summary": "Get outlet delivery timings.",
        "description": "Get delivery timings configured for an order aggregator outlet of a branch channel.",
        "tags": [
          "Business"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string"
          },
          {
            "name": "channel",
            "in": "query",
            "description": "Channel name",
            "required": true,
            "type": "string"
          },
          {
            "name": "orderSource",
            "in": "query",
            "description": "Order aggregator.",
            "required": true,
            "type": "string",
            "enum": [
              "zomato",
              "swiggy"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Outlet delivery timings.",
            "schema": {
              "$ref": "#/definitions/DeliveryTimingsResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "If branch/channel/order aggregator does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Update outlet delivery timings.",
        "description": "Update delivery timings for the order aggregator outlet(s) of a branch channel. Timings must be provided for all seven days of the week, a maximum of three time slots is allowed per day, and slots within a day cannot overlap. Note: If orderSource is not provided, all order aggregators of the channel will be updated.",
        "tags": [
          "Business"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "timings",
            "in": "body",
            "description": "Delivery timings input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DeliveryTimingsUpdateRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Delivery timings updated successfully.",
            "schema": {
              "$ref": "#/definitions/DeliveryTimingsUpdateResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "If branch/channel/order aggregator does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/payments": {
      "get": {
        "deprecated": true,
        "summary": "Deprecated - Get payments.",
        "description": "Get payments made for a given day.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Payments for a given day",
            "schema": {
              "$ref": "#/definitions/PaymentsResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/resource": {
      "get": {
        "summary": "Fetch Resources of a branch",
        "description": "Fetch resources e.g., tables of a branch",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Page of item records.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Resource"
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/reservation/slots": {
      "get": {
        "summary": "Fetch Available Reservation Slots of a branch",
        "description": "Fetch available reservation slots within a branch for a specific date",
        "tags": [
          "Reservation"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [{
            "name": "branchCode",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "date",
            "in": "query",
            "description": "Date in YYYY-MM-DD. API will return the available reservation slots of the provided date and the slots after the current time",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "groupSize",
            "in": "query",
            "description": "Expected Group Size of People",
            "required": false,
            "type": "number"
          }
        ],
        "responses": {
          "200": {
            "description": "Available Reservation Slots Detail",
            "schema": {
              "$ref": "#/definitions/AvailableReservationSlots"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Reservation Slot not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/reservation": {
      "get": {
        "summary": "Fetch Available Reservation corresponding to a reservation number branch",
        "description": "Fetch available reservation within a branch for a specific reservation number",
        "tags": [
          "Reservation"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "reservationNumber",
            "in": "query",
            "description": "unique number of the form YYYYMMDD-4 digit unique series",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Available Reservation Detail",
            "schema": {
              "$ref": "#/definitions/CreateReservationOutput"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Invoice not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/sale": {
      "get": {
        "summary": "Get sale detail.",
        "description": "Get sale detail for a given invoice number.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "invoice",
            "in": "query",
            "description": "Invoice number.",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Sale Detail.",
            "schema": {
              "$ref": "#/definitions/Sale"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Invoice not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Save sale.",
        "description": "Save sale into your business account.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "sale",
            "in": "body",
            "description": "Sale information.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PostSale"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Saved sale.",
            "schema": {
              "$ref": "#/definitions/Sale"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sale/resource": {
      "get": {
        "summary": "Get Current resource orders",
        "description": "Get Current open orders for a resource i.e., table",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "resourceId",
            "in": "query",
            "description": "Resource Id",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Sales Detail.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Sale"
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Invoice not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Update Sale Resource(Table)",
        "description": "Updates Sale Resource(Table)",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "resourceInput",
            "in": "body",
            "description": "Sale Resource input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SaleResourceInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Resource updated to sale."
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sale/resource/pax": {
      "post": {
        "summary": "Updates Sale Pax Count",
        "description": "Updates Sale Pax Count",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "paxInput",
            "in": "body",
            "description": "Sale Pax Count input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PaxCountInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Pax Count updated to sale."
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sale/status": {
      "post": {
        "summary": "Update Sale Status",
        "description": "Updates Sale Status",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "statusInput",
            "in": "body",
            "description": "Sale Status input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SaleStatusInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Status updated to sale."
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Sale not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sale/delivery/status": {
      "post": {
        "summary": "Update Sale delivery status",
        "description": "Update Sale delivery status",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "deliveryStatusInput",
            "in": "body",
            "description": "Sale delivery status input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SaleDeliveryStatusInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Delivery status updated."
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Sale not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sale/target": {
      "post": {
        "summary": "Update Sale with target information",
        "description": "Update sale with target systems information",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "targetInput",
            "in": "body",
            "description": "Sale target input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SaleTargetInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "target updated to sale."
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Sale not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sale/payments": {
      "get": {
        "deprecated": true,
        "summary": "Deprecated - Get payments for a sale.",
        "description": "Get payments for a given invoice number.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "invoice",
            "in": "query",
            "description": "Invoice number.",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Payments for a given invoice.",
            "schema": {
              "$ref": "#/definitions/PaymentsResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Add payment",
        "description": "Add payment to an existing sale.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "payment",
            "in": "body",
            "description": "Payment input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PaymentInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Payment added to sale, the updated sale is returned.",
            "schema": {
              "$ref": "#/definitions/Sale"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Sale not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sale/payments/offline": {
      "post": {
        "summary": "Offline Payment",
        "description": "Customer opts to pay offline for an order.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "payment",
            "in": "body",
            "description": "Invoice input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OfflinePaymentInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Offline Payment tag added to sale and notification sent to cashier, the updated sale is returned.",
            "schema": {
              "$ref": "#/definitions/Sale"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Sale not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sale/discount/update": {
      "post": {
        "summary": "Apply discounts on sale.",
        "description": "Apply discounts on sale.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "discountUpdateInput",
            "in": "body",
            "description": "Discount update input",
            "required": true,
            "schema": {
              "$ref": "#/definitions/discountUpdateInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Saved sale.",
            "schema": {
              "$ref": "#/definitions/Sale"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sales": {
      "get": {
        "deprecated": true,
        "summary": "Deprecated - Get sales records for a given branch on a given day.",
        "description": "Returns list of sales for a given branch on a given day.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "status",
            "in": "query",
            "description": "Sale status to filter. e.g. Open, Closed, Cancelled, Voided",
            "required": false,
            "type": "string",
            "enum": [
              "Open",
              "Closed",
              "Cancelled",
              "Voided"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Sales records.",
            "schema": {
              "$ref": "#/definitions/SalesResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sales/summary": {
      "get": {
        "summary": "Get sale summary records for a given branch on a given day.",
        "description": "Returns list of sales summary records for a given branch on a given day. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "status",
            "in": "query",
            "description": "Sale status to filter. e.g. Open, Closed, Cancelled, Voided",
            "required": false,
            "type": "string",
            "enum": [
              "Open",
              "Closed",
              "Cancelled",
              "Voided"
            ]
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous sales summary call. Provide this to fetch the next page of sales summary records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Sales records.",
            "schema": {
              "$ref": "#/definitions/SalesResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sales/page": {
      "get": {
        "summary": "Get detailed sale records for a given branch on a given day.",
        "description": "Returns page of detailed sale records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "status",
            "in": "query",
            "description": "Sale status to filter.  e.g. Open, Closed, Cancelled, Voided",
            "required": false,
            "type": "string",
            "enum": [
              "Open",
              "Closed",
              "Cancelled",
              "Voided"
            ]
          },
          {
            "name": "modified",
            "in": "query",
            "description": "if true, returns the sales last modified on given 'day'",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of records required in the response, with max limit of 500",
            "required": false,
            "type": "string"
          },
          {
            "name": "dayInclusivePayment",
            "in": "query",
            "description": "if true, you will get payments details of only given query day of the sales.",
            "required": false,
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous sales page call. Provide this to fetch the next page of sales records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed sales records.",
            "schema": {
              "$ref": "#/definitions/SalesPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sale/item/outofstock": {
      "post": {
        "summary": "Partial Order Acceptence",
        "description": "Mark order item out of stock",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "PartialOrderAcceptence",
            "in": "body",
            "description": "Partial Oredr Acceptenceinput",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PartialOrderAcceptence"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Saved sale.",
            "schema": {
              "$ref": "#/definitions/Sale"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sale/delivery/mode": {
      "post": {
        "summary": "Change mode of delivery",
        "description": "User can change delivery mode from pickup to delivery and ensure self-delivery",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "mode",
            "in": "body",
            "description": "Invoice input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangeDeliveryModeInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Self Delivery tag added to sale with change in delivery mode and notification sent to user, the updated sale is returned.",
            "schema": {
              "$ref": "#/definitions/Sale"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Sale not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/sales/ledger": {
      "get": {
        "summary": "Get detailed sale ledger records for a given branch on a given day.",
        "description": "Returns page of detailed sale ledger records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Sale"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "status",
            "in": "query",
            "description": "Sale status to filter.  e.g. Open, Closed, Cancelled, Voided",
            "required": false,
            "type": "string",
            "enum": [
              "Open",
              "Closed",
              "Cancelled",
              "Voided"
            ]
          },
          {
            "name": "modified",
            "in": "query",
            "description": "if true, returns the sales last modified on given 'day'",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of records required in the response, with max limit of 500",
            "required": false,
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous sales page call. Provide this to fetch the next page of sales records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed sales ledger records.",
            "schema": {
              "$ref": "#/definitions/SalesPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/catalog": {
      "get": {
        "summary": "Get Catalog for a given branch and channel.",
        "description": "Returns all catalog elements for given branch an channel",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string"
          },
          {
            "name": "channel",
            "in": "query",
            "description": "Name of the channel within branch.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Catalog",
            "schema": {
              "$ref": "#/definitions/Catalog"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Update catalog for a given branch and channel",
        "description": "Updates the catalog for a given branch and channel",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "description": "Catalog input",
            "name": "CatalogSaveRequest",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CatalogSaveRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Response to catalog save request.",
            "schema": {
              "title": "CatalogSaveResponse",
              "required": [
                "requestId"
              ],
              "properties": {
                "requestId": {
                  "type": "string",
                  "description": "Unique request identifier to map the status response received on request callbackURL"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Provided branch or membership does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/catalog/enterprise": {
      "get": {
        "summary": "Get Catalog for entire business.",
        "description": "Returns all catalog elements for entire business",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Catalog",
            "schema": {
              "$ref": "#/definitions/EnterpriseCatalog"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Retrieve the complete business catalog in the form of a file URL through a callback URL.",
        "description": "Returns all catalog elements for entire business in the form of fileURL",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "description": "Enterprise Catalog Fetch",
            "name": "EnterpriseCatalogFetch",
            "required": true,
            "schema": {
              "title": "Enterprise catalog fetch based on callbacks",
              "properties": {
                "callbackURL": {
                  "type": "string",
                  "description": "HTTP/HTTPS POST URL to receive sync status updates for Success, Failed"
                },
                "callbackHeaders": {
                  "type": "object",
                  "description": "JSON object with headers needed for callback."
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Response",
            "schema": {
              "title": "Success Response",
              "properties": {
                "message": {
                  "type": "string",
                  "description": "Response message"
                },
                "status":{
                  "type":"boolean",
                  "description": "Status Response"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/catalog/sync": {
      "post": {
        "summary": "Sync aggregator outlets for a branch and channel",
        "description": "Sync all aggregator outlets for a branch and channel",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "description": "Catalog sync input",
            "name": "CatalogSyncRequest",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CatalogSyncRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Response to catalog sync request.",
            "schema": {
              "title": "CatalogSyncResponse",
              "required": [
                "requestId"
              ],
              "properties": {
                "requestId": {
                  "type": "string",
                  "description": "Unique request identifier to map the status response received on request callbackURL"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Provided branch or membership does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/catalog/items": {
      "post": {
        "summary": "Add/Update business level catalog items",
        "description": "Add/Update business level catalog items",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "description": "Catalog input",
            "name": "CatalogItemsSaveRequest",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CatalogItemsSaveRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Response to catalog items save request.",
            "schema": {
              "title": "CatalogItemsSaveResponse",
              "required": [
                "requestId"
              ],
              "properties": {
                "requestId": {
                  "type": "string",
                  "description": "Unique request identifier to map the status response received on request callbackURL"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Provided branch or membership does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/catalog/sync/status": {
      "get": {
        "summary": "Get catalog sync/save request status.",
        "description": "Returns the current status of a catalog save or sync request initiated via /catalog or /catalog/sync endpoints. This is an asynchronous operation tracking endpoint.",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "requestId",
            "in": "query",
            "description": "Request identifier returned from catalog save/sync API.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Catalog request status.",
            "schema": {
              "$ref": "#/definitions/CatalogSyncStatusResponse"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/catalog/item/list": {
      "get": {
        "summary": "Get Catalog Items for a given business.",
        "description": "Returns all catalog items for given business. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. If provide, then api only return catalog items modified after this day.",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous page call. Provide this to fetch the next page of indent records",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Catalog Items",
            "schema": {
              "$ref": "#/definitions/CatalogItemsResponse"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/items": {
      "get": {
        "deprecated": true,
        "summary": "Deprecated - Get items for a given branch and channel.",
        "description": "Returns page of item records. The output contains a lastKey attribute indicating there are more records to be fetched. You will need to make multiple requests to fetch all records until the lastKey is available.",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "channel",
            "in": "query",
            "description": "Name of the channel within branch.",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous call. Provide this to fetch the next page of records",
            "required": false,
            "type": "string"
          },
          {
            "name": "lastModified",
            "in": "query",
            "description": "Obtained from a previous call. Provide this to optimize fetch of items, a 304 response is returned if items are not modified since this time.",
            "required": false,
            "type": "number"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of item records.",
            "schema": {
              "$ref": "#/definitions/ItemsResult"
            }
          },
          "304": {
            "description": "Items not modified."
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/items/price": {
      "get": {
        "deprecated": true,
        "summary": "Deprecated - Get item prices for a given price book and channel.",
        "description": "Returns page of item records. The output contains a lastKey attribute indicating there are more records to be fetched. You will need to make multiple requests to fetch all records until the lastKey is available.",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "priceBook",
            "in": "query",
            "description": "Name of price book",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "channel",
            "in": "query",
            "description": "Name of the channel within price book.",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous call. Provide this to fetch the next page of records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of item records.",
            "schema": {
              "title": "ItemPriceOutput",
              "properties": {
                "items": {
                  "type": "array",
                  "description": "Item List",
                  "items": {
                    "type": "object",
                    "properties": {
                      "skuCode": {
                        "type": "string",
                        "description": "Unique identifier to item"
                      },
                      "price": {
                        "type": "number",
                        "description": "price of the item"
                      }
                    }
                  }
                },
                "lastKey": {
                  "type": "string",
                  "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
                }
              }
            }
          },
          "304": {
            "description": "Items not modified."
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "deprecated": true,
        "summary": "Deprecated - Update prices of items for a given price book and channel",
        "description": "Update prices of upto 100 items in a single call for a given price book and channel",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "description": "Item Price details",
            "name": "itemPriceInput",
            "required": true,
            "schema": {
              "title": "ItemPriceInput",
              "required": [
                "priceBook",
                "channel",
                "items"
              ],
              "properties": {
                "priceBook": {
                  "type": "string",
                  "description": "Name of price book"
                },
                "channel": {
                  "type": "string",
                  "description": "Name of the channel within price book."
                },
                "items": {
                  "type": "array",
                  "description": "Array of Items with Price Details",
                  "items": {
                    "type": "object",
                    "required": [
                      "skuCode",
                      "op"
                    ],
                    "properties": {
                      "skuCode": {
                        "type": "string",
                        "description": "Unique identifier to item"
                      },
                      "op": {
                        "type": "string",
                        "description": "UPDATE - Add/Update the Price, DELETE - Remove Item for this channel",
                        "enum": [
                          "UPDATE",
                          "DELETE"
                        ]
                      },
                      "price": {
                        "type": "number",
                        "description": "price of the item. Required if op = UPDATE"
                      }
                    }
                  }
                }
              }
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Response to item price update.",
            "schema": {
              "title": "ItemPriceResponse",
              "required": [
                "status"
              ],
              "properties": {
                "status": {
                  "type": "string",
                  "description": "Status of request",
                  "enum": [
                    "success",
                    "failed"
                  ]
                },
                "items": {
                  "type": "array",
                  "description": "Details of failed items, present if status = failed",
                  "items": {
                    "type": "object",
                    "required": [
                      "skuCode",
                      "op"
                    ],
                    "properties": {
                      "skuCode": {
                        "type": "string",
                        "description": "Unique identifier to item"
                      },
                      "op": {
                        "type": "string",
                        "description": "UPDATE - Add/Update the Price, DELETE - Remove Item for this channel",
                        "enum": [
                          "UPDATE",
                          "DELETE"
                        ]
                      },
                      "price": {
                        "type": "number",
                        "description": "price of the item. Required if op = UPDATE"
                      },
                      "error": {
                        "type": "string",
                        "description": "error message"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Provided branch or membership does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/items/sync": {
      "post": {
        "deprecated": true,
        "summary": "Deprecated - Syncs Items to a aggregators",
        "description": "Initiates a request to sync items to aggregator system, and status is sent to callback if provided",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "itemSyncInput",
            "description": "Input parameters for items sync",
            "required": true,
            "schema": {
              "title": "ItemSyncInput",
              "required": [
                "priceBook",
                "channel"
              ],
              "properties": {
                "priceBook": {
                  "type": "string",
                  "description": "Name of price book"
                },
                "channel": {
                  "type": "string",
                  "description": "Name of the channel within price book."
                },
                "callbackURL": {
                  "type": "string",
                  "description": "HTTP/HTTPS POST URL to receive sync status updates for In Progress, Completed, Failed"
                },
                "callbackHeaders": {
                  "type": "object",
                  "description": "JSON object with headers needed for callback."
                }
              }
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Response to sync.",
            "schema": {
              "title": "ItemSyncResponse",
              "required": [
                "requestId"
              ],
              "properties": {
                "requestId": {
                  "type": "string",
                  "description": "Identifier for this request for which status will be notified on callback"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Provided branch or membership does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/items/soldout": {
      "get": {
        "summary": "Get List of Sold Out Items for a given branch",
        "description": "Sold Out Item records.",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Sold Out Item records.",
            "schema": {
              "$ref": "#/definitions/SoldOutItemsResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Save sold out items for a given branch level or channel level",
        "description": "Save a list of sold out items. The existing sold out items list is replaced with the provided list. If channel names are send in particular field it will do soldout for particular channels else for entire branch.",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string"
          },
          {
            "name": "soldOutItemsSaveRequest",
            "description": "Sold out items request data.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SoldOutItemsSaveRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Saved sold out item list with success/failure codes.",
            "schema": {
              "$ref": "#/definitions/SoldOutItemsSaveResponse"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/items/soldout/history": {
      "get": {
        "summary": "Get sold out history for a given branch and business day",
        "description": "Fetch item sold out history in a paginated way for a given branch and business day.",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string"
          },
          {
            "name": "day",
            "in": "query",
            "description": "Business day in YYYY-MM-DD format.",
            "required": true,
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "To retrieve next set of records, pass this as received in the earlier request.",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Sold out item history response.",
            "schema": {
              "$ref": "#/definitions/SoldOutItemsHistoryResponse"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/stockStatus": {
      "get": {
        "summary": "Get Stock Status of SKUs for a given branch and channel",
        "description": "Returns the SKU codes that are currently stock-out and stock-in for the requested branch and channel. Only SKUs available in the channel catalog of the branch are considered.",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Branch Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "channel",
            "in": "query",
            "description": "Channel Name",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Stock status of the SKUs.",
            "schema": {
              "$ref": "#/definitions/StockStatusResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/coupon": {
      "post": {
        "summary": "Create Coupon",
        "description": "Creates Coupon into your business account.",
        "tags": [
          "Coupon"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "couponInput",
            "in": "body",
            "description": "Coupon Input",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CouponInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created Coupon"
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/coupon/bulk": {
      "post": {
        "summary": "Create Coupons",
        "description": "Creates multiple (max. 200) Coupon into your business account.",
        "tags": [
          "Coupon"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "couponsInput",
            "in": "body",
            "description": "Coupons Input",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CouponsInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created Coupon"
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/coupon/verify": {
      "post": {
        "summary": "Verify Coupon",
        "description": "Verifies the validity of coupon",
        "tags": [
          "Coupon"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "coupon",
            "in": "body",
            "description": "Coupon Details",
            "required": true,
            "schema": {
              "title": "Coupon Detail",
              "required": [
                "couponProvider",
                "couponCode",
                "branchCode",
                "channelName"
              ],
              "properties": {
                "couponProvider": {
                  "type": "string",
                  "description": "Coupon Provider Code received as part of Get Catalog"
                },
                "couponCode": {
                  "type": "string",
                  "description": "Coupon Code to verify"
                },
                "branchCode": {
                  "type": "string",
                  "description": "Branch Code where this coupon is getting used"
                },
                "channelName": {
                  "type": "string",
                  "description": "Channel Name"
                },
                "phoneNumber": {
                  "type": "string",
                  "description": "Customer Phone number"
                }
              }
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Coupon Verified",
            "schema": {
              "properties": {
                "discountCodes": {
                  "type": "array",
                  "description": "Discount Codes that can be applied for this coupon",
                  "items": {
                    "type": "string",
                    "description": "discount code"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/indents/page": {
      "get": {
        "summary": "Get detailed Indent In records for a given store on a given day.",
        "description": "Returns page of detailed Indent In records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Activity Order Number. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed indent records.",
            "schema": {
              "$ref": "#/definitions/IndentPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/po/page": {
      "get": {
        "summary": "Get detailed Purchase Order records for a given store on a given day.",
        "description": "Returns page of detailed PO records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Activity Order Number. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous PO page call. Provide this to fetch the next page of PO records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed PO records.",
            "schema": {
              "$ref": "#/definitions/POPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/grn/page": {
      "get": {
        "summary": "Get detailed Goods Received Note (GRN) records for a given store on a given day.",
        "description": "Returns page of detailed GRN records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Activity Order Number. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous GRN page call. Provide this to fetch the next page of GRN records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed GRN records.",
            "schema": {
              "$ref": "#/definitions/GRNPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/post_final_grn/page": {
      "get": {
        "summary": "Get detailed Post Final GRN records for a given store approved on a given day.",
        "description": "Returns page of detailed  Post Final GRN records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Activity Order Number. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous Post Final GRN page call. Provide this to fetch the next page of Post Final GRN records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed Post Final GRN records.",
            "schema": {
              "$ref": "#/definitions/PostFinalGRNPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/shrinkage/page": {
      "get": {
        "summary": "Get detailed Shrinkage records for a given store on a given day.",
        "description": "Returns page of detailed Shrinkage records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "stockingType",
            "in": "query",
            "type": "string",
            "enum": [
              "Stocked",
              "Nonstocked"
            ],
            "default": "Stocked",
            "description": "If type = Nonstocked, inlcudes non stocked items. type = Stocked, included stocked items"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous GRN page call. Provide this to fetch the next page of GRN records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed GRN records.",
            "schema": {
              "$ref": "#/definitions/ShrinkagePageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/adjustment/page": {
      "get": {
        "summary": "Get detailed Adjustment records for a given store on a given day.",
        "description": "Returns page of detailed Adjustment records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous GRN page call. Provide this to fetch the next page of GRN records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed GRN records.",
            "schema": {
              "$ref": "#/definitions/AdjustmentPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/transfer/page": {
      "get": {
        "summary": "Get detailed Transfer Out records from a given store on a given day.",
        "description": "Returns page of detailed Transfer Out records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Activity Order Number. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of records required in the response, with max limit of 50",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed indent records.",
            "schema": {
              "$ref": "#/definitions/TransferPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/transferin/page": {
      "get": {
        "summary": "Get detailed Transfer In records to a given store on a given day.",
        "description": "Returns page of detailed Transfer In records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Activity Order Number. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of records required in the response, with max limit of 50",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed indent records.",
            "schema": {
              "$ref": "#/definitions/TransferInPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/transfer/cancel": {
      "post": {
        "summary": "Cancel a Transfer Order created via API",
        "description": "Cancel a transfer order created via API with 'Transfer In' in 'Draft' status within your business account",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Transfer Order Number to cancel",
            "required": true,
            "type": "string"
          },
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Transfer Order cancelled successfully.",
            "schema": {
              "type": "object",
              "properties": {
                "status": {
                  "type": "string",
                  "example": "Cancelled"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Transfer Order not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          }
        ]
      }
    },
    "/inventory/post_final_ti/page": {
      "get": {
        "summary": "Get detailed Post Final Transfer In records from a given store approved on a given day.",
        "description": "Returns page of detailed Post Final Transfer In records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Activity Order Number. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of records required in the response, with max limit of 50",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed indent records.",
            "schema": {
              "$ref": "#/definitions/PostFinalTransferPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/purchase_return/page": {
      "get": {
        "summary": "Get detailed Purchase Return records from a given store on a given day.",
        "description": "Returns page of detailed Purchase Return records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Activity Order Number. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed indent records.",
            "schema": {
              "$ref": "#/definitions/PurchaseReturnPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/transfer_return/page": {
      "get": {
        "summary": "Get detailed Transfer Return records from a given store on a given day.",
        "description": "Returns page of detailed Transfer Return records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Activity Order Number. day or orderNumber required",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed indent records.",
            "schema": {
              "$ref": "#/definitions/TransferReturnPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/audit/page": {
      "get": {
        "summary": "Get detailed Audit records from a given store on a given day.",
        "description": "Returns page of detailed Audit records. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD.",
            "required": true,
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Page of detailed indent records.",
            "schema": {
              "$ref": "#/definitions/AuditPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/transfer": {
      "post": {
        "summary": "Save Transfer Order",
        "description": "Save Transfer into your business account.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "transfer",
            "in": "body",
            "description": "Transfer Information",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransferInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Transfer",
            "schema": {
              "$ref": "#/definitions/Transfer"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/transferreturn": {
      "post": {
        "summary": "Save Transfer Return Order",
        "description": "Save Transfer Return into your business account.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "transferReturn",
            "in": "body",
            "description": "Transfer Return Information",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransferReturnInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Transfer Return",
            "schema": {
              "$ref": "#/definitions/TransferReturnOut"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/indent": {
      "post": {
        "summary": "Save Indent Out",
        "description": "Save Indent Out into your business account.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "indent",
            "in": "body",
            "description": "Indent Information",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IndentInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Indent Out",
            "schema": {
              "$ref": "#/definitions/IndentOut"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/purchase_order": {
      "post": {
        "summary": "Save Purchase Order",
        "description": "Save Purchase Order into your business account.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "purchaseOrder",
            "in": "body",
            "description": "Purchase Order Information",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PurchaseOrderInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Purchase Order",
            "schema": {
              "$ref": "#/definitions/PurchaseOrder"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/item/activity": {
      "get": {
        "summary": "Deprecated - Get item activity for a given store on a given day.",
        "description": "Get item activity for a given store on a given day.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD",
            "required": true,
            "type": "string",
            "default": ""
          }
        ],
        "responses": {
          "200": {
            "description": "Item Activity records",
            "schema": {
              "$ref": "#/definitions/ItemActivityResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/item/activity/page": {
      "get": {
        "summary": "Get item activity for a given store on a given day.",
        "description": "Get item activity for a given store on a given day.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branch",
            "in": "query",
            "description": "Store Code",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD",
            "required": true,
            "type": "string",
            "default": ""
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous item activity page call. Provide this to fetch the next page of item activity records",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Item Activity records",
            "schema": {
              "$ref": "#/definitions/ItemActivityPageResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/item/stock": {
      "post": {
        "summary": "Get current stock of items for a given store.",
        "description": "Get current item stock for particular sku's for a given store.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "itemStockInput",
            "in": "body",
            "description": "GetItem Stock Input",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ItemStockInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current stock for that particular items",
            "schema": {
              "$ref": "#/definitions/ItemStockResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/store": {
      "get": {
        "summary": "Get an inventory store by storeCode.",
        "description": "Get details of a single inventory store including settings, preferences, flags, and number sequences.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "storeCode",
            "in": "query",
            "description": "Store code of the inventory store.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Inventory store details.",
            "schema": {
              "$ref": "#/definitions/InventoryStoreResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Create or update an inventory store.",
        "description": "Creates a new inventory store or updates an existing one identified by storeCode. On create, storeName, branch, businessName, label, and address are required.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "inventoryStoreInput",
            "in": "body",
            "description": "Inventory store input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/InventoryStoreInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Store created or updated successfully.",
            "schema": {
              "type": "object",
              "properties": {
                "storeCode": {
                  "type": "string",
                  "description": "Store code."
                },
                "isCreated": {
                  "type": "boolean",
                  "description": "Present and true when the store was newly created."
                },
                "isUpdated": {
                  "type": "boolean",
                  "description": "Present and true when an existing store was updated."
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/store/list": {
      "get": {
        "summary": "Get all store information.",
        "description": "Get information about stores within your business.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Store details.",
            "schema": {
              "$ref": "#/definitions/InventoryStoreList"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/supplier": {
      "post": {
        "summary": "Create or Update Supplier.",
        "description": "Create or Update Supplier.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "supplier",
            "in": "body",
            "description": "Supplier Input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SupplierInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Created Supplier"
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/items": {
      "post": {
        "summary": "Create or Update Inventory Items. Maximum 200 at a time.",
        "description": "Create or Update inventory items for your business. In case of update, all the fields are to be provided in input, except for those that you wish to delete. Only following fields can be updated - name, trackingMethod, category, perishable, trackInventory(status), barcode, taxcode, description, shelfLife, altItem",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "inventory item",
            "in": "body",
            "description": "Item Information.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/InventoryItemInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success response.",
            "schema": {
              "$ref": "#/definitions/InventoryItemResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "get": {
        "summary": "Get inventory items for a given business",
        "description": "Returns all inventory items for a given business. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of lastkey attribute indicates that there are more records to be fetched. If there exists a lastkey make subsequent calls with this lastkey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "Filter by item type.",
            "required": false,
            "type": "string",
            "enum": ["Material", "Supplies", "Product"]
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by item status.",
            "required": false,
            "type": "string",
            "enum": ["Active", "Inactive"]
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Pagination cursor from previous response. Use the `lastKey` value from the previous API response to fetch the next page of results.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Items Information",
            "schema": {
              "$ref": "#/definitions/InventoryItemResponse"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/store/items": {
      "post": {
        "summary": "Create Items Stock for a particular store. Maximum 200 at a time.",
        "description": "Create items stock for a store.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "store items",
            "in": "body",
            "description": "Store Items and Stock Information",
            "required": true,
            "schema": {
              "$ref": "#/definitions/StoreItemStockInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success response.",
            "schema": {
              "$ref": "#/definitions/StoreItemStockResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      },
      "get": {
        "summary": "Get stock details of inventory items.",
        "description": "Get item details at a given store. This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "branchCode",
            "in": "query",
            "description": "Code of the store you want to get stock for.",
            "type": "string"
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. If provide, then api only return store items modified after this day.",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous page call. Provide this to fetch the next page of indent records",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed Store Items Records.",
            "schema": {
              "$ref": "#/definitions/StoreItemsResponse"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/supplier/items": {
      "post": {
        "summary": "Create or Update Supplier Items. Maximum 200 at a time.",
        "description": "Create or Update supplier items for your business. In case of Internal Supplier, if mrp, marginPercentage and price are not sent in input then by default useInventoryPrice is considered true. In case of update , these fields cannot be updated- Supplier Code, inventorySkuCode, skuCode, measuringUnit, and if taxes, Barcodes and taxApplicableOn is empty then it will be deleted.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "supplier item",
            "in": "body",
            "description": "Supplier Item Information.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SupplierItemInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success response.",
            "schema": {
              "$ref": "#/definitions/SupplierItemResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/supplier/list": {
      "get": {
        "summary": "Get details of suppliers.",
        "description": "Get details of one or more suppliers.This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "supplierCode",
            "in": "query",
            "description": "Supplier Code",
            "type": "string"
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. If provide, then api only return supplier modified after this day.",
            "type": "string"
          },
          {
            "name": "sourceStoreCode",
            "in": "query",
            "description": "Store Code of Managed by Store for external suppliers, Seller Store Code for internal suppliers.",
            "type": "string"
          },
          {
            "name": "supplierType",
            "in": "query",
            "description": "Type of supplier.",
            "enum": [
              "Internal",
              "External"
            ],
            "type": "string"
          },
          {
            "name": "phoneNumber",
            "in": "query",
            "description": "Phone Number of Supplier",
            "type": "string"
          },
          {
            "name": "hasTaxId",
            "in": "query",
            "description": "If set true then api only returns supplier who has tax identification number configured.",
            "type": "boolean"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed Supplier Records.",
            "schema": {
              "$ref": "#/definitions/Supplier"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/supplieritem/list": {
      "get": {
        "summary": "Get details of supplier items.",
        "description": "Get details of one or more supplier items.This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "supplierCode",
            "in": "query",
            "description": "Supplier Code",
            "type": "string"
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. If provide, then api only return supplier items modified after this day.",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed Supplier Items Records.",
            "schema": {
              "$ref": "#/definitions/SupplierItemsResponse"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/activity/status": {
      "put": {
        "summary": "Update Activity status",
        "description": "Use this to update status of activities like catalog sync",
        "tags": [
          "Catalog"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "updateActivityStatusRequest",
            "in": "body",
            "description": "Activity status input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateActivityStatusRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Activity status updated."
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/reservation/book": {
      "post": {
        "summary": "Create Reservation",
        "description": "Create table reservation for your branch.",
        "tags": [
          "Reservation"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "Create Reservation Input",
            "in": "body",
            "description": "Create Reservation Input",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateReservationInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Saved Reservation.",
            "schema":{
              "$ref": "#/definitions/CreateReservationOutput"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/contract": {
      "post": {
        "summary": "Create Contract.",
        "description": "Create Contract.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "contract",
            "in": "body",
            "description": "Contract Input.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContractInput"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Created Contract"
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/contract/list": {
      "get": {
        "summary": "Get details of contracts.",
        "description": "Get details of one or more contracts.This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "supplierCode",
            "in": "query",
            "description": "Supplier Code",
            "type": "string"
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. If provide, then api only return contract modified after this day.",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed Contract Records.",
            "schema": {
              "$ref": "#/definitions/Contract"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/contract/items": {
      "post": {
        "summary": "Create Contract Items. Maximum 200 at a time.",
        "description": "Create Contract items for your business.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "contract item",
            "in": "body",
            "description": "Contract Item Information.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContractItemInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success response.",
            "schema": {
              "$ref": "#/definitions/ContractItemResult"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Not Found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/contractitem/list": {
      "get": {
        "summary": "Get details of contract items.",
        "description": "Get details of one or more contract items.This endpoint provides few records for each call, you will need to call this endpoint multiple times to fetch all records. In each call, the presence of `lastKey` attribute indicates that there are more records to be fetched. If there exists a `lastKey` make subsequent calls with this lastKey as a query parameter.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "contractCode",
            "in": "query",
            "description": "Contract Code",
            "type": "string"
          },
          {
            "name": "day",
            "in": "query",
            "description": "Date in YYYY-MM-DD. If provide, then api only return contract items modified after this day.",
            "type": "string"
          },
          {
            "name": "lastKey",
            "in": "query",
            "description": "Obtained from a previous indents page call. Provide this to fetch the next page of indent records",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed Contract Items Records.",
            "schema": {
              "$ref": "#/definitions/ContractItemsResponse"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    },
    "/inventory/grn": {
      "post": {
        "summary": "Save Goods Received Note",
        "description": "Save a GRN against an existing Purchase Order.",
        "tags": [
          "Inventory"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "grn",
            "in": "body",
            "description": "GRN Information",
            "required": true,
            "schema": {
              "$ref": "#/definitions/GRNInput"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "GRN created successfully.",
            "schema": {
              "$ref": "#/definitions/GoodsReceivedNote"
            }
          },
          "400": {
            "description": "Invalid input.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Unauthorized request.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Forbidden request, Licence expired or not allowed to access the resource.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Branch or Purchase Order does not exist.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Request already processed.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot process your request, please contact support.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Server error.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "security": [
          {
            "RistaAPIAuthorizer": []
          },
          {
            "api_key": []
          }
        ]
      }
    }
},
  "securityDefinitions": {
    "api_key": {
      "type": "apiKey",
      "name": "x-api-key",
      "in": "header",
      "description": "API Key for your account, as displayed in your account Access Menu > API"
    },
    "RistaAPIAuthorizer": {
      "type": "apiKey",
      "name": "x-api-token",
      "in": "header",
      "description": "A valid JWT token."
    }
  },
  "definitions": {
    "ResourceInfo": {
      "title": "Resource Info",
      "description": "Resources assigned to the customer.",
      "properties": {
        "resourceName": {
          "type": "string",
          "description": "Resource or table name"
        },
        "resourceGroupName": {
          "type": "string",
          "description": "Name of the resource group."
        }
      }
    },
    "Address": {
      "title": "Address",
      "description": "Address",
      "properties": {
        "addressLine": {
          "type": "string",
          "description": "Address line."
        },
        "city": {
          "type": "string",
          "description": "City."
        },
        "state": {
          "type": "string",
          "description": "State."
        },
        "country": {
          "type": "string",
          "description": "Country."
        },
        "zip": {
          "type": "string",
          "description": "Zip code"
        },
        "landmark": {
          "type": "string",
          "description": "Landmark."
        },
        "latitude": {
          "type": "number",
          "description": "Address latitiude."
        },
        "longitude": {
          "type": "number",
          "description": "Address Longitude."
        }
      }
    },
    "Branch": {
      "title": "Branch",
      "description": "Branch model",
      "type": "object",
      "required": [
        "branchName",
        "branchCode",
        "status"
      ],
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Name of the branch"
        },
        "branchCode": {
          "type": "string",
          "description": "Branch code"
        },
        "businessName": {
          "type": "string",
          "description": "Branch business name"
        },
        "status": {
          "type": "string",
          "enum": [
            "Active",
            "Inactive"
          ],
          "description": "Status of branch."
        },
        "address": {
          "type": "object",
          "description": "Branch address.",
          "$ref": "#/definitions/Address"
        },
        "channels": {
          "type": "array",
          "description": "Channels defined on the branch",
          "items": {
            "type": "object",
            "title": "BranchChannel",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of the channel"
              }
            }
          }
        },
        "taxArea" : {
          "type": "string",
          "description": "tax area attached to branch."
        },
        "pricebook" : {
          "type": "string",
          "description" : "Pricebook attached to the branch."
        },
        "branchLabels": {
          "type": "string",
          "description": "Branch labels in comma separated fashion"
        },
        "taxId": {
          "type": "string",
          "description": "Tax Identification Number attached to the branch."
        }
      }
    },
    "BranchTxn": {
      "title": "branchtxn",
      "description": "holds all settlement transactions of a branch or user",
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string"
        },
        "branchName": {
          "type": "string"
        },
        "updatedBy": {
          "type": "object",
          "description": "transaction audit details",
          "properties": {
            "date": {
              "type": "string",
              "description": "date in ISO format string"
            },
            "businessDay": {
              "type": "string",
              "description": "business day in YYYY-MM-DD format"
            },
            "userName": {
              "type": "object",
              "description": "userName populated from corresponding updatedBy user's settlement",
              "properties": {
                "firstName": {
                  "type": "string",
                  "description": "user's first name who updated this transaction"
                },
                "lastName": {
                  "type": "string",
                  "description": "user's last name who updated this transaction"
                }
              }
            }
          }
        },
        "transactionType": {
          "type": "string",
          "description": "type of transaction For e.g., Open Float, Float, Deposit, Close Deposit, Expense, Transfer Out, Transfer In"
        },
        "reason": {
          "type": "string",
          "description": "reason for this transaction entered by user"
        },
        "remarks": {
          "type": "string",
          "description": "remarks entered by user"
        },
        "mode": {
          "type": "string",
          "description": "Mode of transaction for e.g., Cash, Card, Voucher"
        },
        "amount": {
          "type": "number",
          "description": "transaction amount"
        },
        "receiveFrom": {
          "type": "string",
          "description": "name of user from which amount is received"
        },
        "transferredTo": {
          "type": "string",
          "description": "name of user to which amount is transferred"
        }
      }
    },
    "Store": {
      "title": "Store",
      "description": "Store model",
      "type": "object",
      "required": [
        "storeName",
        "storeCode",
        "businessName",
        "branchName",
        "label",
        "address"
      ],
      "properties": {
        "storeName": {
          "type": "string",
          "description": "Name of the store"
        },
        "storeCode": {
          "type": "string",
          "description": "Store code"
        },
        "businessName": {
          "type": "string",
          "description": "Store business name"
        },
        "status": {
          "type": "string",
          "description": "Store status."
        },
        "labels": {
          "type": "array",
          "description": "Labels defined on the store",
          "items": {
            "type": "string",
            "description": "Name of the label"
          }
        },
        "address": {
          "type": "object",
          "description": "Branch address.",
          "$ref": "#/definitions/Address"
        },
        "branchName": {
          "type": "string",
          "description": "Business Branch name"
        },
        "accountNames": {
          "type": "array",
          "description": "Account Names defined on the store",
          "items": {
            "type": "string",
            "description": "Name of the account"
          }
        },
        "fssaiCode": {
          "type": "string",
          "description": "FSSAI Code for store"
        }
      }
    },
    "Supplier": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SupplierData"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "SupplierItemsResponse": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SupplierItemsData"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "StoreItemsResponse": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/StoreItemsData"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "Resource": {
      "title": "Resource",
      "description": "Resource e.g., Table information",
      "type": "object",
      "required": [
        "resourceId",
        "name"
      ],
      "properties": {
        "resourceId": {
          "type": "string",
          "description": "Unique Id for this resource"
        },
        "name": {
          "type": "string",
          "description": "Resource name"
        },
        "capacity": {
          "type": "number",
          "description": "For e.g., Table capacity"
        },
        "resourceGroupName": {
          "type": "string",
          "description": "For e.g., First Floor, Lounge"
        }
      }
    },
    "SalesSummary": {
      "title": "SalesSummary",
      "description": "Sales summary model.",
      "type": "object",
      "properties": {
        "grossAmount": {
          "type": "number",
          "description": "Gross sales."
        },
        "returnAmount": {
          "type": "number",
          "description": "Sales return."
        },
        "discountTotal": {
          "type": "number",
          "description": "Discounts."
        },
        "directChargeTotal": {
          "type": "number",
          "description": "Total of charges that are marked as direct"
        },
        "netAmount": {
          "type": "number",
          "description": "Net Sales."
        },
        "chargeTotal": {
          "type": "number",
          "description": "Total of charges that are marked not as direct."
        },
        "taxTotal": {
          "type": "number",
          "description": "Taxes."
        },
        "roundOffTotal": {
          "type": "number",
          "description": "Rounding amount."
        },
        "tipTotal": {
          "type": "number",
          "description": "Tips."
        },
        "revenue": {
          "type": "number",
          "description": "Total revenue."
        },
        "paymentTotal": {
          "type": "number",
          "description": "Payments."
        },
        "balanceAmount": {
          "type": "number",
          "description": "Balance due."
        },
        "costOfGoodsSold": {
          "type": "number",
          "description": "Cost on goods sold."
        },
        "marginOnNetSales": {
          "type": "number",
          "description": "Margin on net sales."
        },
        "discounts": {
          "type": "array",
          "description": "Sales discount summary.",
          "items": {
            "type": "object",
            "title": "SalesSummaryDiscount",
            "properties": {
              "code": {
                "type": "string",
                "description": "Discount Code."
              },
              "amount": {
                "type": "number",
                "description": "Discount amount."
              }
            }
          }
        },
        "categories": {
          "type": "array",
          "description": "Sales category summary.",
          "items": {
            "type": "object",
            "title": "SalesSummaryCategory",
            "properties": {
              "name": {
                "type": "string",
                "description": "Category name."
              },
              "amount": {
                "type": "number",
                "description": "Category amount."
              }
            }
          }
        },
        "charges": {
          "type": "array",
          "description": "Sales charge summary.",
          "items": {
            "type": "object",
            "title": "SalesSummaryCharge",
            "properties": {
              "name": {
                "type": "string",
                "description": "Charge name."
              },
              "amount": {
                "type": "number",
                "description": "Charge amount."
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax amount on this charge."
              }
            }
          }
        },
        "taxes": {
          "type": "array",
          "description": "Sales tax summary.",
          "items": {
            "type": "object",
            "title": "SalesSummaryTax",
            "properties": {
              "name": {
                "type": "string",
                "description": "Tax name."
              },
              "amount": {
                "type": "number",
                "description": "Tax amount."
              }
            }
          }
        },
        "tips": {
          "type": "array",
          "description": "Sales tips summary.",
          "items": {
            "type": "object",
            "title": "SalesSummaryTip",
            "properties": {
              "user": {
                "type": "string",
                "description": "user name and id."
              },
              "amount": {
                "type": "number",
                "description": "Tip amount."
              }
            }
          }
        },
        "payments": {
          "type": "array",
          "description": "Sales payment summary.",
          "items": {
            "type": "object",
            "title": "SalesSummaryPayment",
            "properties": {
              "mode": {
                "type": "string",
                "description": "Mode of payment."
              },
              "amount": {
                "type": "number",
                "description": "Payment amount."
              }
            }
          }
        },
        "noOfSales": {
          "type": "number",
          "description": "Total number of sales."
        },
        "avgSaleAmount": {
          "type": "number",
          "description": "Average sale amount."
        },
        "noOfPeople": {
          "type": "number",
          "description": "Total number of people."
        },
        "avgSaleAmountPerPerson": {
          "type": "number",
          "description": "Average sale amount per person."
        },
        "asOfTime": {
          "type": "string",
          "description": "Sales summary information as of ISO date time in branch timezone."
        },
        "sessionSummary": {
          "type": "array",
          "description": "sale metrics per each session",
          "items": {
            "$ref": "#/definitions/SalesSummaryMetric"
          }
        },
        "channelSummary": {
          "type": "array",
          "description": "channel wise metrics",
          "items": {
            "$ref": "#/definitions/SalesSummaryMetric"
          }
        },
        "costs": {
          "type": "array",
          "description": "Costs",
          "items": {
            "type": "object",
            "title": "SalesSummaryCost",
            "properties": {
              "costType": {
                "description": "Type of cost.",
                "type": "string"
              },
              "amount": {
                "description": "cost",
                "type": "number"
              }
            }
          }
        },
        "items": {
          "type": "array",
          "description": "Item level summary for the day.",
          "items": {
            "$ref": "#/definitions/ItemLevelSummary"
          }
        },
        "accounts": {
          "type": "array",
          "description": "accounts summary",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of Account."
              },
              "amount": {
                "type": "number",
                "description": "total amount of sale for this account"
              }
            }
          }
        },
        "accountsWiseChannels": {
          "type": "array",
          "description": "accounts wise channel summary",
          "items": {
            "type": "object",
            "properties": {
              "account": {
                "type": "string",
                "description": "Name of Account."
              },
              "channel": {
                "type": "array",
                "description": "channel summary",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of channel."
                    },
                    "amount": {
                      "type": "number",
                      "description": "total amount of sale for this channel"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },

    "SalesCustomSummary": {
      "title": "SalesCustomSummary",
      "description": "Sales custom summary model.",
      "type": "object",
      "properties": {
        "data": {
          "type": "object",
          "description": "data",
          "properties": {
            "items": {
              "type": "array",
              "description": "Items Data.",
              "items": {
                "type": "object",
                "description": "Item",
                "properties": {
                  "canceled_after_dispatch": {
                    "type": "number",
                    "description": "Quantity of an item cancelled after dispatch "
                  },
                  "complimentary": {
                    "type": "number",
                    "description": "Non chargeabale item quantity"
                  },
                  "date": {
                    "type": "number",
                    "description": "Date"
                  },
                  "discount": {
                    "type": "number",
                    "description": "Total discount"
                  },
                  "item_code": {
                    "type": "string",
                    "description": "Sku code"
                  },
                  "item_name": {
                    "type": "string",
                    "description": "Item name"
                  },
                  "net_amount": {
                    "type": "number",
                    "description": "Net amount"
                  },
                  "non_complimentary": {
                    "type": "number",
                    "description": "Item quantity"
                  },
                  "outlet_name": {
                    "type": "string",
                    "description": "Branch name"
                  },
                  "quantity": {
                    "type": "number",
                    "description": "Item quantity"
                  },
                  "rate": {
                    "type": "number",
                    "description": "Rate of an item"
                  },
                  "sap_code": {
                    "type": "string",
                    "description": "Item tax code field value"
                  },
                  "tax_rate": {
                    "type": "number",
                    "description": "Item tax rate"
                  },
                  "total_amount": {
                    "type": "number",
                    "description": "Total amount of an item"
                  },
                  "total_tax": {
                    "type": "number",
                    "description": "Total tax on an item"
                  }
                }
              }
            },
            "orders": {
              "type": "object",
              "description": "orders data",
              "properties": {
                "total_discount": {
                  "type": "number",
                  "description": "total discount on order"
                },
                "round_off": {
                  "type": "number",
                  "description": "Total rounded off amount for an order"
                },
                "total": {
                  "type": "number",
                  "description": "Total amount on order"
                },
                "outlet_name": {
                  "type": "number",
                  "description": "Branch name"
                },
                "date": {
                  "type": "number",
                  "description": "Date"
                },
                "paymentMode": {
                  "type": "number",
                  "description": "Name of the payment mode with respective amount"
                }
              }
            }
          }
        }
      }
    },

    "Sale": {
      "title": "Sale",
      "description": "Sale model",
      "type": "object",
      "required": [
        "branchCode",
        "channel",
        "items"
      ],
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Name of the branch. If not provided, Rista will determine based on branchCode."
        },
        "branchCode": {
          "type": "string",
          "description": "Branch code"
        },
        "branchState": {
          "type": "string",
          "description": "Branch State"
        },
        "branchTIN": {
          "type": "string",
          "description": "Branch Tax Identification Number"
        },
        "invoiceNumber": {
          "type": "string",
          "description": "Unique identifier for a sale record, assigned by Rista"
        },
        "orderNumber": {
          "type": "string",
          "description": "Present in certain outlets where invoiceNumber is different from orderNumber. Assigned by Rista"
        },
        "statementNumber": {
          "type": "string",
          "description": "If this is a split invoice, statement number that this split is part of"
        },
        "splitInvoiceNumbers": {
          "type": "array",
          "description": "If this sale has splits, then gives all split invoice number",
          "items": {
            "type": "string"
          }
        },
        "invoiceDate": {
          "type": "string",
          "description": "Date of sale in ISO format with timezone (in branch timezone), assigned by Rista"
        },
        "invoiceDay": {
          "type": "string",
          "description": " Business Day this invoice accounted for in YYYY-MM-DD format"
        },
        "einvoiceInfo": {
          "title": "eInvoice Info",
          "type": "object",
          "description": "Information about sale EInvoice Info",
          "properties": {
            "irnNumber": {
              "type": "string",
              "description": "IRN number for sale"
            },
            "irnStatus": {
              "type": "string",
              "description": "IRN Status for order"
            }
          }
        },
        "createdDate": {
          "type": "string",
          "description": "Date of sale creation in ISO format with timezone (in branch timezone), assigned by Rista"
        },
        "modifiedDate": {
          "type": "string",
          "description": "Date of last sale modification in ISO format with timezone (in branch timezone), assigned by Rista"
        },
        "deviceLabel": {
          "type": "string",
          "description": "Device label of the device where the sale was completed."
        },
        "invoiceType": {
          "type": "string",
          "enum": [
            "Sale",
            "Return"
          ],
          "description": "Transaction type, Sale/Return. Only Sale supported for input."
        },
        "status": {
          "type": "string",
          "enum": [
            "Open",
            "Closed",
            "Cancelled",
            "Voided",
            "Merged"
          ],
          "description": "Status of sale. Only Open/Closed supported for input."
        },
        "fulfillmentStatus": {
          "type": "string",
          "enum": [
            "Confirmed",
            "Accepted",
            "Prepared",
            "Processed",
            "Dispatched",
            "Delivered"
          ],
          "description": "Fulfillment status of sale"
        },
        "sourceInfo": {
          "title": "SourceInfo",
          "type": "object",
          "description": "Information about sale record as in external source system.",
          "properties": {
            "companyName": {
              "type": "string",
              "description": "Name of the company."
            },
            "invoiceNumber": {
              "type": "string",
              "description": "Unique identifier as in source system."
            },
            "invoiceDate": {
              "type": "string",
              "description": "UTC Date of sale in ISO_8601 format(YYYY-MM-DDThh:mm:ssZ) e.g. 2014-01-01T13:01:00+00:00"
            },
            "callbackURL": {
              "type": "string",
              "description": "HTTP/HTTPS POST URL to receive order updates for Accepted/Rejected/Contact/Processed/Assigned/Dispatched/Delivered."
            },
            "callbackHeaders": {
              "type": "object",
              "description": "JSON object with headers needed for callback."
            },
            "source": {
              "type": "string",
              "description": "Source name e.g. api/callcenter/zomato"
            },
            "sourceOutletId": {
              "type": "string",
              "description": "Source provided outlet id"
            },
            "outletId": {
              "type": "string",
              "description": "Rista outlet id"
            },
            "isEditable": {
              "type": "boolean",
              "description": "If set to true, the order becomes editable in Rista. Use it only if the catalog is sourced from Rista"
            },
            "verifyCoupons": {
              "type": "boolean",
              "description": "If set to true, the coupon codes provided in discounts will be verified by Rista"
            },
            "isEcomOrder": {
              "type": "boolean",
              "description": "set as true in input, if the source is an ecommerce"
            }
          }
        },
        "dispatchOTP" :{
          "type": "string",
          "description": "dispatchOTP (Delivery order) details"
        },
        "originalSaleInfo": {
          "type": "object",
          "description": "Original sale info, present only if invoiceType=Return",
          "required": [
            "invoiceNumber"
          ],
          "properties": {
            "invoiceNumber": {
              "type": "string",
              "description": "Original invoice number"
            }
          }
        },
        "delivery": {
          "type": "object",
          "description": "Delivery information.",
          "properties": {
            "title": {
              "type": "string",
              "description": "Title of customer."
            },
            "advanceOrder":{
              "type":"boolean",
              "description":"Flag defining if order is advance in case of advance sale channel"
            },
            "name": {
              "type": "string",
              "description": "Name of customer."
            },
            "email": {
              "type": "string",
              "description": "Email address of customer."
            },
            "phoneNumber": {
              "type": "string",
              "description": "Phone number of customer."
            },
            "mode": {
              "type": "string",
              "enum": [
                "Pickup",
                "Delivery"
              ],
              "description": "Mode of delivery."
            },
            "address": {
              "type": "object",
              "description": "Delivery address.",
              "properties": {
                "label": {
                  "type": "string",
                  "description": "Address label."
                },
                "addressLine": {
                  "type": "string",
                  "description": "Address line."
                },
                "city": {
                  "type": "string",
                  "description": "City."
                },
                "state": {
                  "type": "string",
                  "description": "State."
                },
                "country": {
                  "type": "string",
                  "description": "Country."
                },
                "zip": {
                  "type": "string",
                  "description": "Zip code"
                },
                "landmark": {
                  "type": "string",
                  "description": "Landmark."
                },
                "latitude": {
                  "type": "number",
                  "description": "Geo latitude in decimal format"
                },
                "longitude": {
                  "type": "number",
                  "description": "Geo longitude in decimal format"
                }
              }
            },
            "deliveryDate": {
              "type": "string",
              "description": "Delivery date in ISO string format with timezone."
            }
          }
        },
        "deliveryBy": {
          "type": "object",
          "description": "Details of rider who delivered",
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of delivery person."
            },
            "email": {
              "type": "string",
              "description": "Email address of delivery person."
            },
            "phoneNumber": {
              "type": "string",
              "description": "Phone number of delivery person."
            }
          }
        },
        "label": {
          "type": "string",
          "description": "Service label e.g. Table 1."
        },
        "labelGroup": {
          "type": "string",
          "description": "Service label group e.g. Outdoor, First floor etc."
        },
        "sessionLabel": {
          "type": "string",
          "description": "Session label e.g. Morning"
        },
        "personCount": {
          "type": "number",
          "description": "PAX/group size/number of people"
        },
        "customer": {
          "type": "object",
          "description": "Customer attached to sale.",
          "properties": {
            "id": {
              "type": "string",
              "description": "Customer identifier."
            },
            "title": {
              "type": "string",
              "description": "Customer title."
            },
            "name": {
              "type": "string",
              "description": "Customer name."
            },
            "email": {
              "type": "string",
              "description": "Customer email."
            },
            "phoneNumber": {
              "type": "string",
              "description": "Customer phone number."
            },
            "taxId": {
              "type": "string",
              "description": "customer Tax Identification Number"
            }
          }
        },
        "saleBy": {
          "type": "string",
          "description": "Name of the user who performed this sale."
        },
        "saleByUserId": {
          "type": "string",
          "description": "User id of the user who performed this sale."
        },
        "channel": {
          "type": "string",
          "description": "Name of the price channel."
        },
        "channelLabel": {
          "type": "string",
          "description": "Label of the price channel."
        },
        "currency": {
          "type": "string",
          "description": "Currency code of sale. If not provided, Rista will determine based on business currency."
        },
        "itemCount": {
          "type": "number",
          "description": "Number of items in sale. If not provided, Rista will determine based on no. of items.",
          "minimum": 0
        },
        "items": {
          "type": "array",
          "description": "List of sale items",
          "items": {
            "title": "SaleItem",
            "type": "object",
            "properties": {
              "shortName": {
                "type": "string",
                "description": "Short name of the item."
              },
              "longName": {
                "type": "string",
                "description": "Long name of the item."
              },
              "variants": {
                "type": "string",
                "description": "Item variant information."
              },
              "skuCode": {
                "type": "string",
                "description": "Item SKU code."
              },
              "isCombo" : {
                "type": "boolean",
                "description": "Item isCombo value"
              },
              "barCode": {
                "type": "string",
                "description": "Item barcode."
              },
              "categoryName": {
                "type": "string",
                "description": "Category name tagged to item."
              },
              "subCategoryName": {
                "type": "string",
                "description": "Sub Category name."
              },
              "brandName": {
                "type": "string",
                "description": "Brand name. e.g. manufacturer brand name."
              },
              "taxCode": {
                "type": "string",
                "description": "HSN code for the sale item"
              },
              "accountName": {
                "type": "string",
                "description": "The account this sale item belongs to For e.g., Food/Liquor"
              },
              "itemNature": {
                "type": "string",
                "description": "Nature of item",
                "enum": [
                  "Goods",
                  "Service"
                ]
              },
              "quantity": {
                "type": "number",
                "description": "Item quantity."
              },
              "unitPrice": {
                "type": "number",
                "description": "Item unit price."
              },
              "overridden": {
                "type": "boolean",
                "description": "Applicable for table orders. If true, retains the unitPrice given in input to API."
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item measuring unit."
              },
              "itemAmount": {
                "type": "number",
                "description": "Item amount = (quantity * unitPrice)"
              },
              "optionAmount": {
                "type": "number",
                "description": "option amount = sum of (options.amount). If exists, provide options list."
              },
              "discountAmount": {
                "type": "number",
                "description": "discount amount applied at item level = sum(discounts.amount). If exists, value should be less than zero and provide discounts list."
              },
              "factoredDiscountAmount": {
                "type": "number",
                "description": "discount applied at bill level (sale.discountAmount) that is allocated to this item."
              },
              "itemTotalAmount": {
                "type": "number",
                "description": "Item Total after considering options and discounts = (itemAmount + optionAmount + discountAmount)"
              },
              "grossAmount": {
                "type": "number",
                "description": "itemTotalAmount before discounts and taxes. Computed backwards if unitPrice includes tax"
              },
              "baseGrossAmount": {
                "type": "number",
                "description": "grossAmount allocated to base item (without considering options). For reporting"
              },
              "netDiscountAmount": {
                "type": "number",
                "description": "(discountAmount + factoredDiscountAmount) computed before tax. Computed backwards if unitPrice included tax"
              },
              "baseNetDiscountAmount": {
                "type": "number",
                "description": "netDiscountAmount allocated to base item (without considering options.type = Add On). For reporting"
              },
              "netAmount": {
                "type": "number",
                "description": "Item Amount before taxes, but after discounts = (grossAmount + netDiscountAmount)"
              },
              "baseNetAmount": {
                "type": "number",
                "description": "netAmount allocated to base item (without considering options). For reporting"
              },
              "taxAmountIncluded": {
                "type": "number",
                "description": "tax on the item, present if unitPrice includes tax = sum(taxes.amountIncluded). If exists, provide taxes list."
              },
              "taxAmountExcluded": {
                "type": "number",
                "description": "tax on the item, present if unitPrice excludes tax = sum(taxes.amountExcluded). If exists, provide taxes list."
              },
              "taxAmount": {
                "type": "number",
                "description": "Total tax on this item = (taxAmountIncluded + taxAmountExcluded)"
              },
              "baseTaxAmount": {
                "type": "number",
                "description": "taxAmount allocated to base item (without considering options). For reporting"
              },
              "itemCost": {
                "type": "number",
                "description": "Total cost for this item"
              },
              "itemMaterialCost": {
                "type": "number",
                "description": "Material cost for that item (Including Options)"
              },
              "itemSuppliesCost": {
                "type": "number",
                "description": "Material cost for that item (Including Options)"
              },
              "note": {
                "type": "string",
                "description": "Item notes/comments. Maximum 250 characters.",
                "maxLength": 250
              },
              "createdBy": {
                "type": "string",
                "description": "Name of the user who added this item. If present, createdTime also should be present"
              },
              "createdTime": {
                "type": "string",
                "description": "time of item addition in ISO format with timezone (in branch timezone). If present, createdBy also should be present"
              },
              "options": {
                "type": "array",
                "description": "Item options",
                "items": {
                  "title": "SaleItemOption",
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "Option",
                        "Add On"
                      ],
                      "description": "type of option"
                    },
                    "name": {
                      "type": "string",
                      "description": "Item option name for display."
                    },
                    "itemName": {
                      "type": "string",
                      "description": "Item option name"
                    },
                    "variants": {
                      "type": "string",
                      "description": "Option variants"
                    },
                    "optionId": {
                      "type": "string",
                      "description": "Required in input for resource orders from API"
                    },
                    "skuCode": {
                      "type": "string",
                      "description": "Item option SKU Code."
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Item option quantity."
                    },
                    "unitPrice": {
                      "type": "number",
                      "description": "Item option unit price."
                    },
                    "amount": {
                      "type": "number",
                      "description": "Item option amount = (quantity * unitPrice)"
                    },
                    "grossAmount": {
                      "type": "number",
                      "description": "item.grossAmount allocated to this option. For reporting"
                    },
                    "netDiscountAmount": {
                      "type": "number",
                      "description": "item.netDiscountAmount allocated to this option. For reporting"
                    },
                    "netAmount": {
                      "type": "number",
                      "description": "item.netAmount allocated to this option. For reporting"
                    },
                    "taxAmount": {
                      "type": "number",
                      "description": "item.taxAmount allocated to this option. For reporting"
                    },
                    "categoryName": {
                      "type": "string",
                      "description": "Category name."
                    },
                    "addOnType" : {
                      "type": "string",
                      "description": "optionType value (Upsell | Recipe)"
                    },
                    "subCategoryName": {
                      "type": "string",
                      "description": "Sub Category name."
                    },
                    "brandName": {
                      "type": "string",
                      "description": "Brand name. e.g. manufacturer brand name."
                    },
                    "taxCode": {
                      "type": "string",
                      "description": "HSN code for the sale item option"
                    },
                    "accountName": {
                      "type": "string",
                      "description": "The account this option belongs to For e.g., Food/Liquor"
                    },
                    "taxes": {
                      "type": "array",
                      "description": "Taxes at option level.",
                      "items": {
                        "title": "SaleItemTax",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Name of tax. For e.g., CGST/SGST"
                          },
                          "percentage": {
                            "type": "number",
                            "description": "Tax percentage."
                          },
                          "saleAmount": {
                            "type": "number",
                            "description": "amount on which tax is applied."
                          },
                          "amountIncluded": {
                            "type": "number",
                            "description": "this tax amount, present if unitPrice includes tax. (amountIncluded or amountExcluded or both is required)"
                          },
                          "amountExcluded": {
                            "type": "number",
                            "description": "this tax amount, present if unitPrice excludes tax. (amountIncluded or amountExcluded or both is required)"
                          },
                          "amount": {
                            "type": "number",
                            "description": "amount = (amountIncluded + amountExcluded)"
                          }
                        },
                        "required": [
                          "name",
                          "percentage"
                        ]
                      }
                    },
                    "aggregatorTaxes": {
                      "type": "array",
                      "description": "Aggregator taxes at item option level.",
                      "items": {
                        "title": "AggeregatorItemOptionTax",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Name of tax. For e.g., CGST/SGST"
                          },
                          "percentage": {
                            "type": "number",
                            "description": "Tax percentage."
                          },
                          "saleAmount": {
                            "type": "number",
                            "description": "amount on which tax is applied."
                          },
                          "amountIncluded": {
                            "type": "number",
                            "description": "this tax amount, present if unitPrice includes tax. (amountIncluded or amountExcluded or both is required)"
                          },
                          "amountExcluded": {
                            "type": "number",
                            "description": "this tax amount, present if unitPrice excludes tax. (amountIncluded or amountExcluded or both is required)"
                          },
                          "amount": {
                            "type": "number",
                            "description": "amount = (amountIncluded + amountExcluded)"
                          }
                        },
                        "required": [
                          "name",
                          "percentage"
                        ]
                      }
                    },
                    "aggregatorTaxTotal": {
                      "type": "number",
                      "description": "aggregator tax total"
                    }
                  },
                  "required": [
                    "name",
                    "skuCode",
                    "quantity",
                    "unitPrice"
                  ]
                }
              },
              "discounts": {
                "type": "array",
                "description": "Discounts at item level.",
                "items": {
                  "title": "SaleItemDiscount",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of Discount."
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "Absolute",
                        "Percentage"
                      ],
                      "description": "Type of discount."
                    },
                    "rate": {
                      "type": "number",
                      "description": "Rate of discount, absolute value or percentage."
                    },
                    "saleAmount": {
                      "type": "number",
                      "description": "Amount on which discount is applied."
                    },
                    "amount": {
                      "type": "number",
                      "description": "Discount amount. For Sale this value is -ve and for Return this value is +ve"
                    },
                    "loyaltyPoints": {
                      "type": "number",
                      "description": "Loyalty Ponts Redeemed for this Discount"
                    },
                    "coupon": {
                      "type": "string",
                      "description": "Coupon Code, if this discount is applied using coupon"
                    },
                    "couponProvider": {
                      "type": "string",
                      "description": "Provider of the coupon"
                    },
                    "campaignName": {
                      "type": "string",
                      "description": "campaign name"
                    },
                    "reason": {
                      "type": "string",
                      "description": "Reason for discount"
                    },
                    "appliedBy": {
                      "type": "string",
                      "description": "Name of the user who applied this discount"
                    }
                  },
                  "required": [
                    "name",
                    "type",
                    "rate",
                    "amount"
                  ]
                }
              },
              "taxes": {
                "type": "array",
                "description": "Taxes at item level.",
                "items": {
                  "title": "SaleItemTax",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of tax. For e.g., CGST/SGST"
                    },
                    "percentage": {
                      "type": "number",
                      "description": "Tax percentage."
                    },
                    "saleAmount": {
                      "type": "number",
                      "description": "amount on which tax is applied."
                    },
                    "amountIncluded": {
                      "type": "number",
                      "description": "this tax amount, present if unitPrice includes tax. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amountExcluded": {
                      "type": "number",
                      "description": "this tax amount, present if unitPrice excludes tax. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amount": {
                      "type": "number",
                      "description": "amount = (amountIncluded + amountExcluded)"
                    }
                  },
                  "required": [
                    "name",
                    "percentage"
                  ]
                }
              },
              "aggregatorTaxes": {
                "type": "array",
                "description": "Taxes at item level.",
                "items": {
                  "title": "AggregatorItemTax",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of tax. For e.g., CGST/SGST"
                    },
                    "percentage": {
                      "type": "number",
                      "description": "Tax percentage."
                    },
                    "saleAmount": {
                      "type": "number",
                      "description": "amount on which tax is applied."
                    },
                    "amountIncluded": {
                      "type": "number",
                      "description": "this tax amount, present if unitPrice includes tax. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amountExcluded": {
                      "type": "number",
                      "description": "this tax amount, present if unitPrice excludes tax. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amount": {
                      "type": "number",
                      "description": "amount = (amountIncluded + amountExcluded)"
                    }
                  },
                  "required": [
                    "name",
                    "percentage"
                  ]
                }
              },
              "aggregatorTaxTotal": {
                "type": "number",
                "description": "aggregator tax total"
              },
              "itemLog": {
                "description": "History of changes to the item quantity, if any",
                "type": "array",
                "items": {
                  "description": "Details of each instance of change",
                  "type": "object",
                  "required": [
                    "reason",
                    "updatedBy",
                    "updatedTime",
                    "modifications"
                  ],
                  "properties": {
                    "reason": {
                      "type": "string",
                      "description": "reason for change"
                    },
                    "remarks": {
                      "type": "string",
                      "description": "Remarks for change"
                    },
                    "updatedBy": {
                      "type": "string",
                      "description": "Name of the user who made change"
                    },
                    "updatedTime": {
                      "type": "string",
                      "description": "time of change in ISO format with timezone (in branch timezone)"
                    },
                    "modifications": {
                      "type": "array",
                      "description": "List of changes made",
                      "items": {
                        "type": "object",
                        "required": [
                          "note"
                        ],
                        "properties": {
                          "note": {
                            "type": "string",
                            "description": "Description of change for e.g., Quantity changed from 2 to 1"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "eventLog": {
                "type": "array",
                "description": "Event/Activity Log",
                "items": {
                  "properties": {
                    "status": {
                      "type": "string",
                      "description": "Event status.",
                      "enum": [
                        "Processed",
                        "Deleted"
                      ]
                    },
                    "note": {
                      "type": "string",
                      "description": "Event note."
                    },
                    "eventByUserName": {
                      "type": "string",
                      "description": "Event by user name."
                    },
                    "eventDate": {
                      "type": "string",
                      "description": "Event date time in ISO 8601 format."
                    }
                  },
                  "required": [
                    "status",
                    "eventByUserName",
                    "eventDate"
                  ]
                }
              },
              "batches": {
                "description": "Batch details of line item, if any",
                "type": "array",
                "items": {
                  "description": "Details of each instance of batch",
                  "type": "object",
                  "required": [
                    "batchNumber",
                    "expiryDate",
                    "quantity"
                  ],
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "supplier batch number"
                    }
                  }
                }
              },
              "kotNumber": {
                "type": "string",
                "description": "Item KOT number."
              },
              "kotGroup": {
                "type": "string",
                "description": "Item KOT Group."
              },
              "kotTimestamp": {
                "type": "string",
                "description": "Item KOT generation timestamp"
              },
              "kotStatus": {
                "type": "string",
                "description": "Item KOT status."
              },
              "kdsReady": {
                "type" : "string",
                "description": "Timestamp when the item marked Ready on KDS"
              }
            },
            "required": [
              "shortName",
              "quantity",
              "skuCode",
              "unitPrice"
            ]
          }
        },
        "kdsOrderInProcess": {
          "type": "string",
          "description": "Timestamp when the order is marked In Process on KDS i.e. First timestamp when any of the ticket marked In Process on KDS"
        },
        "orderReadyTimestamp": {
          "type": "string",
          "description": "Timestamp when the complete order is marked processed on KDS i.e. all tickets of that item marked processed."
        },
        "itemTotalAmount": {
          "type": "number",
          "description": "= sum(items.itemTotalAmount)"
        },
        "directChargeAmount": {
          "type": "number",
          "description": "Total charge amount = sum(charges.amount) for charges marked as Direct. If exists, provide charges list."
        },
        "chargeAmount": {
          "type": "number",
          "description": "Total charge amount = sum(charges.amount) for charges not marked as Direct. If exists, provide charges list."
        },
        "discountAmount": {
          "type": "number",
          "description": "Total discount amount applied at sale level = sum(discounts.amount). If exists, value should less than zero and provide discounts list."
        },
        "itemDiscountAmount": {
          "type": "number",
          "description": "sum of discounts applied at item level. Sum(item.discountAmount)"
        },
        "totalDiscountAmount": {
          "type": "number",
          "description": "total discount = (discountAmount + itemDiscountAmount)"
        },
        "taxAmountIncluded": {
          "type": "number",
          "description": "total of item taxes and charge taxes included in price =sum(items.taxAmountIncluded) + sum(charges.taxAmountIncluded). If exists, provide taxes list."
        },
        "taxAmountExcluded": {
          "type": "number",
          "description": "total of item, charge taxes excluded in price = sum(items.taxAmountExcluded) + sum(charges.taxAmountExcluded). If exists, provide taxes list."
        },
        "taxAmount": {
          "type": "number",
          "description": "Total tax amount = (taxAmountIncluded + taxAmountExcluded). If exists, provide taxes list."
        },
        "grossAmount": {
          "type": "number",
          "description": "Bill Amount before discounts, charges and taxes = sum(items.grossAmount)"
        },
        "netDiscountAmount": {
          "type": "number",
          "description": "totalDiscountAmount before taxes = sum(items.netDiscountAmount)."
        },
        "netDirectChargeAmount": {
          "type": "number",
          "description": "Total charge amount before tax on charge for those marked as Direct charge = sum(charges.amount - charges.taxAmountIncluded)"
        },
        "netAmount": {
          "type": "number",
          "description": "Bill Amount before taxes and charges, but after discounts = sum(items.netAmount) and same as (grossAmount + netDiscountAmount)"
        },
        "netChargeAmount": {
          "type": "number",
          "description": "Total charge amount before tax on charge for those not marked as Direct charge = sum(charges.amount - charges.taxAmountIncluded)"
        },
        "billAmount": {
          "type": "number",
          "description": "total bill amount = (itemTotalAmount + discountAmount + chargeAmount + taxAmountExcluded) and is same as = (netAmount + netChargeAmount + taxAmount)"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "Round off amount."
        },
        "billRoundedAmount": {
          "type": "number",
          "description": "billAmount + roundOffAmount"
        },
        "tipAmount": {
          "type": "number",
          "description": "Tip amount."
        },
        "totalAmount": {
          "type": "number",
          "description": "Total amount to be collected. billRoundedAmount + tipAmount"
        },
        "totalCost": {
          "type": "number",
          "description": "Total Cost of All Sale Items"
        },
        "totalMaterialCost": {
          "type": "number",
          "description": "Total of all item material costs in that bill (Including Options)"
        },
        "totalSuppliesCost": {
          "type": "number",
          "description": "Total of all item supplies costs in that bill (Including Options)"
        },
        "note": {
          "type": "string",
          "description": "Sale notes/comments. Maximum 250 characters.",
          "maxLength": 250
        },
        "charges": {
          "type": "array",
          "description": "Charges applied.",
          "items": {
            "title": "SaleCharge",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of Charge."
              },
              "type": {
                "type": "string",
                "enum": [
                  "Absolute",
                  "Percentage"
                ],
                "description": "Type of charge."
              },
              "rate": {
                "type": "number",
                "description": "Rate of charge, absolute value or percentage."
              },
              "saleAmount": {
                "type": "number",
                "description": "amount on which charge is applied."
              },
              "amount": {
                "type": "number",
                "description": "Charge amount."
              },
              "taxAmountIncluded": {
                "type": "number",
                "description": "tax amount included in rate. If exists, provide taxes list."
              },
              "taxAmountExcluded": {
                "type": "number",
                "description": "tax amount excluded in rate. If exists, provide taxes list."
              },
              "taxAmount": {
                "type": "number",
                "description": "Total tax on this charge. = (taxAmountIncluded + taxAmountExcluded)"
              },
              "isDirectCharge": {
                "type": "boolean",
                "description": "Indicates if the charge is a Direct charge, this charge amount is included in sale.netSales"
              },
              "taxes": {
                "type": "array",
                "description": "Taxes for the charge.",
                "items": {
                  "type": "object",
                  "title": "ChargeTax",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of tax."
                    },
                    "percentage": {
                      "type": "number",
                      "description": "Tax percentage."
                    },
                    "saleAmount": {
                      "type": "number",
                      "description": "amount on which tax is applied."
                    },
                    "amountIncluded": {
                      "type": "number",
                      "description": "Tax amount included in charge. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amountExcluded": {
                      "type": "number",
                      "description": "Tax amount excluded in charge. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amount": {
                      "type": "number",
                      "description": "amountIncluded + amountExcluded"
                    }
                  },
                  "required": [
                    "name",
                    "percentage",
                    "amount"
                  ]
                }
              },
              "aggregatorTaxes": {
                "type": "array",
                "description": "Taxes for the charge.",
                "items": {
                  "type": "object",
                  "title": "AggregatorChargeTax",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of tax."
                    },
                    "percentage": {
                      "type": "number",
                      "description": "Tax percentage."
                    },
                    "saleAmount": {
                      "type": "number",
                      "description": "amount on which tax is applied."
                    },
                    "amountIncluded": {
                      "type": "number",
                      "description": "Tax amount included in charge. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amountExcluded": {
                      "type": "number",
                      "description": "Tax amount excluded in charge. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amount": {
                      "type": "number",
                      "description": "amountIncluded + amountExcluded"
                    }
                  },
                  "required": [
                    "name",
                    "percentage",
                    "amount"
                  ]
                }
              },
              "aggregatorTaxTotal": {
                "type": "number",
                "description": "aggregator tax total"
              }
            },
            "required": [
              "name",
              "type",
              "rate",
              "amount"
            ]
          }
        },
        "discounts": {
          "type": "array",
          "description": "Discounts applied directly at bill level.",
          "items": {
            "title": "SaleDiscount",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of Discount."
              },
              "type": {
                "type": "string",
                "enum": [
                  "Absolute",
                  "Percentage"
                ],
                "description": "Type of discount."
              },
              "rate": {
                "type": "number",
                "description": "Rate of discount, absolute value or percentage."
              },
              "saleAmount": {
                "type": "number",
                "description": "amount on which discount is applied."
              },
              "amount": {
                "type": "number",
                "description": "Discount amount. For Sale this value is -ve and for Return this value is +ve"
              },
              "loyaltyPoints": {
                "type": "number",
                "description": "Loyalty Ponts Redeemed for this Discount"
              },
              "coupon": {
                "type": "string",
                "description": "Coupon Code, if this discount is applied using coupon"
              },
              "couponProvider": {
                "type": "string",
                "description": "Provider of the coupon"
              },
              "campaignName": {
                "type": "string",
                "description": "campaign name"
              },
              "reason": {
                "type": "string",
                "description": "Reason for discount"
              },
              "appliedBy": {
                "type": "string",
                "description": "Name of the user who applied this discount"
              }
            },
            "required": [
              "name",
              "type",
              "rate",
              "amount"
            ]
          }
        },
        "taxes": {
          "type": "array",
          "description": "Summary of taxes applied for items and charges.",
          "items": {
            "title": "SaleTax",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of tax."
              },
              "percentage": {
                "type": "number",
                "description": "Tax percentage."
              },
              "saleAmount": {
                "type": "number",
                "description": "amount on which tax is applied."
              },
              "itemTaxIncluded": {
                "type": "number",
                "description": "tax amount included in item unitPrice"
              },
              "itemTaxExcluded": {
                "type": "number",
                "description": "tax amount excluded in item unitPrice"
              },
              "chargeTaxIncluded": {
                "type": "number",
                "description": "tax amount included in charge rate"
              },
              "chargeTaxExcluded": {
                "type": "number",
                "description": "tax amount excluded in charge rate"
              },
              "amountIncluded": {
                "type": "number",
                "description": "= (itemTaxIncluded + chargeTaxIncluded). (amountIncluded or amountExcluded or both is required)"
              },
              "amountExcluded": {
                "type": "number",
                "description": "= (itemTaxExcluded + chargeTaxExcluded). (amountIncluded or amountExcluded or both is required)"
              },
              "amount": {
                "type": "number",
                "description": " = (amountIncluded + amountExcluded)"
              }
            },
            "required": [
              "name",
              "percentage"
            ]
          }
        },
        "aggregatorTaxes": {
          "type": "array",
          "description": "Aggregator Taxes at order level.",
          "items": {
            "title": "AggregatorOrderTax",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of tax. For e.g., CGST/SGST"
              },
              "percentage": {
                "type": "number",
                "description": "Tax percentage."
              },
              "saleAmount": {
                "type": "number",
                "description": "amount on which tax is applied."
              },
              "amountIncluded": {
                "type": "number",
                "description": "this tax amount, present if unitPrice includes tax. (amountIncluded or amountExcluded or both is required)"
              },
              "amountExcluded": {
                "type": "number",
                "description": "this tax amount, present if unitPrice excludes tax. (amountIncluded or amountExcluded or both is required)"
              },
              "amount": {
                "type": "number",
                "description": "amount = (amountIncluded + amountExcluded)"
              }
            },
            "required": [
              "name",
              "percentage"
            ]
          }
        },
        "aggregatorTaxTotal": {
          "type": "number",
          "description": "Order level aggregator tax total"
        },
        "billAggregatorTaxes": {
          "type": "array",
          "description": "Summary of aggregator tax applied for items and charges",
          "items": {
            "title": "AggregatorTax",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of tax."
              },
              "percentage": {
                "type": "number",
                "description": "Tax percentage."
              },
              "saleAmount": {
                "type": "number",
                "description": "amount on which tax is applied."
              },
              "amountIncluded": {
                "type": "number",
                "description": "= (itemTaxIncluded + chargeTaxIncluded). (amountIncluded or amountExcluded or both is required)"
              },
              "amountExcluded": {
                "type": "number",
                "description": "= (itemTaxExcluded + chargeTaxExcluded). (amountIncluded or amountExcluded or both is required)"
              },
              "amount": {
                "type": "number",
                "description": " = (amountIncluded + amountExcluded)"
              }
            },
            "required": [
              "name",
              "percentage"
            ]
          }
        },
        "billAggregatorTaxAmount": {
          "type": "number",
          "description": "Total amount to be collected by aggregator"
        },
        "payments": {
          "type": "array",
          "description": "Payments for the sale.",
          "items": {
            "title": "SalePayment",
            "required": [
              "mode",
              "amount"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "description": "Mode of payment e.g. Cash, Credit, Debit, Coupon"
              },
              "subMode": {
                "type": "string",
                "description": "Aquirer bank, only present in case of pinelab payments"
              },
              "amount": {
                "type": "number",
                "description": "Payment amount."
              },
              "reference": {
                "type": "string",
                "description": "Payment reference e.g. last 4 digits of card."
              },
              "note": {
                "type": "string",
                "description": "Payment notes"
              },
              "postedDate": {
                "type": "string",
                "description": "Payment posted date in ISO format with timezone (in branch timezone)."
              }
            }
          }
        },
        "overallRefunds":{
          "type": "array",
          "description": "Overall refunds for the sale.",
          "items": {
            "title": "SaleRefund",
            "required": [
              "mode",
              "refundAmount",
              "paymentId"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "description": "Mode of refund e.g. Cash, Credit, Debit, Coupon"
              },
              "refundAmount": {
                "type": "number",
                "description": "Refund amount."
              },
              "paymentId": {
                "type": "string",
                "description": "refund reference id"
              },
              "returnToCustomer": {
                "type": "boolean",
                "description": "If directly returned to customer using branch payment method."
              },
              "creditToCustomerPrepaidBalance": {
                "type": "boolean",
                "description": "If refund is made to Rista Customer Wallet."
              }
            }
          }
        },
        "loyalties": {
          "type": "array",
          "description": "Loyalty Redeemed/Earned for this sale.",
          "items": {
            "properties": {
              "type": {
                "type": "string",
                "description": "There may be multiple entries with same type",
                "enum": [
                  "Earned",
                  "Redeemed"
                ]
              },
              "points": {
                "type": "number",
                "description": "# of points adjusted."
              },
              "remarks": {
                "type": "string",
                "description": "remarks"
              }
            }
          }
        },
        "url": {
          "type": "string",
          "description": "Rista sale url"
        },
        "statusInfo": {
          "type": "object",
          "description": "Information about current status if Cancelled/Voided",
          "properties": {
            "reason": {
              "type": "string",
              "description": "Reason"
            },
            "remarks": {
              "type": "string",
              "description": "Any remarks entered in addition to reason"
            }
          }
        },
        "eventLog": {
          "type": "array",
          "description": "Event/Activity Log",
          "items": {
            "properties": {
              "status": {
                "type": "string",
                "description": "Event status.",
                "enum": [
                  "Created",
                  "Confirmed",
                  "Accepted",
                  "Processed",
                  "RiderAssigned",
                  "RiderArrived",
                  "Dispatched",
                  "Delivered",
                  "Closed",
                  "Cancelled",
                  "Voided",
                  "PaxCountUpdated"
                ]
              },
              "note": {
                "type": "string",
                "description": "Event note."
              },
              "eventByUserName": {
                "type": "string",
                "description": "Event by user name."
              },
              "eventDate": {
                "type": "string",
                "description": "Event date time in ISO 8601 format."
              }
            },
            "required": [
              "status",
              "eventByUserName",
              "eventDate"
            ]
          }
        },
        "tags": {
          "type": "array",
          "description": "Tags attached to sale, includes aggregator tagged information.",
          "items": {
            "type": "string"
          }
        },
        "resourceInfo": {
          "type": "object",
          "description": "The resource i.e., Table the order belongs to",
          "required": [
            "resourceId",
            "resourceName"
          ],
          "properties": {
            "resourceId": {
              "type": "string",
              "description": "unique id for the resource"
            },
            "resourceName": {
              "type": "string",
              "description": "Resource Name"
            },
            "groupSize": {
              "type": "number",
              "description": "# of people (pax) for the order"
            },
            "resourceGroupName": {
              "type": "string",
              "description": "The group the resource belongs to"
            }
          }
        },
        "accountingRoundOff": {
          "type": "number",
          "description": "Value of round off error cause due to inclusiveTax, order level discount projection to net price, etc"
        }
      }
    },
    "PostSale": {
      "title": "Sale",
      "description": "Post Sale model",
      "type": "object",
      "required": [
        "branchCode",
        "channel",
        "items"
      ],
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Branch code"
        },
        "status": {
          "type": "string",
          "enum": [
            "Open",
            "Closed"
          ],
          "description": "Status of sale. Only Open/Closed supported for input."
        },
        "sourceInfo": {
          "title": "SourceInfo",
          "type": "object",
          "description": "Information about sale record as in external source system.",
          "properties": {
            "companyName": {
              "type": "string",
              "description": "Name of the company."
            },
            "invoiceNumber": {
              "type": "string",
              "description": "Unique identifier as in source system."
            },
            "orderTransactionId": {
              "type": "string",
              "description": "Unique identifier as in source while initiating order. e.g. for Dotpe it will contain cart ID. Required for flows before sale closing."
            },
            "invoiceDate": {
              "type": "string",
              "description": "UTC Date of sale in ISO_8601 format(YYYY-MM-DDThh:mm:ssZ) e.g. 2014-01-01T13:01:00+00:00"
            },
            "callbackURL": {
              "type": "string",
              "description": "HTTP/HTTPS POST URL to receive order updates for Accepted/Rejected/Contact/Processed/Assigned/Dispatched/Delivered."
            },
            "callbackHeaders": {
              "type": "object",
              "description": "JSON object with headers needed for callback."
            },
            "source": {
              "type": "string",
              "description": "Source name e.g. api/callcenter/zomato"
            },
            "sourceOutletId": {
              "type": "string",
              "description": "Source provided outlet id"
            },
            "outletId": {
              "type": "string",
              "description": "Rista outlet id"
            },
            "isEditable": {
              "type": "boolean",
              "description": "If set to true, the order becomes editable in Rista. Use it only if the catalog is sourced from Rista"
            },
            "verifyCoupons": {
              "type": "boolean",
              "description": "If set to true, the coupon codes provided in discounts will be verified by Rista"
            },
            "isEcomOrder": {
              "type": "boolean",
              "description": "set as true in input, if the source is an ecommerce"
            }
          }
        },
        "delivery": {
          "type": "object",
          "description": "Delivery information.",
          "properties": {
            "title": {
              "type": "string",
              "description": "Title of customer."
            },
            "advanceOrder": {
              "type": "boolean",
              "description": "Flag defining if order is advance in case of advance sale channel"
            },
            "name": {
              "type": "string",
              "description": "Name of customer."
            },
            "email": {
              "type": "string",
              "description": "Email address of customer."
            },
            "phoneNumber": {
              "type": "string",
              "description": "Phone number of customer."
            },
            "mode": {
              "type": "string",
              "enum": [
                "Pickup",
                "Delivery"
              ],
              "description": "Mode of delivery."
            },
            "address": {
              "type": "object",
              "description": "Delivery address.",
              "properties": {
                "label": {
                  "type": "string",
                  "description": "Address label."
                },
                "addressLine": {
                  "type": "string",
                  "description": "Address line."
                },
                "city": {
                  "type": "string",
                  "description": "City."
                },
                "state": {
                  "type": "string",
                  "description": "State."
                },
                "country": {
                  "type": "string",
                  "description": "Country."
                },
                "zip": {
                  "type": "string",
                  "description": "Zip code"
                },
                "landmark": {
                  "type": "string",
                  "description": "Landmark."
                },
                "latitude": {
                  "type": "number",
                  "description": "Geo latitude in decimal format"
                },
                "longitude": {
                  "type": "number",
                  "description": "Geo longitude in decimal format"
                }
              }
            },
            "deliveryDate": {
              "type": "string",
              "description": "Delivery date in ISO string format with timezone."
            }
          }
        },
        "deliveryBy": {
          "type": "object",
          "description": "Details of rider who delivered",
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of delivery person."
            },
            "email": {
              "type": "string",
              "description": "Email address of delivery person."
            },
            "phoneNumber": {
              "type": "string",
              "description": "Phone number of delivery person."
            }
          }
        },
        "label": {
          "type": "string",
          "description": "Service label e.g. Table 1."
        },
        "personCount": {
          "type": "number",
          "description": "PAX/group size/number of people"
        },
        "customer": {
          "type": "object",
          "description": "Customer attached to sale.",
          "properties": {
            "id": {
              "type": "string",
              "description": "Customer identifier."
            },
            "title": {
              "type": "string",
              "description": "Customer title."
            },
            "name": {
              "type": "string",
              "description": "Customer name."
            },
            "email": {
              "type": "string",
              "description": "Customer email."
            },
            "phoneNumber": {
              "type": "string",
              "description": "Customer phone number."
            }
          }
        },
        "channel": {
          "type": "string",
          "description": "Name of the price channel."
        },
        "items": {
          "type": "array",
          "description": "List of sale items",
          "items": {
            "title": "SaleItem",
            "type": "object",
            "properties": {
              "shortName": {
                "type": "string",
                "description": "Short name of the item."
              },
              "longName": {
                "type": "string",
                "description": "Long name of the item."
              },
              "variants": {
                "type": "string",
                "description": "Item variant information."
              },
              "skuCode": {
                "type": "string",
                "description": "Item SKU code."
              },
              "barCode": {
                "type": "string",
                "description": "Item barcode."
              },
              "itemNature": {
                "type": "string",
                "description": "Nature of item",
                "enum": [
                  "Goods",
                  "Service"
                ]
              },
              "quantity": {
                "type": "number",
                "description": "Item quantity."
              },
              "unitPrice": {
                "type": "number",
                "description": "Item unit price."
              },
              "overridden": {
                "type": "boolean",
                "description": "Applicable for table orders. If true, retains the unitPrice given in input to API."
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item measuring unit."
              },
              "itemAmount": {
                "type": "number",
                "description": "Item amount = (quantity * unitPrice)"
              },
              "optionAmount": {
                "type": "number",
                "description": "option amount = sum of (options.amount). If exists, provide options list."
              },
              "discountAmount": {
                "type": "number",
                "description": "discount amount applied at item level = sum(discounts.amount). If exists, value should be less than zero and provide discounts list."
              },
              "itemTotalAmount": {
                "type": "number",
                "description": "Item Total after considering options and discounts = (itemAmount + optionAmount + discountAmount)"
              },
              "taxAmountIncluded": {
                "type": "number",
                "description": "tax on the item, present if unitPrice includes tax = sum(taxes.amountIncluded). If exists, provide taxes list."
              },
              "taxAmountExcluded": {
                "type": "number",
                "description": "tax on the item, present if unitPrice excludes tax = sum(taxes.amountExcluded). If exists, provide taxes list."
              },
              "note": {
                "type": "string",
                "description": "Item notes/comments. Maximum 250 characters.",
                "maxLength": 250
              },
              "createdBy": {
                "type": "string",
                "description": "Name of the user who added this item. If present, createdTime also should be present"
              },
              "createdTime": {
                "type": "string",
                "description": "time of item addition in ISO format with timezone (in branch timezone). If present, createdBy also should be present"
              },
              "options": {
                "type": "array",
                "description": "Item options",
                "items": {
                  "title": "SaleItemOption",
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Item option name for display."
                    },
                    "optionId": {
                      "type": "string",
                      "description": "Required in input for resource orders from API"
                    },
                    "skuCode": {
                      "type": "string",
                      "description": "Item option SKU Code."
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Item option quantity."
                    },
                    "unitPrice": {
                      "type": "number",
                      "description": "Item option unit price."
                    },
                    "taxes": {
                      "type": "array",
                      "description": "Taxes at option level.",
                      "items": {
                        "title": "SaleItemTax",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Name of tax. For e.g., CGST/SGST"
                          },
                          "percentage": {
                            "type": "number",
                            "description": "Tax percentage."
                          },
                          "saleAmount": {
                            "type": "number",
                            "description": "amount on which tax is applied."
                          },
                          "amountIncluded": {
                            "type": "number",
                            "description": "this tax amount, present if unitPrice includes tax. (amountIncluded or amountExcluded or both is required)"
                          },
                          "amountExcluded": {
                            "type": "number",
                            "description": "this tax amount, present if unitPrice excludes tax. (amountIncluded or amountExcluded or both is required)"
                          },
                          "amount": {
                            "type": "number",
                            "description": "amount = (amountIncluded + amountExcluded)"
                          },
                          "gstLiability": {
                            "type": "string",
                            "description": "Entity which is liable to pay this tax. One of AGGREGATOR, VENDOR, OTHERS",
                            "enum": [
                              "AGGREGATOR",
                              "VENDOR",
                              "OTHERS"
                            ]
                          }
                        },
                        "required": [
                          "name",
                          "percentage"
                        ]
                      }
                    }
                  },
                  "required": [
                    "name",
                    "skuCode",
                    "quantity",
                    "unitPrice"
                  ]
                }
              },
              "discounts": {
                "type": "array",
                "description": "Discounts at item level.",
                "items": {
                  "title": "SaleItemDiscount",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of Discount."
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "Absolute",
                        "Percentage"
                      ],
                      "description": "Type of discount."
                    },
                    "rate": {
                      "type": "number",
                      "description": "Rate of discount, absolute value or percentage."
                    },
                    "saleAmount": {
                      "type": "number",
                      "description": "Amount on which discount is applied."
                    },
                    "amount": {
                      "type": "number",
                      "description": "Discount amount. For Sale this value is -ve and for Return this value is +ve"
                    },
                    "loyaltyPoints": {
                      "type": "number",
                      "description": "Loyalty Ponts Redeemed for this Discount"
                    },
                    "coupon": {
                      "type": "string",
                      "description": "Coupon Code, if this discount is applied using coupon"
                    },
                    "couponProvider": {
                      "type": "string",
                      "description": "Provider of the coupon"
                    },
                    "campaignName": {
                      "type": "string",
                      "description": "campaign name"
                    },
                    "reason": {
                      "type": "string",
                      "description": "Reason for discount"
                    }
                  },
                  "required": [
                    "name",
                    "type",
                    "rate",
                    "amount"
                  ]
                }
              },
              "taxes": {
                "type": "array",
                "description": "Taxes at item level.",
                "items": {
                  "title": "SaleItemTax",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of tax. For e.g., CGST/SGST"
                    },
                    "percentage": {
                      "type": "number",
                      "description": "Tax percentage."
                    },
                    "saleAmount": {
                      "type": "number",
                      "description": "amount on which tax is applied."
                    },
                    "amountIncluded": {
                      "type": "number",
                      "description": "this tax amount, present if unitPrice includes tax. (amountIncluded or amountExcluded or both is required)"

                    },
                    "amountExcluded": {
                      "type": "number",
                      "description": "this tax amount, present if unitPrice excludes tax. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amount": {
                      "type": "number",
                      "description": "amount = (amountIncluded + amountExcluded)"
                    },
                    "gstLiability": {
                      "type": "string",
                      "description": "Entity which is liable to pay this tax. One of AGGREGATOR, VENDOR, OTHERS",
                      "enum": [
                        "AGGREGATOR",
                        "VENDOR",
                        "OTHERS"
                      ]
                    }
                  },
                  "required": [
                    "name",
                    "percentage"
                  ]
                }
              },
              "itemLog": {
                "description": "History of changes to the item quantity, if any",
                "type": "array",
                "items": {
                  "description": "Details of each instance of change",
                  "type": "object",
                  "required": [
                    "reason",
                    "updatedBy",
                    "updatedTime",
                    "modifications"
                  ],
                  "properties": {
                    "reason": {
                      "type": "string",
                      "description": "reason for change"
                    },
                    "updatedBy": {
                      "type": "string",
                      "description": "Name of the user who made change"
                    },
                    "updatedTime": {
                      "type": "string",
                      "description": "time of change in ISO format with timezone (in branch timezone)"
                    },
                    "modifications": {
                      "type": "array",
                      "description": "List of changes made",
                      "items": {
                        "type": "object",
                        "required": [
                          "note"
                        ],
                        "properties": {
                          "note": {
                            "type": "string",
                            "description": "Description of change for e.g., Quantity changed from 2 to 1"
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "required": [
              "shortName",
              "quantity",
              "skuCode",
              "unitPrice"
            ]
          }
        },
        "itemTotalAmount": {
          "type": "number",
          "description": "= sum(items.itemTotalAmount)"
        },
        "directChargeAmount": {
          "type": "number",
          "description": "Total charge amount = sum(charges.amount) for charges marked as Direct. If exists, provide charges list."
        },
        "chargeAmount": {
          "type": "number",
          "description": "Total charge amount = sum(charges.amount) for charges not marked as Direct. If exists, provide charges list."
        },
        "discountAmount": {
          "type": "number",
          "description": "Total discount amount applied at sale level = sum(discounts.amount). If exists, value should less than zero and provide discounts list."
        },
        "taxAmountIncluded": {
          "type": "number",
          "description": "total of item taxes and charge taxes included in price =sum(items.taxAmountIncluded) + sum(charges.taxAmountIncluded). If exists, provide taxes list."
        },
        "taxAmountExcluded": {
          "type": "number",
          "description": "total of item, charge taxes excluded in price = sum(items.taxAmountExcluded) + sum(charges.taxAmountExcluded). If exists, provide taxes list."
        },
        "billAmount": {
          "type": "number",
          "description": "total bill amount = (itemTotalAmount + discountAmount + chargeAmount + taxAmountExcluded) and is same as = (netAmount + netChargeAmount + taxAmount)"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "Round off amount."
        },
        "billRoundedAmount": {
          "type": "number",
          "description": "billAmount + roundOffAmount"
        },
        "tipAmount": {
          "type": "number",
          "description": "Tip amount."
        },
        "totalAmount": {
          "type": "number",
          "description": "Total amount to be collected. billRoundedAmount + tipAmount"
        },
        "note": {
          "type": "string",
          "description": "Sale notes/comments. Maximum 250 characters.",
          "maxLength": 250
        },
        "charges": {
          "type": "array",
          "description": "Charges applied.",
          "items": {
            "title": "SaleCharge",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of Charge."
              },
              "type": {
                "type": "string",
                "enum": [
                  "Absolute",
                  "Percentage"
                ],
                "description": "Type of charge."
              },
              "rate": {
                "type": "number",
                "description": "Rate of charge, absolute value or percentage."
              },
              "saleAmount": {
                "type": "number",
                "description": "amount on which charge is applied."
              },
              "amount": {
                "type": "number",
                "description": "Charge amount."
              },
              "isDirectCharge": {
                "type": "boolean",
                "description": "Indicates if the charge is a Direct charge, this charge amount is included in sale.netSales"
              },
              "taxes": {
                "type": "array",
                "description": "Taxes for the charge.",
                "items": {
                  "type": "object",
                  "title": "ChargeTax",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of tax."
                    },
                    "percentage": {
                      "type": "number",
                      "description": "Tax percentage."
                    },
                    "saleAmount": {
                      "type": "number",
                      "description": "amount on which tax is applied."
                    },
                    "amountIncluded": {
                      "type": "number",
                      "description": "Tax amount included in charge. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amountExcluded": {
                      "type": "number",
                      "description": "Tax amount excluded in charge. (amountIncluded or amountExcluded or both is required)"
                    },
                    "amount": {
                      "type": "number",
                      "description": "amountIncluded + amountExcluded"
                    },
                    "gstLiability": {
                      "type": "string",
                      "description": "Entity which is liable to pay this tax. One of AGGREGATOR, VENDOR, OTHERS",
                      "enum": [
                        "AGGREGATOR",
                        "VENDOR",
                        "OTHERS"
                      ]
                    }
                  },
                  "required": [
                    "name",
                    "percentage",
                    "amount"
                  ]
                }
              }
            },
            "required": [
              "name",
              "type",
              "rate",
              "amount"
            ]
          }
        },
        "discounts": {
          "type": "array",
          "description": "Discounts applied directly at bill level.",
          "items": {
            "title": "SaleDiscount",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of Discount."
              },
              "type": {
                "type": "string",
                "enum": [
                  "Absolute",
                  "Percentage"
                ],
                "description": "Type of discount."
              },
              "rate": {
                "type": "number",
                "description": "Rate of discount, absolute value or percentage."
              },
              "saleAmount": {
                "type": "number",
                "description": "amount on which discount is applied."
              },
              "amount": {
                "type": "number",
                "description": "Discount amount. For Sale this value is -ve and for Return this value is +ve"
              },
              "loyaltyPoints": {
                "type": "number",
                "description": "Loyalty Ponts Redeemed for this Discount"
              },
              "coupon": {
                "type": "string",
                "description": "Coupon Code, if this discount is applied using coupon"
              },
              "couponProvider": {
                "type": "string",
                "description": "Provider of the coupon"
              },
              "campaignName": {
                "type": "string",
                "description": "campaign name"
              },
              "reason": {
                "type": "string",
                "description": "Reason for discount"
              }
            },
            "required": [
              "name",
              "type",
              "rate",
              "amount"
            ]
          }
        },
        "taxes": {
          "type": "array",
          "description": "Summary of taxes applied for items and charges.",
          "items": {
            "title": "SaleTax",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of tax."
              },
              "percentage": {
                "type": "number",
                "description": "Tax percentage."
              },
              "saleAmount": {
                "type": "number",
                "description": "amount on which tax is applied."
              },
              "itemTaxIncluded": {
                "type": "number",
                "description": "tax amount included in item unitPrice"
              },
              "itemTaxExcluded": {
                "type": "number",
                "description": "tax amount excluded in item unitPrice"
              },
              "chargeTaxIncluded": {
                "type": "number",
                "description": "tax amount included in charge rate"
              },
              "chargeTaxExcluded": {
                "type": "number",
                "description": "tax amount excluded in charge rate"
              },
              "amountIncluded": {
                "type": "number",
                "description": "= (itemTaxIncluded + chargeTaxIncluded). (amountIncluded or amountExcluded or both is required)"
              },
              "amountExcluded": {
                "type": "number",
                "description": "= (itemTaxExcluded + chargeTaxExcluded). (amountIncluded or amountExcluded or both is required)"
              },
              "amount": {
                "type": "number",
                "description": " = (amountIncluded + amountExcluded)"
              },
              "gstLiability": {
                "type": "string",
                "description": "Entity which is liable to pay this tax. One of AGGREGATOR, VENDOR, OTHERS",
                "enum": [
                  "AGGREGATOR",
                  "VENDOR",
                  "OTHERS"
                ]
              }
            },
            "required": [
              "name",
              "percentage"
            ]
          }
        },
        "payments": {
          "type": "array",
          "description": "Payments for the sale.",
          "items": {
            "title": "SalePayment",
            "required": [
              "mode",
              "amount"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "description": "Mode of payment e.g. Cash, Credit, Debit, Coupon"
              },
              "amount": {
                "type": "number",
                "description": "Payment amount."
              },
              "reference": {
                "type": "string",
                "description": "Payment reference e.g. last 4 digits of card."
              },
              "note": {
                "type": "string",
                "description": "Payment notes"
              },
              "postedDate": {
                "type": "string",
                "description": "Payment posted date in ISO format with timezone (in branch timezone)."
              }
            }
          }
        },
        "balanceAmount": {
          "type": "number",
          "description": "Balance amount to be paid"
        },
        "tags": {
          "type": "array",
          "description": "Tags attached to sale, includes aggregator tagged information.",
          "items": {
            "type": "string"
          }
        },
        "resourceInfo": {
          "type": "object",
          "description": "The resource i.e., Table the order belongs to",
          "required": [
            "resourceId",
            "resourceName"
          ],
          "properties": {
            "resourceId": {
              "type": "string",
              "description": "unique id for the resource"
            },
            "resourceName": {
              "type": "string",
              "description": "Resource Name"
            },
            "groupSize": {
              "type": "number",
              "description": "# of people (pax) for the order"
            },
            "isNonEditableTableOrder": {
              "type": "boolean",
              "description": "Flag indicating whether the dine in table order is editable or not."
            }
          }
        }
      }
    },
    "PartialOrderAcceptence": {
      "title": "Sale",
      "description": "Partial Order Acceptence model",
      "type": "object",
      "required": [
        "invoiceNumber",
        "soldOutItems"
      ],
      "properties": {
        "invoiceNumber": {
          "type": "string",
          "description": "Unique identifier as in source system."
        },
        "cancelOrder": {
          "type": "boolean",
          "description": "Flag indicating whether whole order need to be cancel or not"
        },
        "soldOutItems": {
          "type": "array",
          "description": "List of sale items",
          "items": {
            "title": "SaleItem",
            "type": "object",
            "properties": {
              "shortName": {
                "type": "string",
                "description": "Short name of the item."
              },
              "skuCode": {
                "type": "string",
                "description": "Item SKU code."
              }
            },
            "required": [
              "shortName",
              "skuCode"
            ]
          }
        }
      }
    },
    "SaleStatusInput": {
      "title": "Sale Status Input",
      "description": "Model to update sale status",
      "type": "object",
      "required": [
        "invoiceNumber",
        "status"
      ],
      "properties": {
        "invoiceNumber": {
          "type": "string",
          "description": "Invoice number of the sale for which status has to be updated"
        },
        "status": {
          "type": "string",
          "enum": [
            "Accepted",
            "Processed",
            "Cancelled"
          ]
        },
        "note": {
          "type": "string",
          "description": "For e.g., reson for cancellation"
        },
        "refundInfo":{
          "title": "Refund Info for in case of cancel only",
          "description": "Model to update sale status to cancel with refund Information",
          "type":"object",
          "properties": {
            "amount":{
              "type":"integer",
              "description":"Amount to be refund"
            },
            "mode":{
              "type":"string",
              "description":"mode of refund"
            },
            "paymentId":{
              "type":"string",
              "description":"unique refund payment ID"
            }
          }
        }
      }
    },
    "SaleResourceInput": {
      "title": "Sale Resource Input",
      "description": "Model to update sale resource",
      "type": "object",
      "required": [
        "invoiceNumber",
        "oldResourceId",
        "newResourceId"
      ],
      "properties": {
        "invoiceNumber": {
          "type": "string",
          "description": "Invoice number of the sale for which resource(table) has to be updated"
        },
        "oldResourceId": {
          "type": "string",
          "description": "curent resourceId of the sale."
        },
        "newResourceId": {
          "type": "string",
          "description": "new ResouceId for which sale has to be updated"
        }
      }
    },
    "PaxCountInput": {
      "title": "Sale Pax Couny Input",
      "description": "Model to update sale pax count",
      "type": "object",
      "required": [
        "invoiceNumber",
        "resourceId",
        "groupSize"
      ],
      "properties": {
        "invoiceNumber": {
          "type": "string",
          "description": "Invoice number of the sale for which pax count has to be updated"
        },
        "resourceId": {
          "type": "string",
          "description": "resourceId of the sale."
        },
        "groupSize": {
          "type": "number",
          "description": "pax count for which sale has to be updated"
        }
      }
    },
    "SaleDeliveryStatusInput": {
      "title": "Sale Delivery Status Input",
      "description": "Model to update sale delivery status",
      "type": "object",
      "required": [
        "invoiceNumber",
        "status",
        "createdDate"
      ],
      "properties": {
        "invoiceNumber": {
          "type": "string",
          "description": "Rista Invoice number of the sale for which delivery status has to be updated"
        },
        "status": {
          "type": "string",
          "description": "Delivery status",
          "enum": [
            "Assigned",
            "Arrived",
            "Dispatched",
            "Delivered",
            "Cancelled"
          ]
        },
        "data": {
          "type": "object",
          "description": "Delivery status additional data, content is required depending on the status.",
          "properties": {
            "firstName": {
              "type": "string",
              "description": "First name of the rider, required for Assigned status."
            },
            "lastName": {
              "type": "string",
              "description": "Last name of the rider, required for Assigned status."
            },
            "phoneNumber": {
              "type": "string",
              "description": "Phone number of the rider, required for Assigned status."
            },
            "reason": {
              "type": "string",
              "description": "Cancellation reason, required for Cancelled status."
            },
            "riderOtp" : {
              "type": "string",
              "description": "OTP for order handover, required for Assigned status."
            },
            "trackURL" : {
              "type": "string",
              "description": "Tracking URL of the delivery partner"
            },
            "pickupETA" : {
              "type": "string",
              "description": "Pickup ETA."
            },
            "dropETA" : {
              "type": "string",
              "description": "Drop ETA."
            },
            "deliveryPartner" : {
              "type": "string",
              "description": "Delivery Partner Name."
            }
          }
        },
        "createdDate": {
          "type": "string",
          "description": "Status created date in ISO 8601 format"
        }
      }
    },
    "UpdateActivityStatusRequest": {
      "title": "Update Activity Status Input",
      "description": "Model to update activity status",
      "type": "object",
      "required": [
        "status",
        "activityId"
      ],
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "success",
            "failure"
          ],
          "description": "Activity status"
        },
        "activityId": {
          "type": "string",
          "description": "Activity id against. which status is to be updated. ActivityId is provided as part of notification"
        },
        "errorDetails": {
          "type": "string",
          "description": "Error details if available."
        }
      }
    },
    "CreateReservationInput": {
      "title": "Create Reservation Input",
      "description": "Model to create table reservation",
      "type": "object",
      "required": [
        "branchCode",
        "groupSize",
        "startTime",
        "duration",
        "status",
        "customer"
      ],
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Branch Code of the branch you want to create reservation for."
        },
        "groupSize": {
          "type": "number",
          "description": "No. Of PAX you want to have reservation for."
        },
        "startTime": {
          "type": "string",
          "description": "Start Time of reservation. It should be in YYYY-MM-DDTHH:mm format, and should be a valid slot."
        },
        "duration": {
          "type": "number",
          "description": "The time in minutes for which you want reservation to be. It should be in multiple of slot interval as set by user."
        },
        "status": {
          "type": "string",
          "description": "Status of reservation.",
          "enum": [
            "Confirmed",
            "Tentative"
          ]
        },
        "customer": {
          "type": "object",
          "description": "Customer details for the reservation.",
          "required": [
            "name",
            "phoneNumber"
          ],
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of the customer."
            },
            "phoneNumber": {
              "type": "string",
              "description": "Phone Number of the customer."
            },
            "email": {
              "type": "string",
              "description": "Email of the customer"
            }
          }
        },
        "reference": {
          "type": "string",
          "description": "Any reference for the reservation input."
        },
        "notes": {
          "type": "string",
          "description": "Any notes for internal view, you can use this for that."
        },
        "expectedResourceGroup": {
          "type": "string",
          "description": "Expected resource group by the customer."
        },
        "callbackURL": {
          "type": "string",
          "description": "HTTP/HTTPS POST URL to receive sync status updates for any updation in reservation"
        }
      }
    },
    "CreateReservationOutput" : {
      "type": "object",
      "properties": {
        "reservationNumber": {
          "type": "string",
          "description": "Unique number for each reservation."
        },
        "businessName": {
          "type": "string",
          "description": "Branch business name"
        },
        "branchName" : {
          "type": "string",
          "description": "Branch Name"
        },
        "groupSize": {
          "type": "number",
          "description": "No. Of PAX you want to have reservation for."
        },
        "startTime": {
          "type": "string",
          "description": "Start Time of reservation. It will be in YYYY-MM-DDTHH:mm format"
        },
        "endTime": {
          "type": "string",
          "description": "End Time of reservation. It should be in YYYY-MM-DDTHH:mm format. It will be startTime + duration."
        },
        "status": {
          "type": "string",
          "description": "Status of reseration.",
          "enum": ["Confirmed", "Tentative"]
        },
        "fulfillmentStatus": {
          "type": "string",
          "description": "valid values are Checked In, In Process, Completed.",
          "enum": [
            "Not Started",
            "In Process",
            "Checked In",
            "Completed"
          ]
        },
        "customer": {
          "type": "object",
          "description": "Customer details for the reservation.",
          "required": [
            "name",
            "phoneNumber"
          ],
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of the customer."
            },
            "phoneNumber": {
              "type": "string",
              "description": "Phone Number of the customer."
            },
            "email": {
              "type": "string",
              "description": "Email of the customer"
            }
          }
        },
        "reference": {
          "type": "string",
          "description": "Any reference for the reservation input."
        },
        "notes": {
          "type": "string",
          "description": "Any notes for internal view, you can use this for that."
        },
        "expectedResourceGroup": {
          "type": "string",
          "description": "Expected resource group by the customer."
        },
        "resourceInfo": {
          "type": "array",
          "description": "Resource group assigned to the customer.",
          "items": {
            "$ref": "#/definitions/ResourceInfo"
          }
        }
      }
    },
    "SaleTargetInput": {
      "title": "Sale Target Input",
      "description": "Model to update sale target info",
      "type": "object",
      "required": [
        "invoiceNumber",
        "targetInfo"
      ],
      "properties": {
        "invoiceNumber": {
          "type": "string",
          "description": "Invoice number of the sale in Rista for which target info has to be updated"
        },
        "targetInfo": {
          "type": "object",
          "properties": {
            "orderNumber": {
              "type": "string",
              "description": "reference to this sale in Client system"
            }
          },
          "required": [
            "orderNumber"
          ]
        }
      }
    },
    "Customer": {
      "type": "object",
      "required": [
        "firstName"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Customer identifier."
        },
        "branchCode": {
          "type": "string",
          "description": "Branch code of branch where customer has performed his last transaction"
        },
        "firstName": {
          "type": "string",
          "description": "Customer first name."
        },
        "lastName": {
          "type": "string",
          "description": "Customer last name."
        },
        "email": {
          "type": "string",
          "description": "Customer email."
        },
        "phoneNumber": {
          "type": "string",
          "description": "Customer phone number."
        },
        "addresses": {
          "type": "array",
          "description": "Array of Address objects",
          "items": {
            "$ref": "#/definitions/Address"
          }
        },
        "membership": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "description": "Membership name."
            },
            "startDate": {
              "type": "string",
              "description": "Start date of membership in YYYY-MM-DD format."
            },
            "endDate": {
              "type": "string",
              "description": "End date of membership in YYYY-MM-DD format."
            }
          },
          "required": [
            "name"
          ]
        },
        "loyaltyInfo": {
          "type": "object",
          "properties": {
            "points": {
              "type": "number",
              "description": "Points balance as of this request"
            },
            "reservedPoints": {
              "type": "number",
              "description": "present only for /customer GET output. Points reserved against open orders"
            },
            "pointsEndingThisMonth": {
              "type": "number",
              "description": "Points Ending this month"
            },
            "pointsEndingNextMonth": {
              "type": "number",
              "description": "Points Ending next month"
            }
          }
        },
        "createdDate": {
          "type": "string",
          "description": "Customer created on date in YYYY-MM-DD format."
        },
        "taxId": {
          "type": "string",
          "description": "Primary tax identification number (e.g. GST number)."
        },
        "secondaryTaxId": {
          "type": "string",
          "description": "Secondary tax identification number."
        },
        "taxStateCode": {
          "type": "string",
          "description": "State code for tax purposes."
        },
        "gender": {
          "type": "string",
          "description": "Customer gender.",
          "enum": ["Male", "Female", "Other"]
        },
        "birthDate": {
          "type": "string",
          "description": "Customer date of birth in YYYY-MM-DD format."
        },
        "anniversaryDate": {
          "type": "string",
          "description": "Customer anniversary date in YYYY-MM-DD format."
        },
        "isBlocked": {
          "type": "boolean",
          "description": "Whether the customer is blocked."
        },
        "companyName": {
          "type": "string",
          "description": "Name of the linked company."
        }
      },
      "title": "Customer",
      "description": "Customer model"
    },
    "CustomerFeedback": {
      "type": "object",
      "title": "Customer Feedback",
      "description": "Customer Feedback model",
      "properties": {
        "id": {
          "description": "unique feedback id",
          "type": "string"
        },
        "statementNumber": {
          "description": "statement Number",
          "type": "string"
        },
        "billNumbers": {
          "description": "bill Numbers",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "channelName": {
          "description": "Channel Name",
          "type": "string"
        },
        "branchName": {
          "description": "Branch Name",
          "type": "string"
        },
        "branchLabels": {
          "description": "Branch Labels",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "campaignName": {
          "description": "Feedback campaign Name",
          "type": "string"
        },
        "feedbackItems": {
          "description": "feedback response items",
          "type": "array",
          "items": {
            "properties": {
              "id": {
                "description": "Feedback item id(uuid)",
                "type": "string"
              },
              "sequence": {
                "type": "integer",
                "description": "feedback item sequence"
              },
              "heading": {
                "type": "string",
                "description": "feedback item heading"
              },
              "description": {
                "type": "string",
                "description": "feedback item description"
              },
              "type": {
                "type": "string",
                "description": "feedback item type e.g. STAR5, PICKER, YESNO, TEXT"
              },
              "allowMultiple": {
                "type": "boolean",
                "description": "allow multiple picker options"
              },
              "value": {
                "description": "Response value.",
                "type": "string"
              }
            }
          }
        },
        "url": {
          "type": "string",
          "description": "feedback response url"
        },
        "submittedTime": {
          "description": "submittedTime in branch timezone",
          "type": "string"
        },
        "createdDate": {
          "description": "created datetime.",
          "type": "string"
        },
        "customer": {
          "description": "customer details.",
          "type": "object",
          "properties":{
            "customerId": {
              "description": "Customer Id",
              "type": "string"
            },
            "firstName": {
              "description": "First Name",
              "type": "string"
            },
            "lastName": {
              "description": "Last Name",
              "type": "string"
            },
            "phoneNumber": {
              "description": "Phone Number",
              "type": "string"
            },
            "email": {
              "description": "email address",
              "type": "string"
            }

          }
        }

      }
    },
    "CustomerInput": {
      "type": "object",
      "required": [
        "phoneNumber"
      ],
      "properties": {
        "firstName": {
          "type": "string",
          "description": "Customer first name. Required when creating a new customer."
        },
        "lastName": {
          "type": "string",
          "description": "Customer last name."
        },
        "email": {
          "type": "string",
          "description": "Customer email."
        },
        "phoneNumber": {
          "type": "string",
          "description": "Customer phone number. Used as the unique key to identify the customer for upsert."
        },
        "phoneCountryCode": {
          "type": "string",
          "description": "ISO country code for the phone number, e.g. IN, US."
        },
        "customerId": {
          "type": "string",
          "description": "External customer identifier. Must be unique per business. Rejected if another customer already holds this ID.",
          "maxLength": 100
        },
        "gender": {
          "type": "string",
          "description": "Customer gender.",
          "enum": ["Male", "Female", "Other"]
        },
        "birthDate": {
          "type": "string",
          "description": "Customer date of birth in YYYY-MM-DD format.",
          "format": "date"
        },
        "anniversaryDate": {
          "type": "string",
          "description": "Customer anniversary date in YYYY-MM-DD format.",
          "format": "date"
        },
        "taxId": {
          "type": "string",
          "description": "Primary tax identification number (e.g. GST number).",
          "maxLength": 100
        },
        "secondaryTaxId": {
          "type": "string",
          "description": "Secondary tax identification number.",
          "maxLength": 100
        },
        "taxStateCode": {
          "type": "string",
          "description": "State code for tax purposes.",
          "maxLength": 20
        },
        "isBlocked": {
          "type": "boolean",
          "description": "Set to true to block the customer."
        },
        "company": {
          "type": "string",
          "description": "Company name. Must exactly match an existing company in Rista (case-insensitive). The customer is linked to that company record."
        },
        "membership": {
          "type": "string",
          "description": "Membership plan name. Must exactly match an active membership in Rista. Requires membershipStart and membershipEnd."
        },
        "membershipStart": {
          "type": "string",
          "description": "Membership start date in YYYY-MM-DD format. Required together with membershipEnd.",
          "format": "date"
        },
        "membershipEnd": {
          "type": "string",
          "description": "Membership end date in YYYY-MM-DD format. Must be today or a future date, and must be >= membershipStart. Required together with membershipStart.",
          "format": "date"
        },
        "addresses": {
          "type": "array",
          "description": "Array of Address objects",
          "items": {
            "$ref": "#/definitions/Address"
          }
        }
      },
      "title": "CustomerInput",
      "description": "Customer input model. phoneNumber is the upsert key."
    },
    "CustomerPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Customer"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last customer record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "CustomerFeedbackPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CustomerFeedback"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last customer feedback record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "PrepaidTransaction": {
      "title": "PrepaidTransaction",
      "type": "object",
      "required": [
        "customerNumber",
        "branchCode",
        "transactionType",
        "amount",
        "paymentMethod"
      ],
      "properties": {
        "customerNumber": {
          "type": "string",
          "description": "Phone number of the customer whose wallet is credited or debited. The wallet is resolved by this.",
          "maxLength": 20
        },
        "customerId": {
          "type": "string",
          "description": "Optional, for your own reference. Not used to resolve the wallet and not stored against the transaction.",
          "maxLength": 100
        },
        "branchCode": {
          "type": "string",
          "description": "Branch posting the transaction. Recorded for reporting and audit only - the wallet is owned at customer level, not per branch.",
          "maxLength": 50
        },
        "transactionType": {
          "type": "string",
          "description": "ADD_WALLET credits the wallet, REFUND debits it.",
          "enum": [
            "ADD_WALLET",
            "REFUND"
          ]
        },
        "amount": {
          "type": "number",
          "description": "Transaction amount, always positive. Must be greater than zero."
        },
        "paymentMethod": {
          "type": "string",
          "description": "How the money was collected, e.g. UPI. Required for both ADD_WALLET and REFUND. Free text used to group collection reports, so send a consistent spelling.",
          "maxLength": 50
        },
        "referenceId": {
          "type": "string",
          "description": "Your external reference, stored for reconciliation. May repeat; resending it posts another transaction.",
          "maxLength": 64
        },
        "remarks": {
          "type": "string",
          "description": "Free text note stored against the transaction.",
          "maxLength": 200
        }
      }
    },
    "PrepaidTransactionResult": {
      "title": "PrepaidTransactionResult",
      "type": "object",
      "required": [
        "status",
        "prepaidBalance"
      ],
      "properties": {
        "status": {
          "type": "string",
          "description": "SUCCESS if the transaction was posted. Failures return an error response instead.",
          "enum": [
            "SUCCESS"
          ]
        },
        "prepaidBalance": {
          "type": "number",
          "description": "Consolidated prepaid wallet balance after this transaction."
        }
      }
    },
    "PrepaidBalance": {
      "title": "PrepaidBalance",
      "type": "object",
      "properties": {
        "customerId": {
          "type": "string",
          "description": "Customer identifier of the wallet owner. Absent if the customer has no identifier set in Rista."
        },
        "customerNumber": {
          "type": "string",
          "description": "Phone number of the wallet owner."
        },
        "customerName": {
          "type": "string",
          "description": "Name of the wallet owner."
        },
        "prepaidBalance": {
          "type": "number",
          "description": "Consolidated prepaid wallet balance. 0 if the customer has no wallet history."
        }
      }
    },
    "CustomerLoyaltyLot": {
      "title": "CustomerLoyaltyLot",
      "type": "object",
      "required": [
        "id",
        "points",
        "expiryDate",
        "remarks"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Customer identifier."
        },
        "points": {
          "type": "number",
          "description": "Loyalty points."
        },
        "expiryDate": {
          "type": "string",
          "description": "Expiry date in YYYY-MM-DD, cannot be in past. Should be end of month",
          "format": "date"
        },
        "remarks": {
          "type": "string",
          "description": "Remarks for the transaction. e.g. New Customer",
          "maxLength": 100
        }
      }
    },
    "CustomerLoyaltyObject" : {
      "type" : "object",
      "required" : [ "branch", "customerPhone", "channelName" ],
      "properties" : {
        "branch" : {
          "type" : "number",
          "description" : "Branch Code"
        },
        "customerPhone" : {
          "type" : "string",
          "description" : "Customer Phone Number"
        },
        "channelName" : {
          "type" : "string",
          "description" : "Channel Name ex - dine in"
        }
      },
      "title" : "CustomerLoyaltyObject"
    },
    "CustomerLoyaltyResponse" : {
      "type": "object",
      "title": "Loyalty Info",
      "description": "Loyalty info",
      "properties": {
        "code": {
          "type": "string",
          "description": "error code in case of any error"
        },
        "message": {
          "type": "string",
          "description": "error description in case of any error"
        },
        "redeemablePoints": {
          "type": "integer",
          "description": "Loyalty Point that can be redeem"
        },
        "currentPoints": {
          "type": "integer",
          "description": "Total Number of Loyalty Points"
        },
        "redeemableAmount": {
          "type": "integer",
          "description": "Available Amount corresponding to loyalty points"
        }
      }
    },
    "CustomerLoyaltyRedeemObject" : {
      "type" : "object",
      "required" : [ "sale", "branch", "customerPhone", "channelName", "loyaltyInput" ],
      "properties" : {
        "sale" : {
          "type" : "object",
          "description" : "sale Object"
        },
        "branch" : {
          "type" : "number",
          "description" : "Branch Code"
        },
        "customerPhone" : {
          "type" : "string",
          "description" : "Customer Phone Number"
        },
        "channelName" : {
          "type" : "string",
          "description" : "Channel Name"
        },
        "loyaltyInput": {
          "type" : "object",
          "description" : "loyalty Info",
          "properties": {
            "redeemableAmount" : {
              "type" : "number",
              "description" : "Redeemable Amount"
            },
            "redeemablePoints" : {
              "type" : "number",
              "description" : "Redeemable Point"
            },
            "otp" : {
              "type" : "number",
              "description" : "OTP in case of verify Reedem"
            }
          }
        }
      },
      "title" : "CustomerLoyaltyRedeemObject"
    },
    "CustomerLoyaltyReedemResponse" : {
      "type": "object",
      "title": "Loyalty Reedem information",
      "description": "Loyalty Reedem status info",
      "properties": {
        "code": {
          "type": "string",
          "description": "error code in case of any error"
        },
        "message": {
          "type": "string",
          "description": "error description in case of any error"
        },
        "pointsValue" : {
          "type": "number",
          "description": "points requested for reedem"
        },
        "authenticate" : {
          "type": "boolean",
          "description": "if this reedem require authentication ex: otp"
        }
      }
    },
    "CustomerLoyaltyReedemVerifyResponse" : {
      "type": "object",
      "title": "Loyalty Reedem Verify information",
      "description": "Loyalty Reedem verify status",
      "properties": {
        "code": {
          "type": "string",
          "description": "error code in case of any error"
        },
        "message": {
          "type": "string",
          "description": "error description in case of any error"
        },
        "discountList": {
          "type": "array",
          "description": "Discount that are applied",
          "items": {
            "$ref": "#/definitions/Discount"
          }
        }
      }
    },
    "OfferRedeemObject" : {
      "type" : "object",
      "required" : [ "sale", "branch", "customerPhone", "providerMetaId", "loyaltyInfo" ],
      "properties" : {
        "sale" : {
          "type" : "object",
          "description" : "sale Object."
        },
        "branch" : {
          "type" : "string",
          "description" : "Branch Code"
        },
        "customerPhone" : {
          "type" : "string",
          "description" : "Customer Phone Number"
        },
        "providerMetaId" : {
          "type" : "string",
          "description" : "Provider metaid"
        },
        "loyaltyInfo": {
          "type" : "object",
          "description" : "loyalty Info",
          "properties": {
            "discountCode" : {
              "type" : "string",
              "description" : "Offer Discount Code"
            }
          }
        }
      },
      "title" : "OfferRedeemObject"
    },

    "SalesResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "title": "SaleSummary",
            "properties": {
              "branchName": {
                "type": "string",
                "description": "Name of the branch"
              },
              "branchCode": {
                "type": "string",
                "description": "Branch code"
              },
              "invoiceNumber": {
                "type": "string",
                "description": "Unique identifier for a sale record"
              },
              "invoiceDate": {
                "type": "string",
                "description": "Date of sale in ISO format with timezone (in branch timezone)"
              },
              "invoiceType": {
                "type": "string",
                "enum": [
                  "Sale",
                  "Return"
                ],
                "description": "Transaction type, Sale/Return."
              },
              "grossAmount": {
                "type": "number",
                "description": "Gross sale amount."
              },
              "discountAmount": {
                "type": "number",
                "description": "Total discount amount."
              },
              "directChargeAmount": {
                "type": "number",
                "description": "Total charge amount that are marked as Direct."
              },
              "netAmount": {
                "type": "number",
                "description": "Net sale amount."
              },
              "chargeAmount": {
                "type": "number",
                "description": "Total charge amount that are not marked as Direct."
              },
              "taxAmount": {
                "type": "number",
                "description": "Total tax amount."
              },
              "roundOffAmount": {
                "type": "number",
                "description": "Round off amount."
              },
              "tipAmount": {
                "type": "number",
                "description": "Tip amount."
              },
              "totalAmount": {
                "type": "number",
                "description": "Total sale amount."
              },
              "customerId": {
                "type": "string",
                "description": "Customer identifier."
              },
              "customerName": {
                "type": "string",
                "description": "Customer name."
              },
              "saleBy": {
                "type": "string",
                "description": "Name of the user who performed this sale."
              },
              "channel": {
                "type": "string",
                "description": "Name of the price channel."
              },
              "label": {
                "type": "string",
                "description": "Service label e.g. Table 1."
              },
              "status": {
                "type": "string",
                "description": "Status of the sale. e.g. Open, Closed, Cancelled, Voided."
              },
              "sessionLabel": {
                "type": "string",
                "description": "Session label e.g. Morning"
              }
            },
            "required": [
              "branchCode",
              "branchName",
              "channel",
              "grossAmount",
              "invoiceDate",
              "invoiceNumber",
              "itemAmount",
              "netAmount",
              "saleBy",
              "totalAmount"
            ]
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last sale summary record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      },
      "title": "SalesResult",
      "description": "Sales result model"
    },
    "CatalogItemsSaveResponse": {
      "title": "CatalogItemsSaveResponse",
      "description": "Catalog items save result model.",
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "erroredItems": {
            "type": "object",
            "properties": {
              "sku": {
                "type": "string",
                "description": "Item Sku"
              },
              "errors": {
                "type": "array",
                "description": "Item level errors",
                "properties": {
                  "attribute": {
                    "type": "string",
                    "description": "Attribute key"
                  },
                  "message": {
                    "type": "string",
                    "description": "error reason"
                  }
                }
              }
            }
          },
          "upsertedItems": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Sku code of upserted item"
            }
          }
        }
      }
    },
    "SalesPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Sale"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last sale record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "Item": {
      "title": "Item",
      "description": "Item model.",
      "type": "object",
      "required": [
        "shortName",
        "skuCode",
        "price"
      ],
      "properties": {
        "shortName": {
          "type": "string",
          "description": "Short name of the item."
        },
        "longName": {
          "type": "string",
          "description": "Long name of the item."
        },
        "description": {
          "type": "string",
          "description": "Item description."
        },
        "skuCode": {
          "type": "string",
          "description": "Item SKU code."
        },
        "barCode": {
          "type": "string",
          "description": "Item barcode."
        },
        "groupSKUCode": {
          "type": "string",
          "description": "SKU code indicating that this item belongs to a group."
        },
        "variants": {
          "type": "array",
          "description": "Variant definition for the item.",
          "items": {
            "type": "object",
            "title": "ItemVariantType",
            "required": [
              "name",
              "value"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of the variant. e.g. Small"
              },
              "value": {
                "type": "string",
                "description": "Value of the variant. e.g. S"
              }
            }
          }
        },
        "measuringUnit": {
          "type": "string",
          "description": "Item measuring unit."
        },
        "category": {
          "type": "string",
          "description": "Item category name."
        },
        "menus": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "Item menu name"
          }
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "Item tags, e.g. Vegetarian, Non-vegetarian, Spicy, Chef Recommended."
          }
        },
        "taxes": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "Item tax definitions",
            "required": [
              "name",
              "percentage"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Tax name."
              },
              "percentage": {
                "type": "number",
                "description": "Tax percentage"
              }
            }
          }
        },
        "priceIncludesTax": {
          "type": "boolean",
          "description": "Flag indicating whether the defined price includes tax or not."
        },
        "price": {
          "type": "number",
          "description": "Item price."
        },
        "optionSets": {
          "type": "array",
          "items": {
            "type": "object",
            "title": "ItemOptionSet",
            "description": "Item option set.",
            "required": [
              "name",
              "options"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Unique name of the option set. e.g. Item Toppings"
              },
              "label": {
                "type": "string",
                "description": "Display name of the option set. e.g. Toppings"
              },
              "min": {
                "type": "number",
                "description": "Minimum required options for this set."
              },
              "max": {
                "type": "number",
                "description": "Maximum options allowed for this set."
              },
              "options": {
                "type": "array",
                "description": "Options in this set.",
                "items": {
                  "type": "object",
                  "title": "ItemOptionSetOption",
                  "description": "Option definition.",
                  "required": [
                    "id",
                    "name",
                    "skuCode"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Option identifier"
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the option. e.g. Cheese"
                    },
                    "displayOrder": {
                      "type": "number",
                      "description": "Display order within this optionset"
                    },
                    "skuCode": {
                      "type": "string",
                      "description": "SKU code of the option."
                    },
                    "isDefault": {
                      "type": "boolean",
                      "description": "Flag to indicate if this option is default."
                    },
                    "measuringUnit": {
                      "type": "string",
                      "description": "Option measuring unit."
                    },
                    "price": {
                      "type": "string",
                      "description": "Option price."
                    },
                    "max": {
                      "type": "number",
                      "description": "Max allowed quantity of the option."
                    }
                  }
                }
              }
            }
          }
        },
        "displayOrder": {
          "type": "number",
          "description": "Display Order of the Item"
        },
        "categoryDisplayOrder": {
          "type": "number",
          "description": "Display Order of the category"
        }
      }
    },
    "ItemsResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Item"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        },
        "lastModified": {
          "type": "number",
          "description": "Last modified time of catalog in seconds since epoch. You can use this to optimize your item refresh."
        }
      }
    },
    "SoldOutItemsResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "shortName": {
                "type": "string",
                "description": "Short name of the item."
              },
              "longName": {
                "type": "string",
                "description": "Long name of the item."
              },
              "skuCode": {
                "type": "string",
                "description": "Item SKU code."
              }
            },
            "required": [
              "shortName",
              "skuCode"
            ]
          }
        }
      }
    },
    "StockStatusResult": {
      "type": "object",
      "title": "StockStatusResult",
      "description": "Stock status of the SKUs available in the channel catalog of the branch.",
      "properties": {
        "stockOut": {
          "type": "array",
          "description": "SKU codes that are currently stock-out for the requested branch and channel.",
          "items": {
            "type": "string"
          }
        },
        "stockIn": {
          "type": "array",
          "description": "SKU codes that are currently stock-in for the requested branch and channel.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "SoldOutItemsSaveRequest": {
      "type": "object",
      "title": "SoldOutItemsSaveRequest",
      "properties": {
        "soldOutItems": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item skuCode"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Product"
                ],
                "description": "Item type, only Product supported as of now."
              },
              "channels": {
                "type": "array",
                "description": "Item soldout for particular channels",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "skuCode",
              "type"
            ]
          }
        }
      }
    },
    "SoldOutItemsSaveResponse": {
      "type": "object",
      "title": "SoldOutItemsSaveResponse",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item SKU code."
              },
              "channels": {
                "type": "array",
                "description": "Item soldout for particular channels",
                "items": {
                  "type": "string"
                }
              },
              "statusCode": {
                "type": "number",
                "description": "HTTP codes, 201 - success, 404 - not found"
              },
              "statusMessage": {
                "type": "string",
                "description": "For non 201 ."
              }
            },
            "required": [
              "skuCode",
              "statusCode"
            ]
          }
        }
      }
    },
    "SoldOutItemsHistoryResponse": {
      "type": "object",
      "title": "SoldOutItemsHistoryResponse",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item SKU code."
              },
              "itemName": {
                "type": "string",
                "description": "Name of the item."
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item unit of measure. e.g. each, kg etc."
              },
              "categoryName": {
                "type": "string",
                "description": "Item category name."
              },
              "categoryTypes": {
                "type": "array",
                "description": "Defines types of the category",
                "items": {
                  "type": "string",
                  "description": "Name of category type for e.g., inventory, catalog"
                }
              },
              "itemType": {
                "type": "string",
                "enum": [
                  "Product",
                  "Material"
                ],
                "description": "Item type, e.g. Product/Material"
              },
              "statusType": {
                "type": "string",
                "enum": [
                  "Direct",
                  "Indirect"
                ],
                "description": "Direct/Indirect added directly or is prepared or combo item."
              },
              "eventType": {
                "type": "string",
                "enum": [
                  "IN",
                  "OUT"
                ],
                "description": "Sold out or in stock event."
              },
              "userName": {
                "type": "string",
                "description": "Name of the user who performed this event."
              },
              "userId": {
                "type": "string",
                "description": "User id of the user who performed this event."
              },
              "eventDate": {
                "type": "string",
                "description": "Event date time in branch timezone. ISO 8601 format."
              },
              "eventBusinessDay": {
                "type": "string",
                "description": "Event business day in YYYY-MM-DD format."
              }
            },
            "required": [
              "skuCode",
              "itemType",
              "statusType",
              "eventType",
              "eventDate",
              "eventBusinessDay"
            ]
          }
        },
        "lastKey": {
          "type": "string",
          "description": "This field indicates that there are more records to fetch, pass this value in the lastKey parameter for next request."
        }
      }
    },
    "Empty": {
      "title": "Empty schema",
      "type": "object",
      "properties": {}
    },
    "Error": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        }
      },
      "title": "Error Schema"
    },
    "PaymentsResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "title": "PaymentDetail",
            "properties": {
              "branchName": {
                "type": "string",
                "description": "Name of the branch"
              },
              "branchCode": {
                "type": "string",
                "description": "Branch code"
              },
              "invoiceNumber": {
                "type": "string",
                "description": "Unique identifier for a sale."
              },
              "invoiceDate": {
                "type": "string",
                "description": "Date of sale in ISO format with timezone (in branch timezone)"
              },
              "invoiceAmount": {
                "type": "number",
                "description": "Total item amount."
              },
              "mode": {
                "type": "string",
                "description": "Payment mode."
              },
              "paymentDate": {
                "type": "string",
                "description": "Payment date."
              },
              "amount": {
                "type": "number",
                "description": "Payment amount."
              },
              "reference": {
                "type": "string",
                "description": "Payment reference."
              },
              "paymentBy": {
                "type": "string",
                "description": "Name of the person who posted the Payment."
              }
            },
            "required": [
              "amount",
              "branchCode",
              "branchName",
              "invoiceAmount",
              "invoiceDate",
              "invoiceNumber",
              "mode",
              "paymentBy"
            ]
          }
        }
      },
      "title": "PaymentsResult",
      "description": "Payments result model"
    },
    "PaymentInput": {
      "title": "Payment Input",
      "description": "Payment model to add to a sale.",
      "type": "object",
      "required": [
        "transactionId",
        "invoiceNumber",
        "amount",
        "mode"
      ],
      "properties": {
        "transactionId": {
          "type": "string",
          "description": "External payment identifier to uniquely identify the payment."
        },
        "invoiceNumber": {
          "type": "string",
          "description": "Invoice number of the sale for which you want to add payment to."
        },
        "amount": {
          "type": "number",
          "description": "Payment amount"
        },
        "mode": {
          "type": "string",
          "description": "mode of payment e.g. credit/loyalty points etc."
        },
        "reference": {
          "type": "string",
          "description": "Additional payment mode info e.g. last 4 digits (xx3333) of card in case of credit card."
        },
        "closeIfZeroBalance": {
          "type": "boolean",
          "description": "if true have to close sale if the remaining balance is zero."
        },
        "tipAmount": {
          "type": "number",
          "description": "Tip amount"
        }
      }
    },
    "OfflinePaymentInput": {
      "title": "Offline Payment Input",
      "description": "Payment model when customer opts to pay offline.",
      "type": "object",
      "required": [
        "invoiceNumber"
      ],
      "properties": {
        "invoiceNumber": {
          "type": "string",
          "description": "Invoice number of the sale for which customer opts to pay offline."
        }
      }
    },
    "discountUpdateInput": {
      "title": "Update Discount Input",
      "description": "Update discount/loyalty to a sale",
      "type": "object",
      "required": [
        "invoiceNumber",
        "discounts"
      ],
      "properties": {
        "invoiceNumber": {
          "type": "string",
          "description": "Invoice number of the sale for which you want to add discount/loyalty"
        },
        "discounts": {
          "type": "array",
          "description": "Discounts applied directly at bill level.",
          "items": {
            "title": "SaleDiscount",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of Discount."
              },
              "type": {
                "type": "string",
                "enum": [
                  "Absolute",
                  "Percentage"
                ],
                "description": "Type of discount."
              },
              "rate": {
                "type": "number",
                "description": "Rate of discount, absolute value or percentage."
              },
              "saleAmount": {
                "type": "number",
                "description": "amount on which discount is applied."
              },
              "amount": {
                "type": "number",
                "description": "Discount amount. For Sale this value is -ve and for Return this value is +ve"
              },
              "loyaltyPoints": {
                "type": "number",
                "description": "Loyalty Ponts Redeemed for this Discount"
              },
              "coupon": {
                "type": "string",
                "description": "Coupon Code, if this discount is applied using coupon"
              },
              "couponProvider": {
                "type": "string",
                "description": "Provider of the coupon"
              },
              "campaignName": {
                "type": "string",
                "description": "campaign name"
              },
              "maxDiscountAmount": {
                "type": "number",
                "description": "maximum discount amount to be applied"
              },
              "skuCodes": {
                "type": "array",
                "description": "list of skuCodes on which discount to be applied",
                "items": {
                  "type": "string"
                  }
              },
              "reason": {
                "type": "string",
                "description": "Reason for discount"
              },
              "appliedBy": {
                "type": "string",
                "description": "Name of the user who applied this discount"
              }
            },
            "required": [
              "name",
              "type",
              "rate",
              "amount"
            ]
          }
        }
      }
    },
    "ChangeDeliveryModeInput": {
      "title": "Change Delivery Mode",
      "description": "Change Delivery mode from pickup to delivery",
      "type": "object",
      "required": [
        "invoiceNumber"
      ],
      "properties": {
        "invoiceNumber": {
          "type": "string",
          "description": "Invoice number of the sale for which customer opts to pay offline."
        }
      }
    },
    "BranchListResult": {
      "title": "BranchListResult",
      "description": "Branch information list",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Branch"
      }
    },
    "BranchTxnListResult": {
      "title": "BranchTxnListResult",
      "description": "Branch Transactionlist",
      "type": "array",
      "items": {
        "$ref": "#/definitions/BranchTxn"
      }
    },
    "SalesSummaryMetric": {
      "title": "SalesSummaryMetric",
      "description": "Sales summary metric",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name."
        },
        "netSaleAmount": {
          "type": "number",
          "description": "Net sale amount."
        },
        "noOfSales": {
          "type": "number",
          "description": "Number of sales."
        },
        "avgSaleAmount": {
          "type": "number",
          "description": "Average sale amount."
        },
        "paxCount": {
          "type": "number",
          "description": "Pax count."
        },
        "directCharge": {
          "type": "number",
          "description": "Direct charge amount."
        },
        "indirectCharge": {
          "type": "number",
          "description": "Indirect charge amount."
        },
        "discount": {
          "type": "number",
          "description": "Total discount amount."
        },
        "taxAmount": {
          "type": "number",
          "description": "Total tax amount."
        }
      }
    },
    "ItemLevelSummary": {
      "title": "Item sold summary",
      "description": "Items sold summary",
      "type": "object",
      "properties": {
        "skuCode": {
          "type": "string",
          "description": "Sku code of item"
        },
        "itemName": {
          "type": "string",
          "description": "Name of item"
        },
        "brandName": {
          "type": "string",
          "description": "Brand name of item"
        },
        "accountName": {
          "type": "string",
          "description": "Account name of item"
        },
        "categoryName": {
          "type": "string",
          "description": "Category of item"
        },
        "subCategory": {
          "type": "string",
          "description": "sub Category of item"
        },
        "itemNature": {
          "type": "string",
          "description": "itemNature of item",
          "enum": [
            "Goods",
            "Services"
          ]
        },
        "type": {
          "type": "string",
          "description": "type of item",
          "enum": [
            "Add On",
            "Option",
            "Item"
          ]
        },
        "measuringUnit" : {
          "type": "string",
          "description": "Measuring Unit of the item."
        },
        "itemTotalDiscountAmount": {
          "type": "number",
          "description": "Total net discount given on item"
        },
        "itemTotalNetAmount": {
          "type": "number",
          "description": "Total net amount of item sold"
        },
        "itemTotalQty": {
          "type": "number",
          "description": "Total quantity of item sold"
        },
        "itemTotalgrossAmount": {
          "type": "number",
          "description": "Total gross amount of item"
        },
        "itemTotaltaxAmount": {
          "type": "number",
          "description": "Total tax applied on item"
        }
      }
    },
    "DiscountTransactionResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "title": "DiscountTransaction",
            "properties": {
              "branchName": {
                "type": "string",
                "description": "Name of the branch"
              },
              "branchCode": {
                "type": "string",
                "description": "Branch code"
              },
              "invoiceNumber": {
                "type": "string",
                "description": "Unique identifier for a sale record"
              },
              "invoiceDate": {
                "type": "string",
                "description": "Date of sale in ISO format with timezone (in branch timezone)"
              },
              "invoiceType": {
                "type": "string",
                "enum": [
                  "Sale",
                  "Return"
                ],
                "description": "Sale/Return transaction."
              },
              "discountCode": {
                "type": "string",
                "description": "Discount code."
              },
              "discountAmount": {
                "type": "number",
                "description": "Discount amount for this code."
              },
              "discountPercentage": {
                "type": "number",
                "description": "Discount percentage."
              },
              "couponCode": {
                "type": "string",
                "description": "Coupon code."
              },
              "couponProvider": {
                "type": "string",
                "description": "Coupon provider."
              },
              "campaignName": {
                "type": "string",
                "description": "Name of the campaign."
              },
              "billNetDiscount": {
                "type": "number",
                "description": "Total discount on sale."
              },
              "billGrossAmount": {
                "type": "number",
                "description": "Gross sale amount."
              },
              "saleAmount": {
                "type": "number",
                "description": "Sale amount."
              },
              "appliedBy": {
                "type": "string",
                "description": "Discount applied by."
              },
              "reason": {
                "type": "string",
                "description": "Discount reason."
              }
            },
            "required": [
              "branchName",
              "branchCode",
              "invoiceNumber",
              "invoiceDate",
              "invoiceType",
              "discountCode",
              "discountAmount",
              "billNetDiscount",
              "billGrossAmount",
              "saleAmount"
            ]
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last discount record provided, this indicates there are more transactions to be fetched. Use this in subsequent requests."
        }
      },
      "title": "DiscountTransactionResult",
      "description": "Discount transactions result model."
    },
    "CouponInput": {
      "type": "object",
      "required": [
        "couponProvider",
        "expiryDate",
        "discounts",
        "couponCode"
      ],
      "properties": {
        "couponProvider": {
          "type": "string",
          "description": "Coupon Issue/Provider defined in the business settings"
        },
        "couponCode": {
          "type": "string",
          "description": "Unique Coupon Code across business. System saves it in upper case"
        },
        "startDate": {
          "type": "string",
          "description": "Start date of the coupon in YYYY-MM-DD format"
        },
        "expiryDate": {
          "type": "string",
          "description": "Expiry date of the coupon in YYYY-MM-DD format"
        },
        "campaignName": {
          "type": "string",
          "description": "Campaign Name, If the coupon is part of a campaign"
        },
        "discounts": {
          "type": "array",
          "description": "list of discounts to be defined as part of this coupon",
          "items": {
            "type": "object",
            "required": [
              "discountCode"
            ],
            "properties": {
              "discountCode": {
                "type": "string",
                "description": "Discount Code that is defined for business"
              }
            }
          }
        },
        "customer": {
          "type": "object",
          "description": "customer information",
          "required": [
            "firstName"
          ],
          "properties": {
            "firstName": {
              "type": "string",
              "description": "Customer first name."
            },
            "lastName": {
              "type": "string",
              "description": "Customer last name."
            },
            "email": {
              "type": "string",
              "description": "Customer email. email or phoneNumber required"
            },
            "phoneNumber": {
              "type": "string",
              "description": "Customer phone number. email or phoneNumber required"
            }
          }
        }
      }
    },
    "CouponsInput": {
      "type": "object",
      "required": [
        "couponProvider",
        "expiryDate",
        "discounts",
        "coupons"
      ],
      "properties": {
        "couponProvider": {
          "type": "string",
          "description": "Coupon Issue/Provider defined in the business settings"
        },
        "startDate": {
          "type": "string",
          "description": "Start date of the coupon in YYYY-MM-DD format"
        },
        "expiryDate": {
          "type": "string",
          "description": "Expiry date of the coupon in YYYY-MM-DD format"
        },
        "campaignName": {
          "type": "string",
          "description": "Campaign Name, If the coupon is part of a campaign"
        },
        "discounts": {
          "type": "array",
          "description": "list of discounts to be defined as part of this coupon",
          "items": {
            "type": "object",
            "required": [
              "discountCode"
            ],
            "properties": {
              "discountCode": {
                "type": "string",
                "description": "Discount Code that is defined for business"
              }
            }
          }
        },
        "coupons": {
          "type": "array",
          "description": "List of coupons to be defined",
          "items": {
            "type": "object",
            "required": [
              "couponCode"
            ],
            "properties": {
              "couponCode": {
                "type": "string",
                "description": "Unique Coupon Code across business. System saves it in upper case"
              },
              "customer": {
                "type": "object",
                "description": "customer information",
                "required": [
                  "firstName",
                  "phoneNumber"
                ],
                "properties": {
                  "firstName": {
                    "type": "string",
                    "description": "Customer first name."
                  },
                  "lastName": {
                    "type": "string",
                    "description": "Customer last name."
                  },
                  "phoneNumber": {
                    "type": "string",
                    "description": "Customer phone number. email or phoneNumber required"
                  }
                }
              }
            }
          }
        }
      }
    },
    "InventoryTax": {
      "type": "object",
      "description": "Tax Definition",
      "required": [
        "taxName",
        "percentage",
        "taxAmount"
      ],
      "properties": {
        "taxName": {
          "type": "string",
          "description": "Tax Name"
        },
        "percentage": {
          "type": "number",
          "description": "tax percentage"
        },
        "taxableAmount": {
          "type": "number",
          "description": "Amount on which tax to be applied"
        },
        "taxAmount": {
          "type": "number",
          "description": "Tax Amount"
        }
      }
    },
    "InventoryGRNTax": {
      "type": "object",
      "description": "Tax Definition",
      "required": [
        "taxName",
        "percentage"
      ],
      "properties": {
        "taxName": {
          "type": "string",
          "description": "Tax Name"
        },
        "percentage": {
          "type": "number",
          "description": "tax percentage"
        }
      }
    },
    "InventoryDiscount": {
      "type": "object",
      "description": "Discount Definition",
      "required": [
        "discountCode",
        "discountType",
        "discountAmount"
      ],
      "properties": {
        "discountCode": {
          "type": "string",
          "description": "Discount Code"
        },
        "discountType": {
          "type": "number",
          "description": "Absolute/Percentage"
        },
        "discountAmount": {
          "type": "number",
          "description": "Discount Amount"
        }
      }
    },
    "SupplierCharges": {
      "type": "object",
      "description": "charge Definition",
      "properties": {
        "chargeName": {
          "type": "string",
          "description": "Charge Name"
        },
        "amount": {
          "type": "number",
          "description": "Charge Amount"
        },
        "totalTax": {
          "type": "number",
          "description": "Tax Amount"
        },
        "chargeTotal":{
          "type": "number",
          "description": "Tax Amount + Charge Amount"
        }
      }
    },
    "HsnCategories": {
      "type": "array",
      "description": "Summary of amounts based on HSN and Categories of requested, receiving and final activity.",
      "items": {
        "type": "object",
        "properties": {
          "categoryName": {
            "type": "string",
            "description": "Category name of the item"
          },
          "itemTaxCode": {
            "type": "string",
            "description": "Taxcode or HSN code of the item."
          },
          "discountAmount": {
            "type": "number",
            "description": "Value of the discount"
          },
          "billPassingQuantity": {
            "type": "number",
            "description": "Summation of quantity of items in bill passing activity having category and HSN code"
          },
          "billPassingTaxAmount": {
            "type": "number",
            "description": "Final Total Tax Amount for this category and HSN code"
          },
          "billPassingValueExcludingTax": {
            "description": "Final total cost of category and HSN code",
            "type": "number"
          },
          "billPassingValueIncludingTax": {
            "type": "number",
            "description": "Final total cost + totalTax of category and HSN code"
          },
          "receivingQuantity": {
            "type": "number",
            "description": "Summation of quantity of items in before Post-Final activity having category and HSN code"
          },
          "receivingTaxAmount": {
            "type": "number",
            "description": "Before Post-Final Total Tax Amount for this category and HSN code"
          },
          "receivingValueExcludingTax": {
            "description": "Before Post-Final total cost of category and HSN code",
            "type": "number"
          },
          "receivingValueIncludingTax": {
            "type": "number",
            "description": "Before Post-Final total cost + totalTax of category and HSN code"
          },
          "requestedQuantity": {
            "type": "number",
            "description": "Summation of quantity of items in source activity having category and HSN code"
          },
          "requestedValueExcludingTax": {
            "description": "Source Activity total cost of category and HSN code",
            "type": "number"
          },
          "requestedValueIncludingTax": {
            "type": "number",
            "description": "Source Activity total cost + totalTax of category and HSN code"
          }
        }
      }
    },
    "Discount": {
      "type": "object",
      "description": "List of Discounts",
      "properties": {
        "discountName": {
          "type": "string",
          "description": "Discount Name"
        },
        "discountType": {
          "type": "string",
          "description": "discount type to be percentage or absolute"
        },
        "discountAmount": {
          "type": "number",
          "description": "Value of the discount"
        }
      }
    },
    "Indent": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "fromBranch": {
          "type": "object",
          "description": "Details of the store that placed this order",
          "properties": {
            "branchCode": {
              "type": "string",
              "description": "From Store code"
            },
            "branchName": {
              "type": "string",
              "description": "From Store Name"
            }
          }
        },
        "indentDate": {
          "type": "string",
          "description": "The Indent Time in ISO String"
        },
        "indentBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "indentNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "sourceInfo": {
          "type": "object",
          "description": "Information from source system, if the order is imported from external system",
          "properties": {
            "sourceIndentOrder": {
              "type": "string",
              "description": "Related Indent's source order number received from the third party."
            }
          }
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Final, Cancelled"
        },
        "fulfillmentStatus": {
          "type": "string",
          "description": "Fulfillment Status as in Rista System, valid values are Pending Transfer, Fulfilled, Pending Resolution, Resolved"
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "label": {
          "type": "array",
          "description": "Array of Inventory Activity Labels"
        },
        "expectedDeliveryDate": {
          "type": "string",
          "description": "Expected Delivery Date"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "string",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "string",
          "description": "itemsAmount + taxAmount"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "roundoff value of totalAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "itemCount": {
          "type": "number",
          "description": "# of items present in this order"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "mrp": {
                "type": "number",
                "description": "Maximum Retail Price of each item"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "processedQty": {
                "type": "number",
                "description": "The Quanity That is already preocessed"
              },
              "variance": {
                "type": "number",
                "description": "Variance between quantity and processedQty"
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              }
            }
          }
        }
      }
    },
    "IndentOut": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "toBranch": {
          "type": "object",
          "description": "Details of the store to which order is placed.",
          "properties": {
            "branchCode": {
              "type": "string",
              "description": "From Store code"
            },
            "branchName": {
              "type": "string",
              "description": "From Store Name"
            }
          }
        },
        "itemCount": {
          "type": "number",
          "description": "# of items present in this order"
        },
        "indentDate": {
          "type": "string",
          "description": "The Indent Time in ISO String"
        },
        "indentBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "indentNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Final, Cancelled"
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "label": {
          "type": "array",
          "description": "Array of Inventory Activity Labels",
          "items": {
            "type": "string"
          }
        },
        "expectedDeliveryDate": {
          "type": "string",
          "description": "Expected Delivery Date"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "number",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "number",
          "description": "itemsAmount + taxAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "inventoryItemName": {
                "type": "string",
                "description": "Inventory Item Name"
              },
              "inventorySKU": {
                "type": "string",
                "description": "Inventory Item sku"
              },
              "conversion": {
                "type": "number",
                "description": "Supplier Item-Inventory Item conversion"
              },
              "categoryName": {
                "type": "string",
                "description": "Inventory Item category"
              },
              "subCategoryName": {
                "type": "string",
                "description": "Inventory Item category"
              },
              "itemType": {
                "type": "string",
                "enum": [
                  "Product",
                  "Supplies",
                  "Material"
                ],
                "description": "Inventory Item Type"
              },
              "inputTaxCredit": {
                "type": "number",
                "description": "Total Input Tax Credit"
              }
            }
          }
        },
        "sourceInfo": {
          "type": "object",
          "description": "Information from source system, if the order is imported from external system",
          "properties": {
            "sourceIndentOrder": {
              "type": "string",
              "description": "Related Indent's source order number received from the third party."
            }
          }
        }
      }
    },
    "PurchaseOrder": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier Name"
        },
        "supplierTaxId": {
          "type": "string",
          "description": "Supplier Tax Identification Number"
        },
        "poDate": {
          "type": "string",
          "description": "The PO Time in ISO String"
        },
        "poBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "poNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Final, Approved, Cancelled"
        },
        "fulfillmentStatus": {
          "type": "string",
          "description": "Fulfillment Status as in Rista System, valid values are  Fulfilled, Pending Resolution, Resolved"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "string",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "string",
          "description": "itemsAmount + taxAmount"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "roundoff value of totalAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "discounts": {
          "type": "array",
          "description": "Break up of Discounts",
          "items": {
            "$ref": "#/definitions/InventoryDiscount"
          }
        },
        "charges": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/SupplierCharges"
          }
        },
        "itemCount": {
          "type": "number",
          "description": "# of items present in this order"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "mrp": {
                "type": "number",
                "description": "Maximum Retail Price of each item"
              },
              "notes": {
                "type": "string",
                "description": "Any notes entered for this item"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "processedQty": {
                "type": "number",
                "description": "The Quanity That is already preocessed"
              },
              "variance": {
                "type": "number",
                "description": "Variance between quantity and processedQty"
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "discounts": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryDiscount"
                }
              },
              "itemTaxCode": {
                "type": "string",
                "description": "Taxcode or HSN code of the item."
              },
              "itemAmountBeforeTax": {
                "type": "number",
                "description": "quantity * (unitCost before tax taxInclusiveCase)"
              }
            }
          }
        },
        "shippingAddress": {
          "type": "object",
          "description": "Address details of the reciever of order.",
          "$ref": "#/definitions/Address"
        },
        "supplierAddress": {
          "type": "object",
          "description": "Address details of the supplier of order.",
          "$ref": "#/definitions/Address"
        },
        "billingAddress": {
          "type": "object",
          "description": "Address details of the billing branch of order. Only provided if billToBranch is configured at store level.",
          "$ref": "#/definitions/Address"
        },
        "itemsAmountBeforeTax": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes, taxInclusiveCase"
        },
        "deliveryDate": {
          "type": "string",
          "description": "Expected Delivery Date in YYYY-MM-DD format"
        },
        "notes": {
          "type": "string",
          "description": "Order Notes"
        },
        "labels": {
          "type": "array",
          "description": "Array of Inventory Activity Labels",
          "items": {
            "type": "string"
          }
        },
        "poType":{
          "type": "string",
          "description": "Type of the purchase order in [ CONTRACT, STANDARD, SERVICE ]"
        }
      }
    },
    "GRNInput": {
      "type": "object",
      "required": [
        "branchCode",
        "poNumber",
        "supplierInvoiceNumber",
        "supplierInvoiceDate",
        "isEditable",
        "status"
      ],
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "poNumber": {
          "type": "string",
          "description": "Purchase Order number against which GRN is created"
        },
        "supplierInvoiceNumber": {
          "type": "string",
          "description": "Invoice number from supplier"
        },
        "supplierInvoiceDate": {
          "type": "string",
          "description": "Invoice date in YYYY-MM-DD format"
        },
        "isEditable": {
          "type": "boolean",
          "description": "If true, GRN can be edited in UI."
        },
        "status": {
          "type": "string",
          "enum": [
            "Draft",
            "Final"
          ],
          "description": "Draft - Save GRN in draft state. Final - Save and submit the GRN."
        },
        "shipmentReference": {
          "type": "string",
          "description": "Shipment number"
        },
        "actualDeliveryDate": {
          "type": "string",
          "description": "Date when goods were received in YYYY-MM-DD format. Cannot be a future date."
        },
        "overridePOUnitCost": {
          "type": "boolean",
          "description": "If true, unit rate from items will be used instead of PO rate. Not allowed for Contract POs."
        },
        "overridePOConversion": {
          "type": "boolean",
          "description": "If true, conversion rate from items will be used instead of Supplier item conversion rate."
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "discountList": {
          "type": "array",
          "description": "Order level discounts",
          "items": {
            "type": "object",
            "required": [
              "discountCode",
              "discountType",
              "discountRate"
            ],
            "properties": {
              "discountCode": {
                "type": "string",
                "description": "Discount name"
              },
              "discountType": {
                "type": "string",
                "enum": [
                  "Absolute",
                  "Percentage"
                ],
                "description": "Flat amount or percentage of item cost"
              },
              "discountRate": {
                "type": "number",
                "description": "Discount value. If Percentage, must be between 0 and 100."
              }
            }
          }
        },
        "chargeList": {
          "type": "array",
          "description": "List of charges applicable for this order",
          "items": {
            "type": "object",
            "properties": {
              "chargeName": {
                "type": "string",
                "description": "Name of the charge"
              },
              "amount": {
                "type": "number",
                "description": "Amount of the charge. this is absolute value."
              }
            }
          }
        },
        "items": {
          "type": "array",
          "description": "Items being received. If not sent, all pending PO items are received at remaining quantity.",
          "items": {
            "type": "object",
            "required": [
              "skuCode",
              "quantity"
            ],
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku. Must be part of the PO."
              },
              "quantity": {
                "type": "number",
                "description": "Quantity received. Cannot exceed remaining PO quantity."
              },
              "unitCost": {
                "type": "number",
                "description": "Rate per unit. Required if overridePOUnitCost is true, not allowed otherwise."
              },
              "addExciseDuty": {
                "type": "number",
                "description": "Excise duty to add."
              },
              "lessExciseDuty": {
                "type": "number",
                "description": "Excise duty to deduct. Cannot exceed addExciseDuty."
              },
              "discountList": {
                "type": "array",
                "description": "Item level discounts",
                "items": {
                  "type": "object",
                  "required": [
                    "discountCode",
                    "discountType",
                    "discountRate"
                  ],
                  "properties": {
                    "discountCode": {
                      "type": "string",
                      "description": "Discount name"
                    },
                    "discountType": {
                      "type": "string",
                      "enum": [
                        "Absolute",
                        "Percentage"
                      ],
                      "description": "Flat amount or percentage of item cost"
                    },
                    "discountRate": {
                      "type": "number",
                      "description": "Discount value. If Percentage, must be between 0 and 100."
                    }
                  }
                }
              },
              "chargeList": {
                "type": "array",
                "description": "List of charges applicable for this order",
                "items": {
                  "type": "object",
                  "properties": {
                    "chargeName": {
                      "type": "string",
                      "description": "Name of the charge"
                    },
                    "amount": {
                      "type": "number",
                      "description": "Amount of the charge. this is absolute value."
                    }
                  }
                }
              },
              "taxes": {
                "type": "array",
                "description": "Item level taxes. If not sent, taxes are calculated automatically from supplier configuration.",
                "items": {
                  "$ref": "#/definitions/InventoryGRNTax"
                }
              },
              "additionalCess": {
                "type": "number",
                "description": "Additional cess value. If provided along with taxes or tcsPercentage, system-defined cess, taxes and TCS will not be applied."
              },
              "tcsPercentage": {
                "type": "number",
                "description": "Tax collected at source percentage. If provided along with taxes or additionalCess, system-defined TCS, taxes and cess will not be applied."
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry. Total batch quantity must equal item quantity.",
                "items": {
                  "type": "object",
                  "required": [
                    "quantity"
                  ],
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "Supplier batch number"
                    },
                    "manufacturingDate": {
                      "type": "string",
                      "description": "Manufacturing date in YYYY-MM-DD format"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry date in YYYY-MM-DD format. Cannot be in the past."
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch. Greater than 0 is required."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "GoodsReceivedNote": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier Name"
        },
        "supplierTaxId": {
          "type": "string",
          "description": "Supplier Tax Identification Number"
        },
        "supplierInvoiceNumber": {
          "type": "string",
          "description": "Supplier Invoice Number"
        },
        "supplierInvoiceDate": {
          "type": "string",
          "description": "Supplier Invoice Date in YYYY-MM-DD"
        },
        "grnDate": {
          "type": "string",
          "description": "The PO Time in ISO String"
        },
        "grnBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "grnNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "poNumber": {
          "type": "string",
          "description": "PO number from which GRN is created"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Final, Cancelled"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "string",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "string",
          "description": "itemsAmount + taxAmount"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "roundoff value of totalAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "discounts": {
          "type": "array",
          "description": "Break up of Discounts",
          "items": {
            "$ref": "#/definitions/InventoryDiscount"
          }
        },
        "charges": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/SupplierCharges"
          }
        },
        "itemCount": {
          "type": "number",
          "description": "# of items present in this order"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "mrp": {
                "type": "number",
                "description": "Maximum Retail Price of each item"
              },
              "notes": {
                "type": "string",
                "description": "Any notes entered for this item"
              },
              "parentActivityNotes": {
                "type": "object",
                "description": "Any notes entered for this item in the parent activity",
                "properties": {
                  "Purchase Order": {
                    "type": "string",
                    "description": "Any notes entered for this item"
                  }
                }
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "inputTaxCredit": {
                "type": "number",
                "description": "Total Input Tax Credit"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "inventoryItemName": {
                "type": "string",
                "description": "Inventory Item Name"
              },
              "inventorySKU": {
                "type": "string",
                "description": "Inventory Item SKU"
              },
              "inventoryItemQuantity": {
                "type": "number",
                "description": "Inventory Item Quantity after Conversion"
              },
              "conversion": {
                "type": "number",
                "description": "Conversion rate between item quantity and Inventory Item Quantity"
              },
              "batches": {
                "type": "array",
                "description": "Breaup of quantity with batch/expiry information",
                "items": {
                  "type": "object",
                  "description": "Information about each batch",
                  "required": ["quantity"],
                  "properties": {
                    "quantity": {
                      "type": "number",
                      "description": "quantity of this batch"
                    },
                    "inventoryItemQuantity": {
                      "type": "number",
                      "description": "Inventory Item quantity after conversion of this batch"
                    },
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expir date in YYYY-MM-DD format"
                    },
                    "mfgDate": {
                      "type": "string",
                      "description": "Manufacturing date in YYYY-MM-DD format"
                    }
                  }
                }
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "discounts": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryDiscount"
                }
              },
              "itemTaxCode": {
                "type": "string",
                "description": "Taxcode or HSN code of the item."
              },
              "itemAmountBeforeTax": {
                "type": "number",
                "description": "quantity * (unitCost before tax taxInclusiveCase)"
              },
              "charges": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/SupplierCharges"
                }
              }
            }
          }
        },
        "shippingAddress": {
          "type": "object",
          "description": "Address details of the reciever of order.",
          "$ref": "#/definitions/Address"
        },
        "supplierAddress": {
          "type": "object",
          "description": "Address details of the supplier of order.",
          "$ref": "#/definitions/Address"
        },
        "billingAddress": {
          "type": "object",
          "description": "Address details of the billing branch of order. Only provided if billToBranch is configured at store level.",
          "$ref": "#/definitions/Address"
        },
        "itemsAmountBeforeTax": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes, taxInclusiveCase"
        }
      }
    },
    "PostFinalGoodsReceivedNote": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier Name"
        },
        "supplierTaxId": {
          "type": "string",
          "description": "Supplier Tax Identification Number"
        },
        "supplierInvoiceNumber": {
          "type": "string",
          "description": "Supplier Invoice Number"
        },
        "supplierInvoiceDate": {
          "type": "string",
          "description": "Supplier Invoice Date in YYYY-MM-DD"
        },
        "finalReceivingDate": {
          "type": "string",
          "description": "The Final Activty Time in ISO String"
        },
        "receivingDate": {
          "type": "string",
          "description": "The Activity Time of parent GRN in ISO String"
        },
        "billPassingDate": {
          "type": "string",
          "description": "Business Day when grn approved in YYYY-MM-DD format"
        },
        "finalReceivingNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System to the post final activity"
        },
        "receivingNumber": {
          "type": "string",
          "description": "GRN number of activity (parent grn) from which Post Final GRN approved"
        },
        "requestNumber": {
          "type": "string",
          "description": "PO number from which GRN is created"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Final, Cancelled"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "string",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "string",
          "description": "itemsAmount + taxAmount"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "roundoff value of totalAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "discounts": {
          "type": "array",
          "description": "Break up of Discounts",
          "items": {
            "$ref": "#/definitions/InventoryDiscount"
          }
        },
        "charges": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/SupplierCharges"
          }
        },
        "itemCount": {
          "type": "number",
          "description": "# of items present in this order"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "notes": {
                "type": "string",
                "description": "Any notes entered for this item"
              },
              "parentActivityNotes": {
                "type": "object",
                "description": "Any notes entered for this item in the parent activity",
                "properties": {
                  "Purchase Order": {
                    "type": "string",
                    "description": "Any notes entered for this item"
                  }
                }
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "inputTaxCredit": {
                "type": "number",
                "description": "Total Input Tax Credit"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "inventoryItemName": {
                "type": "string",
                "description": "Inventory Item Name"
              },
              "inventorySKU": {
                "type": "string",
                "description": "Inventory Item SKU"
              },
              "inventoryItemQuantity": {
                "type": "number",
                "description": "Inventory Item Quantity after Conversion"
              },
              "conversion": {
                "type": "number",
                "description": "Conversion rate between item quantity and Inventory Item Quantity"
              },
              "batches": {
                "type": "array",
                "description": "Breaup of quantity with batch/expiry information",
                "items": {
                  "type": "object",
                  "description": "Information about each batch",
                  "required": ["quantity"],
                  "properties": {
                    "quantity": {
                      "type": "number",
                      "description": "quantity of this batch"
                    },
                    "inventoryItemQuantity": {
                      "type": "number",
                      "description": "Inventory Item quantity after conversion of this batch"
                    },
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expir date in YYYY-MM-DD format"
                    },
                    "mfgDate": {
                      "type": "string",
                      "description": "Manufacturing date in YYYY-MM-DD format"
                    }
                  }
                }
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "discounts": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryDiscount"
                }
              },
              "itemTaxCode": {
                "type": "string",
                "description": "Taxcode or HSN code of the item."
              },
              "itemAmountBeforeTax": {
                "type": "number",
                "description": "quantity * (unitCost before tax taxInclusiveCase)"
              },
              "charges": {
                "type": "array",
                "description": "Item level charges",
                "items": {
                  "$ref": "#/definitions/SupplierCharges"
                }
              }
            }
          }
        },
        "hsnCategories": {
          "type": "array",
          "description": "Summary of cost, taxes, discounts according to HSN-categories. Also summary amount of requested and receiving activity.",
          "items": {
            "$ref": "#/definitions/HsnCategories"
          }
        },
        "shippingAddress": {
          "type": "object",
          "description": "Address details of the reciever of order.",
          "$ref": "#/definitions/Address"
        },
        "supplierAddress": {
          "type": "object",
          "description": "Address details of the supplier of order.",
          "$ref": "#/definitions/Address"
        },
        "billingAddress": {
          "type": "object",
          "description": "Address details of the billing branch of order. Only provided if billToBranch is configured at store level.",
          "$ref": "#/definitions/Address"
        },
        "itemsAmountBeforeTax": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes, taxInclusiveCase"
        }
      }
    },
    "Shrinkage": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "shrinkageDate": {
          "type": "string",
          "description": "The Shrinkage Time in ISO String"
        },
        "shrinkageBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "shrinkageNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid value Final"
        },
        "totalAmount": {
          "type": "string",
          "description": "Total Shrinkage Amount"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "roundoff value of totalAmount"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "label": {
                "type": "string",
                "description": "Reason for shrinkage"
              },
              "parentItemName": {
                "type": "string",
                "description": "The product that caused the shrinkage of this material"
              },
              "parentSkuCode": {
                "type": "string",
                "description": "The pdouct sku that cause the shrinkage of this material"
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry.",
                "items": {
                  "type": "object",
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "Adjustment": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "adjustmentDate": {
          "type": "string",
          "description": "The Adjustment Time in ISO String"
        },
        "adjustmentBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "adjustmentOrderNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid value Final"
        },
        "totalAmount": {
          "type": "number",
          "description": "Total Adjustment Amount"
        },
        "totalTaxAmount": {
          "type": "number",
          "description": "Total tax amount."
        },
        "roundOffAmount": {
          "type": "number",
          "description": "Round off amount."
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "category": {
                "type": "string",
                "description": "Item category"
              },
              "subCategory": {
                "type": "string",
                "description": "Item subcategory"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "label": {
                "type": "string",
                "description": "Reason for Adjustment"
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry.",
                "items": {
                  "type": "object",
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "Transfer": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "businessBranchCode": {
          "type": "string",
          "description": "Business Branch Code"
        },
        "toBranch": {
          "type": "object",
          "description": "Details of the store to which the transfer is intended",
          "properties": {
            "branchCode": {
              "type": "string",
              "description": "To store code"
            },
            "branchName": {
              "type": "string",
              "description": "To store Name"
            },
            "businessBranchCode": {
              "type": "string",
              "description": "To Business Branch Code"
            }
          }
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier Name"
        },
        "supplierTaxId": {
          "type": "string",
          "description": "Supplier Tax Identification Number"
        },
        "indentOrderNumber": {
          "type": "string",
          "description": "Parent Indent order number"
        },
        "transferDate": {
          "type": "string",
          "description": "The Transfer Time in ISO String"
        },
        "transferBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "transferNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "transferInvoiceNumber": {
          "type": "string",
          "description": "Present, if separate invoice number generate for regulatory purposes"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Draft, Final"
        },
        "fulfillmentStatus": {
          "type": "string",
          "description": "Fulfillment Status as in Rista System, valid values are Goods In Transit, Fulfilled, Pending Resolution, Resolved"
        },
        "fulfillmentDate": {
          "type": "string",
          "description": "Date at which Activity status changed to Fulfilled."
        },
        "fulfillmentBusinessDay": {
          "type": "string",
          "description": "Business Day at which Activity status changed to Fulfilled."
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "label": {
          "type": "array",
          "description": "Array of Inventory Activity Labels"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "number",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "number",
          "description": "itemsAmount + taxAmount"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "roundoff value of totalAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "discountList": {
          "type": "array",
          "description": "Discount that are applied",
          "items": {
            "$ref": "#/definitions/Discount"
          }
        },
        "charges": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/SupplierCharges"
          }
        },
        "itemCount": {
          "type": "number",
          "description": "# of items present in this order"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "mrp": {
                "type": "number",
                "description": "Maximum Retail Price of each item"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "processedQty": {
                "type": "number",
                "description": "The Quanity That is already preocessed"
              },
              "variance": {
                "type": "number",
                "description": "Variance between quantity and processedQty"
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "discountList": {
                "type": "array",
                "description": "Discount that are applied",
                "items": {
                  "$ref": "#/definitions/Discount"
                }
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry.",
                "items": {
                  "type": "object",
                  "required": [
                    "quantity"
                  ],
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "supplier batch number"
                    }
                  }
                }
              },
              "processedBatches": {
                "type": "array",
                "description": "Break up by batch/expiry. Indicates batches that were accepted In the Transfer In",
                "items": {
                  "type": "object",
                  "required": [
                    "quantity"
                  ],
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "supplier batch number"
                    }
                  }
                }
              },
              "itemTaxCode": {
                "type": "string",
                "description": "Taxcode or HSN code of the item."
              },
              "itemAmountBeforeTax": {
                "type": "number",
                "description": "quantity * (unitCost before tax taxInclusiveCase)"
              },
              "charges": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/SupplierCharges"
                }
              }
            }
          }
        },
        "sourceInfo": {
          "type": "object",
          "description": "Information from source system, if the order is imported from external system",
          "properties": {
            "orderDate": {
              "type": "string",
              "description": "order date in ISO format"
            },
            "orderNumber": {
              "type": "string",
              "description": "Order Number in Source System"
            },
            "sourceIndentOrder": {
              "type": "string",
              "description": "Related Indent's source order number received from the third party."
            }
          }
        },
        "shippingAddress": {
          "type": "object",
          "description": "Address details of the reciever of order.",
          "$ref": "#/definitions/Address"
        },
        "supplierAddress": {
          "type": "object",
          "description": "Address details of the supplier of order.",
          "$ref": "#/definitions/Address"
        },
        "billingAddress": {
          "type": "object",
          "description": "Address details of the billing branch of order. Only provided if billToBranch is configured at store level.",
          "$ref": "#/definitions/Address"
        },
        "itemsAmountBeforeTax": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes, taxInclusiveCase"
        }
      }
    },
    "TransferIn": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "businessBranchCode": {
          "type": "string",
          "description": "Business Branch Code"
        },
        "fromBranch": {
          "type": "object",
          "description": "Details of the store from which the transfer is initiated",
          "properties": {
            "branchCode": {
              "type": "string",
              "description": "From store code"
            },
            "branchName": {
              "type": "string",
              "description": "From store Name"
            },
            "businessBranchCode": {
              "type": "string",
              "description": "From Business Branch Code"
            }
          }
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier Name"
        },
        "supplierTaxId": {
          "type": "string",
          "description": "Supplier Tax Identification Number"
        },
        "indentOrderNumber": {
          "type": "string",
          "description": "Parent Indent order number"
        },
        "transferDate": {
          "type": "string",
          "description": "The Transfer Time in ISO String"
        },
        "transferBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "transferNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "transferInvoiceNumber": {
          "type": "string",
          "description": "Present, if separate invoice number generate for regulatory purposes"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Draft, Final"
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "label": {
          "type": "array",
          "description": "Array of Inventory Activity Labels"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "number",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "number",
          "description": "itemsAmount + taxAmount"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "roundoff value of totalAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "discountList": {
          "type": "array",
          "description": "Discount that are applied",
          "items": {
            "$ref": "#/definitions/Discount"
          }
        },
        "charges": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/SupplierCharges"
          }
        },
        "itemCount": {
          "type": "number",
          "description": "# of items present in this order"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "originalQty": {
                "type": "number",
                "description": "Item Quantity from transfer out"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "mrp": {
                "type": "number",
                "description": "Maximum Retail Price of each item"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "processedQty": {
                "type": "number",
                "description": "The Quanity That is already preocessed"
              },
              "variance": {
                "type": "number",
                "description": "Variance between quantity and processedQty"
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "discountList": {
                "type": "array",
                "description": "Discount that are applied",
                "items": {
                  "$ref": "#/definitions/Discount"
                }
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry.",
                "items": {
                  "type": "object",
                  "required": [
                    "quantity"
                  ],
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "supplier batch number"
                    }
                  }
                }
              },
              "originalBatches": {
                "type": "array",
                "description": "Break up by batch/expiry. Indicates batches that were accepted In the Transfer In",
                "items": {
                  "type": "object",
                  "required": [
                    "quantity"
                  ],
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "supplier batch number"
                    }
                  }
                }
              },
              "itemTaxCode": {
                "type": "string",
                "description": "Taxcode or HSN code of the item."
              },
              "itemAmountBeforeTax": {
                "type": "number",
                "description": "quantity * (unitCost before tax taxInclusiveCase)"
              },
              "charges": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/SupplierCharges"
                }
              }
            }
          }
        },
        "sourceInfo": {
          "type": "object",
          "description": "Information from source system, if the order is imported from external system",
          "properties": {
            "orderDate": {
              "type": "string",
              "description": "order date in ISO format"
            },
            "orderNumber": {
              "type": "string",
              "description": "Order Number in Source System"
            },
            "sourceIndentOrder": {
              "type": "string",
              "description": "Related Indent's source order number received from the third party."
            }
          }
        },
        "shippingAddress": {
          "type": "object",
          "description": "Address details of the reciever of order.",
          "$ref": "#/definitions/Address"
        },
        "supplierAddress": {
          "type": "object",
          "description": "Address details of the supplier of order.",
          "$ref": "#/definitions/Address"
        },
        "billingAddress": {
          "type": "object",
          "description": "Address details of the billing branch of order. Only provided if billToBranch is configured at store level.",
          "$ref": "#/definitions/Address"
        },
        "itemsAmountBeforeTax": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes, taxInclusiveCase"
        }
      }
    },
    "PostFinalTransferIn": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "businessBranchCode": {
          "type": "string",
          "description": "Business Branch Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "toBranch": {
          "type": "object",
          "description": "Details of the store to which the transfer is intended",
          "properties": {
            "branchCode": {
              "type": "string",
              "description": "From store code"
            },
            "branchName": {
              "type": "string",
              "description": "From store Name"
            },
            "businessBranchCode": {
              "type": "string",
              "description": "From Business Branch Code"
            }
          }
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier Name"
        },
        "supplierTaxId": {
          "type": "string",
          "description": "Supplier Tax Identification Number"
        },
        "requestNumber": {
          "type": "string",
          "description": "Parent Indent order number"
        },
        "finalReceivingDate": {
          "type": "string",
          "description": "The Final Transfer Time in ISO String"
        },
        "receivingDate": {
          "type": "string",
          "description": "The Activity Time of parent Transfer In in ISO String"
        },
        "billPassingDate": {
          "type": "string",
          "description": "Business Day when approved in YYYY-MM-DD format"
        },
        "finalReceivingNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System to the post final activity"
        },
        "receivingInvoiceNumber": {
          "type": "string",
          "description": "Present, if separate invoice number generate for regulatory purposes"
        },
        "receivingNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System of parent Transfer In"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Draft, Final"
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "label": {
          "type": "array",
          "description": "Array of Inventory Activity Labels"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "number",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "number",
          "description": "itemsAmount + taxAmount"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "roundoff value of totalAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "discountList": {
          "type": "array",
          "description": "Discount that are applied",
          "items": {
            "$ref": "#/definitions/InventoryDiscount"
          }
        },
        "charges": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/SupplierCharges"
          }
        },
        "itemCount": {
          "type": "number",
          "description": "# of items present in this order"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "discountList": {
                "type": "array",
                "description": "Discount that are applied",
                "items": {
                  "$ref": "#/definitions/InventoryDiscount"
                }
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry.",
                "items": {
                  "type": "object",
                  "required": ["quantity"],
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "supplier batch number"
                    }
                  }
                }
              },
              "itemTaxCode": {
                "type": "string",
                "description": "Taxcode or HSN code of the item."
              },
              "itemAmountBeforeTax": {
                "type": "number",
                "description": "quantity * (unitCost before tax taxInclusiveCase)"
              },
              "charges": {
                "type": "array",
                "description": "Item level charges",
                "items": {
                  "$ref": "#/definitions/SupplierCharges"
                }
              }
            }
          }
        },
        "hsnCategories": {
          "type": "array",
          "description": "Summary of cost, taxes, discounts according to HSN-categories. Also summary amount of requested and receiving activity.",
          "items": {
            "$ref": "#/definitions/HsnCategories"
          }
        },
        "sourceInfo": {
          "type": "object",
          "description": "Information from source system, if the order is imported from external system",
          "properties": {
            "orderDate": {
              "type": "string",
              "description": "order date in ISO format"
            },
            "orderNumber": {
              "type": "string",
              "description": "Order Number in Source System"
            }
          }
        },
        "shippingAddress": {
          "type": "object",
          "description": "Address details of the reciever of order.",
          "$ref": "#/definitions/Address"
        },
        "supplierAddress": {
          "type": "object",
          "description": "Address details of the supplier of order.",
          "$ref": "#/definitions/Address"
        },
        "billingAddress": {
          "type": "object",
          "description": "Address details of the billing branch of order. Only provided if billToBranch is configured at store level.",
          "$ref": "#/definitions/Address"
        },
        "itemsAmountBeforeTax": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes, taxInclusiveCase"
        }
      }
    },
    "TransferReturnOut": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "toBranch": {
          "type": "object",
          "description": "Details of the store to which the transfer return is intended",
          "properties": {
            "branchCode": {
              "type": "string",
              "description": "To Store Code"
            },
            "branchName": {
              "type": "string",
              "description": "To Store Name"
            }
          }
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier Name"
        },
        "supplierTaxId": {
          "type": "string",
          "description": "Supplier Tax Identification Number"
        },
        "transferReturnDate": {
          "type": "string",
          "description": "The Transfer Return Time in ISO String"
        },
        "transferReturnBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD Format"
        },
        "transferNumber": {
          "type": "number",
          "description": "Transfer Number against which this transfer return is initiated"
        },
        "transferReturnNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "transferReturnInvoiceNumber": {
          "type": "string",
          "description": "Present, if separate invoice number generate for regulatory purposes"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Draft, Final"
        },
        "fulfillmentStatus": {
          "type": "string",
          "description": "Fulfillment Status as in Rista System, valid values are Goods In Transit, Fulfilled, Pending Resolution, Resolved"
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "label": {
          "type": "array",
          "description": "Array of Inventory Activity Labels"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "number",
          "description": "Sum of all items taxes"
        },
        "totalAmount": {
          "type": "number",
          "description": "itemsAmount + taxAmount"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "Roundoff value of totalAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "charges": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/SupplierCharges"
          }
        },
        "itemCount": {
          "type": "number",
          "description": "# of items present in this order"
        },
        "items": {
          "type": "array",
          "description": "Items in this Order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item SKU"
              },
              "itemName": {
                "type": "string",
                "description": "Item Name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per Unit"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "processedQty": {
                "type": "number",
                "description": "The Quanity That is already preocessed"
              },
              "variance": {
                "type": "number",
                "description": "Variance between quantity and processedQty"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "discountList": {
                "type": "array",
                "description": "Discount that are applied",
                "items": {
                  "$ref": "#/definitions/InventoryDiscount"
                }
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry.",
                "items": {
                  "type": "object",
                  "required": [
                    "quantity"
                  ],
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "Supplier batch number"
                    }
                  }
                }
              },
              "itemTaxCode": {
                "type": "string",
                "description": "Taxcode or HSN code of the item."
              },
              "itemAmountBeforeTax": {
                "type": "number",
                "description": "quantity * (unitCost before tax taxInclusiveCase)"
              },
              "charges": {
                "type": "array",
                "description": "Item level charges",
                "items": {
                  "$ref": "#/definitions/SupplierCharges"
                }
              }
            }
          }
        },
        "sourceInfo": {
          "type": "object",
          "description": "Information from source system, if the order is imported from external system",
          "properties": {
            "orderNumber": {
              "type": "string",
              "description": "Order Number in Source System"
            }
          }
        },
        "shippingAddress": {
          "type": "object",
          "description": "Address details of the reciever of order.",
          "$ref": "#/definitions/Address"
        },
        "supplierAddress": {
          "type": "object",
          "description": "Address details of the supplier of order.",
          "$ref": "#/definitions/Address"
        },
        "billingAddress": {
          "type": "object",
          "description": "Address details of the billing branch of order. Only provided if billToBranch is configured at store level.",
          "$ref": "#/definitions/Address"
        },
        "itemsAmountBeforeTax": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes, taxInclusiveCase"
        }
      }
    },
    "PurchaseReturn": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier Name"
        },
        "supplierTaxId": {
          "type": "string",
          "description": "Supplier Tax Identification Number"
        },
        "purchaseReturnDate": {
          "type": "string",
          "description": "The Transfer Time in ISO String"
        },
        "purchaseReturnBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "purchaseReturnNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Draft, Final"
        },
        "fulfillmentStatus": {
          "type": "string",
          "description": "Fulfillment Status as in Rista System, valid values are Goods In Transit, Fulfilled, Pending Resolution, Resolved"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "number",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "number",
          "description": "itemsAmount + taxAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "charges": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/SupplierCharges"
          }
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "mrp": {
                "type": "number",
                "description": "Maximum Retail Price of each item"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "processedQty": {
                "type": "number",
                "description": "The Quanity That is already preocessed"
              },
              "variance": {
                "type": "number",
                "description": "Variance between quantity and processedQty"
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry.",
                "items": {
                  "type": "object",
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "supplier batch number"
                    }
                  }
                }
              },
              "itemTaxCode": {
                "type": "string",
                "description": "Taxcode or HSN code of the item."
              }
            }
          }
        },

        "shippingAddress": {
          "type": "object",
          "description": "Address details of the reciever of order.",
          "$ref": "#/definitions/Address"
        },
        "supplierAddress": {
          "type": "object",
          "description": "Address details of the supplier of order.",
          "$ref": "#/definitions/Address"
        },
        "billingAddress": {
          "type": "object",
          "description": "Address details of the billing branch of order. Only provided if billToBranch is configured at store level.",
          "$ref": "#/definitions/Address"
        }
      }
    },
    "TransferReturn": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "toBranch": {
          "type": "object",
          "description": "Details of the store to which the transfer return is intended",
          "properties": {
            "branchCode": {
              "type": "string",
              "description": "From store code"
            },
            "branchName": {
              "type": "string",
              "description": "From store Name"
            }
          }
        },
        "transferReturnDate": {
          "type": "string",
          "description": "The Transfer Time in ISO String"
        },
        "transferReturnBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "transferReturnNumber": {
          "type": "string",
          "description": "Unique Number Assigned by Rista System"
        },
        "transferInvoiceNumber": {
          "type": "string",
          "description": "Present, if separate invoice number generate for regulatory purposes"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Draft, Final"
        },
        "fulfillmentStatus": {
          "type": "string",
          "description": "Fulfillment Status as in Rista System, valid values are Goods In Transit, Fulfilled, Pending Resolution, Resolved"
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "label": {
          "type": "array",
          "description": "Array of Inventory Activity Labels"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "number",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "number",
          "description": "itemsAmount + taxAmount"
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "charges": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/SupplierCharges"
          }
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "mrp": {
                "type": "number",
                "description": "Maximum Retail Price of each item"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "Is unitCost includes tax"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "processedQty": {
                "type": "number",
                "description": "The Quanity That is already preocessed"
              },
              "variance": {
                "type": "number",
                "description": "Variance between quantity and processedQty"
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry.",
                "items": {
                  "type": "object",
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "supplier batch number"
                    }
                  }
                }
              },
              "itemTaxCode": {
                "type": "string",
                "description": "Taxcode or HSN code of the item."
              }
            }
          }
        },

        "shippingAddress": {
          "type": "object",
          "description": "Address details of the reciever of order.",
          "$ref": "#/definitions/Address"
        },
        "supplierAddress": {
          "type": "object",
          "description": "Address details of the supplier of order.",
          "$ref": "#/definitions/Address"
        },
        "billingAddress": {
          "type": "object",
          "description": "Address details of the billing branch of order. Only provided if billToBranch is configured at store level.",
          "$ref": "#/definitions/Address"
        }
      }
    },
    "Audit": {
      "type": "object",
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Store Name"
        },
        "auditDateTime": {
          "type": "string",
          "description": "The Audit Time in ISO String"
        },
        "auditBusinessDay": {
          "type": "string",
          "description": "Business Day in YYYY-MM-DD format"
        },
        "auditOrderNumber": {
          "type": "string",
          "description": "Order number of the audit"
        },
        "status": {
          "type": "string",
          "description": "Status in Rista System, valid values Draft, Final"
        },
        "netAmount": {
          "type": "number",
          "description": "totalAmount + totalTaxAmount"
        },
        "totalAmount": {
          "type": "number",
          "description": "total amount of all items and charges in this activity"
        },
        "totalTaxAmount": {
          "type": "number",
          "description": "sum of all items taxes"
        },
        "roundOffAmount": {
          "type": "number",
          "description": "total amount after rounding off"
        },
        "label": {
          "type": "array",
          "description": "array inventory activity label",
          "items": {
            "type": "string",
            "description": "inventory activity label"
          }
        },
        "notes": {
          "type": "string",
          "description": "Any notes captured during activity"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Inventory Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Inventory Item name"
              },
              "categoryName": {
                "type": "string",
                "description": "Category name of the item"
              },
              "subCategoryName": {
                "type": "string",
                "description": "sub-category name of the item"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "auditQuantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "unit cost of the item."
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost + taxAmount"
              },
              "totalTax": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "variance": {
                "type": "number",
                "description": "For audit, it is itemQty - systemQty."
              },
              "overridden": {
                "type": "boolean",
                "description": "flag if user has entered overridden cost"
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry.",
                "items": {
                  "type": "object",
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "itemQty": {
                      "type": "number",
                      "description": "item batch quantity"
                    },
                    "supplierItemName": {
                      "type": "string",
                      "description": "supplier item name"
                    },
                    "supplierMeasuringUnit": {
                      "type": "string",
                      "description": "supplier measuring unit"
                    },
                    "amount": {
                      "type": "number",
                      "description": "item amount of batch"
                    },
                    "variance": {
                      "type": "number",
                      "description": "itemQty - systemQty"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "conversion": {
                      "type": "number",
                      "description": "conversion of the item batch"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "TransferInput": {
      "type": "object",
      "required": [
        "branchCode",
        "toBranch",
        "itemsAmount",
        "totalAmount",
        "sourceInfo"
      ],
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "toBranch": {
          "type": "object",
          "description": "Details of the store to which the transfer is intended",
          "required": [
            "branchCode"
          ],
          "properties": {
            "branchCode": {
              "type": "string",
              "description": "From store code"
            }
          }
        },
        "indentNumber": {
          "type": "number",
          "description": "Indent Number for which this transfer is initiated"
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "itemsAmount": {
          "type": "number",
          "description": "Sum of all Items amount, before taxes"
        },
        "taxAmount": {
          "type": "string",
          "description": "sum of all items taxes"
        },
        "totalAmount": {
          "type": "string",
          "description": "itemsAmount + taxAmount"
        },
        "useTOUnitCost": {
          "type": "boolean",
          "description": "If true, the Transfer In will use the same unit cost as the corresponding Transfer Out."
        },
        "taxes": {
          "type": "array",
          "description": "Break up of taxes",
          "items": {
            "$ref": "#/definitions/InventoryTax"
          }
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "required": [
              "skuCode",
              "itemName",
              "measuringUnit",
              "quantity",
              "unitCost",
              "itemAmount",
              "totalAmount"
            ],
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "unitCost": {
                "type": "number",
                "description": "Item Cost per unit"
              },
              "itemAmount": {
                "type": "number",
                "description": "quantity * unitCost"
              },
              "taxAmount": {
                "type": "number",
                "description": "Tax Amount for this item"
              },
              "totalAmount": {
                "type": "number",
                "description": "itemAmount + taxAmount"
              },
              "taxes": {
                "type": "array",
                "description": "Break up of taxes",
                "items": {
                  "$ref": "#/definitions/InventoryTax"
                }
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry. Required if item is perishable",
                "items": {
                  "type": "object",
                  "required": [
                    "batchNumber",
                    "expiryDate",
                    "quantity"
                  ],
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch. Greater than 0 is required"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "supplier batch number"
                    }
                  }
                }
              },
              "extras": {
                "description": "This is only valid for integrated suppliers. For more imformation please contact us."
              }
            }
          }
        },
        "sourceInfo": {
          "type": "object",
          "description": "Information from source system, if the order is imported from external system",
          "required": [
            "orderDate",
            "orderNumber"
          ],
          "properties": {
            "orderDate": {
              "type": "string",
              "description": "order date in ISO format"
            },
            "orderNumber": {
              "type": "string",
              "description": "Order Number in Source System"
            }
          }
        }
      }
    },
    "TransferReturnInput": {
      "type": "object",
      "required": [
        "branchCode",
        "toBranch",
        "sourceInfo"
      ],
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "toBranch": {
          "type": "object",
          "description": "Details of the store to which the transfer return is intended",
          "required": [
            "branchCode"
          ],
          "properties": {
            "branchCode": {
              "type": "string",
              "description": "To store code"
            }
          }
        },
        "transferNumber": {
          "type": "number",
          "description": "Transfer In Number for which this transfer return is initiated"
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "required": [
              "skuCode",
              "itemName",
              "measuringUnit",
              "quantity"
            ],
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "batches": {
                "type": "array",
                "description": "Break up by batch/expiry. Required if item is perishable",
                "items": {
                  "type": "object",
                  "required": [
                    "batchNumber",
                    "expiryDate",
                    "quantity"
                  ],
                  "properties": {
                    "batchNumber": {
                      "type": "string",
                      "description": "Batch number"
                    },
                    "expiryDate": {
                      "type": "string",
                      "description": "Expiry Date in YYYY-MM-DD format"
                    },
                    "quantity": {
                      "type": "number",
                      "description": "Quantity for this batch. Greater than 0 is required"
                    },
                    "supplierBatchNumber": {
                      "type": "string",
                      "description": "Supplier batch number"
                    }
                  }
                }
              }
            }
          }
        },
        "sourceInfo": {
          "type": "object",
          "description": "Information from source system, if the order is imported from external system",
          "required": [
            "orderNumber"
          ],
          "properties": {
            "orderNumber": {
              "type": "string",
              "description": "Order Number in Source System"
            }
          }
        }
      }
    },
    "PurchaseOrderInput": {
      "type": "object",
      "required": [
        "branchCode",
        "supplierCode",
        "poType",
        "items",
        "status",
        "deliveryDate"
      ],
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code to which the purchase order is intended"
        },
        "poType": {
          "type": "string",
          "enum": [
            "CONTRACT",
            "STANDARD",
            "SERVICE"
          ],
          "description": "STANDARD- Purchase order for regular items. CONTRACT- Purchase order for contract items. SERVICE- Purchase order for service items."
        },
        "contractCode": {
          "type": "string",
          "description": "Contract Code for contract purchase order. Required if poType is CONTRACT."
        },
        "status": {
          "type": "string",
          "enum": [
            "Draft",
            "Approved"
          ],
          "description": "Draft-Save Purchase Order in draft state. Approved-Save and approve the purchase order out."
        },
        "label": {
          "type": "array",
          "description": "Array of Inventory Activity Labels",
          "items": {
            "type": "string"
          }
        },
        "deliveryDate": {
          "type": "string",
          "description": "Date in YYYY-MM-DD format."
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        },
        "discountList": {
          "type": "array",
          "description": "List of discounts applicable for this order",
          "items": {
            "type": "object",
            "properties": {
              "discountCode": {
                "type": "string",
                "description": "Code of the discount"
              },
              "discountType": {
                "type": "string",
                "enum": [
                  "Percentage",
                  "Absolute"
                ],
                "description": "Type of discount, valid values are Percentage and Absolute"
              },
              "discountRate": {
                "type": "number",
                "description": "Rate of discount. If discountType is Percentage, this is percentage value, if discountType is Absolute, this is absolute value."
              }
            }
          }
        },
        "chargeList": {
          "type": "array",
          "description": "List of charges applicable for this order",
          "items": {
            "type": "object",
            "properties": {
              "chargeName": {
                "type": "string",
                "description": "Name of the charge"
              },
              "amount": {
                "type": "number",
                "description": "Amount of the charge. this is absolute value."
              }
            }
          }
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "required": [
              "skuCode",
              "quantity"
            ],
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item Sku code"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              },
              "discountList": {
                "type": "array",
                "description": "List of discounts applicable for this item",
                "items": {
                  "type": "object",
                  "properties": {
                    "discountCode": {
                      "type": "string",
                      "description": "Code of the discount"
                    },
                    "discountType": {
                      "type": "string",
                      "enum": [
                        "Percentage",
                        "Absolute"
                      ],
                      "description": "Type of discount, valid values are Percentage and Absolute"
                    },
                    "discountRate": {
                      "type": "number",
                      "description": "Rate of discount. If discountType is Percentage, this is percentage value, if discountType is Absolute, this is absolute value."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "IndentInput": {
      "type": "object",
      "required": [
        "branchCode",
        "branchName",
        "supplierCode",
        "items",
        "status",
        "deliveryDate"
      ],
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store Code"
        },
        "branchName": {
          "type": "string",
          "description": "Name of the store from which the indent is intended"
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code to which the indent is intended"
        },
        "items": {
          "type": "array",
          "description": "Items in this order",
          "items": {
            "type": "object",
            "required": [
              "skuCode",
              "itemName",
              "measuringUnit",
              "quantity"
            ],
            "description": "Item Details",
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Item sku"
              },
              "itemName": {
                "type": "string",
                "description": "Item name"
              },
              "measuringUnit": {
                "type": "string",
                "description": "Item Measuring Unit"
              },
              "quantity": {
                "type": "number",
                "description": "Item Quantity"
              }
            }
          }
        },
        "status": {
          "type": "string",
          "enum": [
            "Draft",
            "Final"
          ],
          "description": "Draft-Save Indent in draft state. Final-Save and submit the indent out."
        },
        "label": {
          "type": "array",
          "description": "Array of Inventory Activity Labels",
          "items": {
            "type": "string"
          }
        },
        "sourceInfo": {
          "type": "object",
          "description": "Information from source system, if the order is imported from external system",
          "properties": {
            "sourceIndentOrder": {
              "type": "string",
              "description": "Related Indent's source order number received from the third party."
            }
          }
        },
        "deliveryDate": {
          "type": "string",
          "description": "Date in YYYY-MM-DD or Date-Time in YYYY-MM-DDThh:mm format."
        },
        "notes": {
          "type": "string",
          "description": "Any notes entered for this order"
        }
      }
    },
    "SupplierData": {
      "type": "object",
      "properties": {
        "supplierType": {
          "type": "string",
          "description": "Type of Supplier"
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier Name"
        },
        "sourceStoreCode": {
          "type": "string",
          "description": "Store Code of the Managed By Store"
        },
        "status": {
          "type": "string",
          "description": "Supplier Status."
        },
        "taxId": {
          "type": "string",
          "description": "Tax Identification Number"
        },
        "address": {
          "type": "object",
          "description": "Supplier address.",
          "$ref": "#/definitions/Address"
        },
        "buyerStoreCodes": {
          "type": "array",
          "description": "Store Codes of the Buyer Stores",
          "items": {
            "type": "string",
            "description": "Buyer Store Codes"
          }
        },
        "contactName": {
          "type": "string",
          "description": "Contact Name of Supplier"
        },
        "title": {
          "type": "string",
          "description": "Title of the contact person"
        },
        "phoneNumber": {
          "type": "string",
          "description": "Phone Number of Supplier"
        },
        "email": {
          "type": "string",
          "description": "Email"
        },
        "taxStateCode": {
          "type": "string",
          "description": "state code of supplier to support GST"
        },
        "terms": {
          "type": "string",
          "description": "terms and conditions"
        },
        "skipPOApproval": {
          "type": "boolean",
          "description": "Applicable for external supplier, this flag bypasses approve functionality for PO and price override for GRN items."
        },
        "skipContractPOApproval": {
          "type": "boolean",
          "description": "Applicable for external supplier, this flag bypasses approve functionality for Contracts PO's."
        },
        "postGRNwithAttach": {
          "type": "boolean",
          "description": "If true, attachment required before submitting the GRN"
        },
        "isNegotiable": {
          "type": "boolean",
          "description": "Indicates if the price is negotiable. Only if true, allow override of price in PO/GRN"
        },
        "ignoreInvoiceNumber": {
          "type": "boolean",
          "description": "Indicates if the supplier invoice number's validation can be skipped in GRN."
        },
        "description": {
          "type": "string",
          "description": "Description"
        },
        "additionalInfo": {
          "title" : "AdditionalInfo",
          "type": "object",
          "properties": {
            "msme": {
              "type": "string",
              "description": "MSME.",
              "enum": [
                "Yes",
                "No"
              ]
            },
            "msmeNo": {
              "type": "string",
              "description": "MSME No."
            },
            "Fssai No": {
              "type": "string",
              "description": "Fssai No."
            },
            "GST Registration Date": {
              "type": "string",
              "description": "GST Registration Date in the format YYYY-MM-DD"
            },
            "Bank Account No.": {
              "type": "string",
              "description": "Bank Account No."
            },
            "Bank Name": {
              "type": "string",
              "description": "Bank Name"
            },
            "Bank IFSC Code": {
              "type": "string",
              "description": "Bank IFSC Code"
            },
            "Address 2": {
              "type": "string",
              "description": "Address 2"
            },
            "GST Registration No.": {
              "type": "string",
              "description": "GST Registration No."
            },
            "Bank Branch Name": {
              "type": "string",
              "description": "Bank Branch Name"
            }
          }
        }
      }
    },
    "SupplierItemsData": {
      "type": "object",
      "properties": {
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "discountDetails": {
          "type": "array",
          "description": "Discount that are to be applied",
          "items": {
            "$ref": "#/definitions/Discount"
          }
        },
        "name": {
          "type": "string",
          "description": "Supplier Item Name. Is unique within a given supplier."
        },
        "status": {
          "type": "string",
          "description": "Supplier Item Status."
        },
        "measuringUnit": {
          "type": "string",
          "description": "Item unit of measure. e.g. each, kg etc."
        },
        "skuCode": {
          "type": "string",
          "description": "Supplier Item's SKU Code"
        },
        "additionalCess": {
          "type": "number",
          "description": "Additional cess value. Applicable in case of external supplier item."
        },
        "inventorySKUCode": {
          "type": "string",
          "description": "Inventory SKU Code of the Supplier Item"
        },
        "categoryName": {
          "type": "string",
          "description": "Category Names to which the item is associated"
        },
        "barCode": {
          "type": "string",
          "description": "Supplier Item's Bar Code"
        },
        "allowFraction": {
          "type": "boolean",
          "description": "indicates if fractional quantity is allowed in an activity"
        },
        "isIncludesTax": {
          "type": "boolean",
          "description": "true indicates the price includes tax"
        },
        "useInventoryPrice": {
          "type": "boolean",
          "description": "true indicates inventory price is used"
        },
        "price": {
          "type": "number",
          "description": "Price of the item"
        },
        "mrp": {
          "type": "number",
          "description": "MRP of the item"
        },
        "marginPercentage": {
          "type": "number",
          "description": "merginPercentage is applied on mrp to derive at the price"
        },
        "moq": {
          "type": "number",
          "description": "minimum order quantity for the supplier item"
        },
        "qtyMultiple": {
          "type": "number",
          "description": "multiples that are allowed for the supplieritem over moq."
        },
        "conversion": {
          "type" : "number",
          "description": "Purchase to inventory Unit conversion"
        },
        "markupPercentage" : {
          "type" : "number",
          "description": "Markup Percentage for the supplier item"
        },
        "captureAddExciseDuty": {
          "type": "boolean",
          "description": "true indicates to capture the Excise duty at PO/GRN"
        },
        "tcsPercentage" : {
          "type" : "number",
          "description": "Tax collected at source."
        },
        "taxIfFree" : {
          "type" : "boolean",
          "description": "true indicates that tax will be calculated even if effective price of item is zero."
        },
        "taxApplicableOn": {
          "type": "string",
          "enum": [
            "Buying Price",
            "Top Of MRP",
            "MRP"
          ],
          "description": "indicates tax is applicable on which field - Buying Price, Top Of MRP, MRP(Reverse computed)"
        },
        "taxDetails": {
          "type": "array",
          "description": "Supplier Tax Details.",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Supplier Tax Name"
              },
              "percentage": {
                "type": "number",
                "description": "Tax Percetange"
              },
              "taxtype": {
                "type": "string",
                "enum": [
                  "Intra State",
                  "Inter State"
                ],
                "description": "Type of Tax."
              }
            }
          }
        },
        "taxExcludesAED": {
          "type": "boolean",
          "description": "true indicates that AED is not considered for tax calculation. Applicable in case of external supplier item."
        },
        "excludeTaxInCost": {
          "type": "boolean",
          "description": "true indicates tax will be exluded during PO/GRN calculation."
        },
        "excludeTaxDetails": {
          "type": "array",
          "description": "Exclude Supplier Tax Details.",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Excluded Supplier Tax Name"
              },
              "percentage": {
                "type": "number",
                "description": "Tax Percetange"
              },
              "taxtype": {
                "type": "string",
                "enum": [
                  "Intra State",
                  "Inter State"
                ],
                "description": "Type of Tax."
              }
            }
          }
        },
        "excludeTCS": {
          "type": "boolean",
          "description": "true indicates TCS will be included in inventory cost during PO/GRN calculation"
        },
        "excludeItemWhileRaisingIndentOut": {
          "type": "boolean",
          "description": "true indicates that this Item will not appear in the UI or bulk uploads while creating an Indent Out."
        }
      }
    },
    "StoreItemsData": {
      "type": "object",
      "properties": {
        "itemType": {
          "type": "string",
          "enum": [
            "Product",
            "Material",
            "Supplies"
          ],
          "description": "Type of Item."
        },
        "skuCode": {
          "type": "string",
          "description": "Inventory Item's SKU Code"
        },
        "name": {
          "type": "string",
          "description": "Inventory Item's Name."
        },
        "status": {
          "type": "string",
          "description": "Inventory Item's Status."
        },
        "measuringUnit": {
          "type": "string",
          "description": "Item unit of measure. e.g. each, kg etc."
        },
        "itemQty": {
          "type": "string",
          "description": "Inventory Item's quantity. Provided in response if branchCode is provided in input. "
        },
        "branchCode": {
          "type": "string",
          "description": "Code of the respective store. Provided in response if branchCode is provided in input. "
        },
        "barCode": {
          "type": "string",
          "description": "Inventory Item's Bar Code"
        },
        "trackingMethod": {
          "type": "string",
          "description": "Valid values are Stocked/Non Stocked."
        },
        "categoryName": {
          "type": "string",
          "description": "Category Names to which the item is associated."
        },
        "valuationMethod": {
          "type": "string",
          "description": "Valid values are Valued/Non Valued."
        },
        "perishible": {
          "type": "boolean",
          "description": "Indicates if this is a perishible item."
        },
        "shelfLife": {
          "type": "number",
          "description": "Shelf Life of the item in Days."
        },
        "stockStatus": {
          "type": "string",
          "description": "Status of the stock e.g. IN_STOCK, OUT_OF_STOCK, LOW_STOCK. Provided in response if branchCode is provided in input."
        },
        "averageCost": {
          "type": "number",
          "description": "Average cost for each item. Provided in response if branchCode is provided in input."
        },
        "itemTaxCode": {
          "type": "string",
          "description": "Inventory Item Tax Code."
        },
        "labelNotes": {
          "type": "string",
          "description": "This is the label Notes for inventory item which need to be printed on Inventory label"
        }
      }
    },
    "ItemActivity": {
      "type": "object",
      "properties": {
        "skuCode": {
          "type": "string"
        },
        "itemName": {
          "type": "string"
        },
        "itemType": {
          "type": "string",
          "enum": [
            "Product",
            "Material",
            "Supplies"
          ]
        },
        "measuringUnit": {
          "type": "string"
        },
        "categoryName": {
          "type": "string"
        },
        "openingBalance": {
          "type": "number",
          "description": "Opening Balance of the item on given day"
        },
        "openingCost": {
          "type": "number",
          "description": "Value of Inventory at opening"
        },
        "closingBalance": {
          "type": "number",
          "description": "Closing Balance of the item on given day"
        },
        "closingCost": {
          "type": "number",
          "description": "Value of Inventory at closing"
        },
        "stockOutTimes": {
          "type": "array",
          "description": "The ISO times at which this item gone out of stock on this day",
          "items": {
            "type": "string"
          }
        },
        "activities": {
          "type": "array",
          "description": "Details of activities on this item",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "activity type",
                "enum": [
                  "Sales",
                  "Returns",
                  "Voided",
                  "Audit",
                  "Adjustment",
                  "Shrinkage",
                  "Purchase",
                  "Transfer In",
                  "Transfer Out",
                  "Housemade",
                  "House-Consumed",
                  "Purchase Return",
                  "Transfer Return Out",
                  "Transfer Return In"
                ]
              },
              "quantity": {
                "type": "number",
                "description": "quntity of activity"
              },
              "cost": {
                "type": "number",
                "description": "cost of activity"
              }
            }
          }
        }
      }
    },
    "ItemActivityPage": {
      "type": "object",
      "properties": {
        "skuCode": {
          "type": "string"
        },
        "itemName": {
          "type": "string"
        },
        "itemType": {
          "type": "string",
          "enum": [
            "Product",
            "Material",
            "Supplies"
          ]
        },
        "measuringUnit": {
          "type": "string"
        },
        "categoryName": {
          "type": "string"
        },
        "openingBalance": {
          "type": "number",
          "description": "Opening Balance of the item on given day"
        },
        "openingCost": {
          "type": "number",
          "description": "Value of Inventory at opening"
        },
        "closingBalance": {
          "type": "number",
          "description": "Closing Balance of the item on given day"
        },
        "closingCost": {
          "type": "number",
          "description": "Value of Inventory at closing"
        },
        "stockOutTimes": {
          "type": "array",
          "description": "The ISO times at which this item gone out of stock on this day",
          "items": {
            "type": "string"
          }
        },
        "activities": {
          "type": "array",
          "description": "Details of activities on this item",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "activity type",
                "enum": [
                  "Sales",
                  "Returns",
                  "Voided",
                  "Audit",
                  "Adjustment",
                  "Shrinkage",
                  "Purchase",
                  "Transfer In",
                  "Transfer Out",
                  "Housemade",
                  "House-Consumed",
                  "Purchase Return",
                  "Transfer Return Out",
                  "Transfer Return In"
                ]
              },
              "quantity": {
                "type": "number",
                "description": "quntity of activity"
              },
              "cost": {
                "type": "number",
                "description": "cost of activity"
              }
            }
          }
        }
      }
    },
    "ItemStockOutput": {
      "type": "object",
      "properties": {
        "sku": {
          "type": "string",
          "description": "Item Sku"
        },
        "itemQty": {
          "type": "number",
          "description": "Current present quantity of that sku."
        },
        "measuringUnit": {
          "type": "string",
          "description": "Measuring Unit Of the item."
        },
        "batches": {
          "type": "array",
          "description": "Break up by batch/expiry.",
          "items": {
            "type": "object",
            "properties": {
              "batchNumber": {
                "type": "string",
                "description": "Batch number"
              },
              "expiryDate": {
                "type": "string",
                "description": "Expiry Date in YYYY-MM-DD format"
              },
              "quantity": {
                "type": "number",
                "description": "Quantity for this batch"
              },
              "size": {
                "type": "string",
                "description": "conversion as compared to single unit with measuring unit"
              }
            }
          }
        }
      }
    },
    "ItemStockInput": {
      "type": "object",
      "required": [
        "branchCode",
        "skuCodes"
      ],
      "properties": {
        "branchCode": {
          "type": "string",
          "description": "Store code for which you want current item stock."
        },
        "skuCodes": {
          "type": "array",
          "description": "Item's sku codes you want the current stock for.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "InventoryItemInput": {
      "title": "InventoryItemInput",
      "description": "Create or Update Inventory Items Input. Note: Product is limited to updates only.",
      "type": "object",
      "required": [
        "items"
      ],
      "properties": {
        "items": {
          "type": "array",
          "description": "List of items to be created or updated",
          "items": {
            "type": "object",
            "required": [
              "itemType",
              "name",
              "category",
              "measuringUnit",
              "skuCode",
              "perishable",
              "valuationMethod"
            ],
            "properties": {
              "itemType": {
                "type": "string",
                "description": "Type of inventory item you want to create or update.",
                "enum": [
                  "Material",
                  "Supplies",
                  "Product"
                ]
              },
              "name": {
                "type": "string",
                "description": "Name Of the item."
              },
              "category": {
                "type": "string",
                "description": "Category of item which it belongs to. Should be existing in the business."
              },
              "subCategory": {
                "type": "string",
                "description": "Sub category. Should be existing in the business."
              },
              "measuringUnit": {
                "type": "string",
                "description": "Measuring Unit Of the item. Should be defined in business settings."
              },
              "skuCode": {
                "type": "string",
                "description": "Sku code of the Item. Should be unique."
              },
              "barCode": {
                "type": "string",
                "description": "Barcode of the item."
              },
              "trackingMethod": {
                "type": "string",
                "description": "Stocking Method of the item, whether item is stocked or non stocked.",
                "enum": [
                  "Stocked",
                  "Non Stocked"
                ]
              },
              "trackInventory": {
                "type": "boolean",
                "description": "Indicates if the item is configured for inventory tracking at the time of sale. If not provided in input then by default considered true."
              },
              "inventoryItemNature": {
                "type": "string",
                "description": "Nature of inventory item",
                "enum": [
                  "Goods",
                  "Service"
                ]
              },
              "perishable": {
                "type": "boolean",
                "description": "true/false value depending on item is perishable or not."
              },
              "shelfLife": {
                "type": "number",
                "description": "Number of days materials shelf life is. Only accepted if perishable is true."
              },
              "valuationMethod": {
                "type": "string",
                "description": "valid values are Product/Materials/Supplies represent Valued/Non Valued items respectively.",
                "enum": [
                  "Valued",
                  "Non Valued"
                ]
              },
              "taxCode": {
                "type": "string",
                "description": "Tax code of the item."
              },
              "description": {
                "type": "string",
                "description": "Item Description."
              },
              "labelNotes": {
                "type": "string",
                "description": "This is the label Notes for inventory item which need to be printed on Inventory label"
              },
              "altItems": {
                "type": "array",
                "description": "Alternative Item for this item from existing Items. Allowed only if itemType is Materials and trackingMethod is Stocked",
                "items": {
                  "type": "object",
                  "required": [
                    "skuCode",
                    "conversion"
                  ],
                  "properties": {
                    "skuCode": {
                      "type": "string",
                      "description": "Sku code of the alternative item."
                    },
                    "conversion": {
                      "type": "number",
                      "description": "Quantity of existing alternative item as compared to single quantity of new item."
                    }
                  }
                }
              },
              "bomVariants": {
                "type": "array",
                "description": "Bill of Materials. Allowed only if itemType is Materials/Product",
                "items": {
                  "type": "object",
                  "required": [
                    "materials"
                  ],
                  "properties": {
                    "variantId": {
                      "type": "string",
                      "description": "Identifier to uniquely identify materials across branch, channels."
                    },
                    "bomYield": {
                      "type": "number",
                      "description": "Indicates the quantity of product that is produced using the given quantity of materials."
                    },
                    "stores": {
                      "type": "array",
                      "description": "Stores where this configuration is applicable.",
                      "items": {
                        "type": "string",
                        "description": "Store code."
                      }
                    },
                    "channels": {
                      "type": "array",
                      "description": "Channels where this configuration is applicable. Allowed only if trackingMethod is Non Stocked.",
                      "items": {
                        "type": "string",
                        "description": "Channel Names."
                      }
                    },
                    "materials": {
                      "type": "array",
                      "description": "Configure materials part of this variant",
                      "items": {
                        "type": "object",
                        "required": [
                          "skuCode",
                          "measuringUnit",
                          "quantity",
                          "consumptionUnit",
                          "materialYield"
                        ],
                        "properties": {
                          "skuCode": {
                            "type": "string",
                            "description": "Sku code of the inventory item."
                          },
                          "measuringUnit": {
                            "type": "string",
                            "description": "Measuring Unit Of the inventory item."
                          },
                          "quantity": {
                            "type": "number",
                            "description": "the quantity of material for one unit of the product."
                          },
                          "consumptionUnit": {
                            "type": "string",
                            "description": "consumption unit of this material. This can be different from the measuring unit of the material and will consider conversion factor."
                          },
                          "materialYield": {
                            "type": "number",
                            "description": "The percentage of original material that is being useful."
                          }
                        }
                      }
                    }
                  }
                }
              },
              "bosVariants": {
                "type": "array",
                "description": "Bill of Supplies. Allowed only if itemType is Supplies/Product",
                "items": {
                  "type": "object",
                  "required": [
                    "materials"
                  ],
                  "properties": {
                    "variantId": {
                      "type": "string",
                      "description": "Identifier to uniquely identify materials across branch, channels."
                    },
                    "stores": {
                      "type": "array",
                      "description": "Stores where this configuration is applicable.",
                      "items": {
                        "type": "string",
                        "description": "Store code."
                      }
                    },
                    "channels": {
                      "type": "array",
                      "description": "Channels where this configuration is applicable.",
                      "items": {
                        "type": "string",
                        "description": "Channel Names."
                      }
                    },
                    "materials": {
                      "type": "array",
                      "description": "Configure materials part of this variant",
                      "items": {
                        "type": "object",
                        "required": [
                          "skuCode",
                          "measuringUnit",
                          "quantity",
                          "consumptionUnit",
                          "materialYield"
                        ],
                        "properties": {
                          "skuCode": {
                            "type": "string",
                            "description": "Sku code of the inventory item."
                          },
                          "measuringUnit": {
                            "type": "string",
                            "description": "Measuring Unit Of the inventory item."
                          },
                          "quantity": {
                            "type": "number",
                            "description": "the quantity of material for one unit of the product."
                          },
                          "consumptionUnit": {
                            "type": "string",
                            "description": "consumption unit of this material. This can be different from the measuring unit of the material and will consider conversion factor."
                          },
                          "materialYield": {
                            "type": "number",
                            "description": "The percentage of original material that is being useful."
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "InventoryItemResult": {
      "title": "InventoryItemResult",
      "description": "Create or Update Inventory Item result",
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "Api response status."
        },
        "message": {
          "type": "string",
          "description": "Api response message."
        }
      }
    },
    "InventoryItemResponse": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InventoryItemData"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "InventoryItemData": {
      "type": "object",
      "properties": {
        "itemType": {
          "type": "string",
          "description": "Type of inventory item you want to retrieve",
          "enum": [
            "Product",
            "Material",
            "Supplies"
          ]
        },
        "name": {
          "type": "string",
          "description": "Name Of the item."
        },
        "category": {
          "type": "string",
          "description": "Category of item which it belongs to."
        },
        "subCategory": {
          "type": "string",
          "description": "Sub category."
        },
        "measuringUnit": {
          "type": "string",
          "description": "Measuring Unit Of the item."
        },
        "skuCode": {
          "type": "string",
          "description": "Sku code of the Item."
        },
        "barCode": {
          "type": "string",
          "description": "Barcode of the item."
        },
        "trackingMethod": {
          "type": "string",
          "description": "Stocking Method of the item, whether item is stocked or non stocked.",
          "enum": [
            "Stocked",
            "Non Stocked"
          ]
        },
        "trackInventory": {
          "type": "boolean",
          "description": "Indicates if the item is configured for inventory tracking."
        },
        "inventoryItemNature": {
          "type": "string",
          "description": "Nature of inventory item",
          "enum": [
            "Goods",
            "Service"
          ]
        },
        "perishable": {
          "type": "boolean",
          "description": "true/false value depending on item is perishable or not."
        },
        "shelfLife": {
          "type": "number",
          "description": "Number of days materials shelf life is. Only provided if perishable is true."
        },
        "valuationMethod": {
          "type": "string",
          "description": "valid values represent Valued/Non Valued items.",
          "enum": [
            "Valued",
            "Non Valued"
          ]
        },
        "itemNature": {
          "type": "string",
          "description": "Nature of item.",
          "enum": [
            "Goods",
            "Service"
          ]
        },
        "itemTaxCode": {
          "type": "string",
          "description": "Tax code of the item."
        },
        "description": {
          "type": "string",
          "description": "Item Description."
        },
        "labelNotes": {
          "type": "string",
          "description": "This is the label Notes for inventory item."
        },
        "altItems": {
          "type": "array",
          "description": "Alternative Item for this item from existing Items. Provided only if itemType is Materials and trackingMethod is Stocked",
          "items": {
            "type": "object",
            "properties": {
              "conversion": {
                "type": "number",
                "description": "Quantity of existing alternative item as compared to single quantity of new item."
              },
              "name": {
                "type": "string",
                "description": "Name of alternative item"
              },
              "skuCode": {
                "type": "string",
                "description": "Sku code of the alternative item."
              },
              "measuringUnit": {
                "type": "string"
              },
              "trackingMethod": {
                "type": "string",
                "description": "",
                "enum": [
                  "Stocked",
                  "Non Stocked"
                ]
              },
              "trackInventory": {
                "type": "boolean",
                "description": "Indicates if the item is configured for inventory tracking."
              },
              "itemType": {
                "type": "string",
                "description": "Type of alternative item for this item",
                "enum": [
                  "Material",
                  "Supplies",
                  "Product"
                ]
              },
              "category": {
                "type": "string",
                "description": "Category of alternative item"
              }
            }
          }
        },
        "bomVariants": {
          "type": "array",
          "description": "Bill of Materials. Provided only if itemType is Materials/Product",
          "items": {
            "type": "object",
            "properties": {
              "variantId": {
                "type": "string",
                "description": "Identifier to uniquely identify materials across branch, channels."
              },
              "bomYield": {
                "type": "number",
                "description": "Indicates the quantity of product that is produced using the given quantity of materials."
              },
              "stores": {
                "type": "array",
                "description": "Stores where this configuration is applicable.",
                "items": {
                  "type": "string",
                  "description": "Store code."
                }
              },
              "channels": {
                "type": "array",
                "description": "Channels where this configuration is applicable. Allowed only if trackingMethod is Non Stocked.",
                "items": {
                  "type": "string",
                  "description": "Channel Names."
                }
              },
              "materials": {
                "type": "array",
                "description": "Configure materials part of this variant",
                "items": {
                  "type": "object",
                  "properties": {
                    "skuCode": {
                      "type": "string",
                      "description": "Sku code of the inventory item."
                    },
                    "measuringUnit": {
                      "type": "string",
                      "description": "Measuring Unit Of the inventory item."
                    },
                    "quantity": {
                      "type": "number",
                      "description": "the quantity of material for one unit of the product."
                    },
                    "consumptionUnit": {
                      "type": "string",
                      "description": "consumption unit of this material."
                    },
                    "materialYield": {
                      "type": "number",
                      "description": "The percentage of original material that is being useful."
                    }
                  }
                }
              }
            }
          }
        },
        "bosVariants": {
          "type": "array",
          "description": "Bill of Supplies. Provided only if itemType is Supplies/Product",
          "items": {
            "type": "object",
            "properties": {
              "variantId": {
                "type": "string",
                "description": "Identifier to uniquely identify materials across branch, channels."
              },
              "stores": {
                "type": "array",
                "description": "Stores where this configuration is applicable.",
                "items": {
                  "type": "string",
                  "description": "Store code."
                }
              },
              "channels": {
                "type": "array",
                "description": "Channels where this configuration is applicable.",
                "items": {
                  "type": "string",
                  "description": "Channel Names."
                }
              },
              "supplies": {
                "type": "array",
                "description": "Configure materials part of this variant",
                "items": {
                  "type": "object",
                  "properties": {
                    "skuCode": {
                      "type": "string",
                      "description": "Sku code of the inventory item."
                    },
                    "measuringUnit": {
                      "type": "string",
                      "description": "Measuring Unit Of the inventory item."
                    },
                    "quantity": {
                      "type": "number",
                      "description": "the quantity of material for one unit of the product."
                    },
                    "consumptionUnit": {
                      "type": "string",
                      "description": "consumption unit of this material. This can be different from the measuring unit of the material and will consider conversion factor."
                    },
                    "materialYield": {
                      "type": "number",
                      "description": "The percentage of original material that is being useful."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "StoreItemStockInput": {
      "title": "Store item Input",
      "description": "Create Store Item stock Input",
      "type": "object",
      "required": [
        "storeItems",
        "storeCode"
      ],
      "properties": {
        "storeCode": {
          "type": "string",
          "description": "Code of the store you want to create stock for."
        },
        "storeItems": {
          "type": "array",
          "description": "List of items stock to be created",
          "items": {
            "type": "object",
            "required": [
              "skuCode",
              "itemQty",
              "averageCost",
              "valuationMethod"
            ],
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Sku code of item (should be a existing stocked inventory item) you want to create stock for."
              },
              "itemQty": {
                "type": "number",
                "description": "Begining balance of the item."
              },
              "averageCost": {
                "type": "number",
                "description": "Per unit cost of the item."
              },
              "checkInventoryOnSale": {
                "type": "boolean",
                "description": "If true, the stock availability is checked. Applicable for Stocked Product/Material."
              },
              "housemade": {
                "type": "boolean",
                "description": "Indicates if this item is housemade at this branch"
              },
              "soldoutThreshold": {
                "type": "number",
                "description": "If specified, added to soldout list when current quantity goes equal or below threshold"
              },
              "auditLabels": {
                "type": "array",
                "description": "The lables at what frequency this item has to be audited.",
                "items": {
                  "type": "string",
                  "description": "Audit Labels"
                },
                "enum": [
                  "Daily",
                  "Monday",
                  "Tuesday",
                  "Wednesday",
                  "Thursday",
                  "Friday",
                  "Saturday",
                  "Sunday",
                  "Monthly",
                  "January",
                  "February",
                  "March",
                  "April",
                  "May",
                  "June",
                  "July",
                  "August",
                  "September",
                  "October",
                  "November",
                  "December"
                ]
              },
              "lowBalanceParams": {
                "title": "Low balance Parameters",
                "type": "object",
                "description": "This include 2 diff. set of inputs. You can give any one(quantityLimit or consumptionDays) with its sub-fields as per your need.",
                "properties": {
                  "quantityLimit": {
                    "title": "Quantity Limit",
                    "type": "object",
                    "description": "Set Quantity Limit for your item. eg. restockLevel, lowBalanceLimit",
                    "properties": {
                      "restockLevel": {
                        "type": "number",
                        "description": "The quantity to be available in store after procure."
                      },
                      "lowBalanceLimit": {
                        "type": "number",
                        "description": "The quantity below which the stock is considered a Low balance"
                      }
                    }
                  },
                  "consumptionDays": {
                    "title": "Consumption Days",
                    "type": "object",
                    "description": "Set consumption Days for your item. eg. restockDays, lowBalanceDays.",
                    "properties": {
                      "restockDays": {
                        "type": "number",
                        "description": "If gone below low balance, procure quantity that is enough for to fill # of days"
                      },
                      "lowBalanceDays": {
                        "type": "number",
                        "description": "The Days below which the stock is considered a Low balance"
                      }
                    }
                  }
                }
              },
              "valuationMethod": {
                "type": "string",
                "description": "Valutation Method of the item(Non Valued means zero cost)",
                "enum": [
                  "Valued",
                  "Non Valued"
                ]
              }
            }
          }
        }
      }
    },
    "StoreItemStockResult": {
      "title": "StoreItemStockResult",
      "description": "Create Store Item Stock result",
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "Api response status."
        },
        "message": {
          "type": "string",
          "description": "Api response message."
        }
      }
    },
    "SupplierItemInput": {
      "title": "SupplierItemInput",
      "description": "Create or Update Supplier Items Input",
      "type": "object",
      "required": [
        "supplierCode",
        "supplierItems"
      ],
      "properties": {
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code."
        },
        "supplierItems": {
          "type": "array",
          "description": "List of supplier items to be created or updated",
          "items": {
            "type": "object",
            "required": [
              "supplierCode",
              "inventorySkuCode",
              "name",
              "measuringUnit",
              "skuCode"
            ],
            "properties": {
              "inventorySkuCode": {
                "type": "string",
                "description": "Sku Code of the Inventory Item mapped to Supplier Item."
              },
              "name": {
                "type": "string",
                "description": "Name Of the supplier item."
              },
              "measuringUnit": {
                "type": "string",
                "description": "Measuring Unit Of the supplier item."
              },
              "skuCode": {
                "type": "string",
                "description": "Sku code of the Supplier Item. Can be unique or same as inventorySkuCode."
              },
              "barCode": {
                "type": "string",
                "description": "Barcode of the supplier item."
              },
              "allowFraction": {
                "type": "boolean",
                "description": "indicates if fractional quantity is allowed in an activity."
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "true indicates the price includes tax."
              },
              "additionalCess": {
                "type": "number",
                "description": "Additional cess value. Applicable in case of external supplier item."
              },
              "taxIfFree": {
                "type": "boolean",
                "description": "true indicates that tax will be calculated even if effective price of item is zero."
              },
              "mrp": {
                "type": "number",
                "description": "MRP of the item."
              },
              "marginPercentage": {
                "type": "number",
                "description": "marginPercentage is applied on mrp to derive at the price. mrp - (mrp * marginPercentage) cannot be less than or greater than price."
              },
              "price": {
                "type": "number",
                "description": "supplier's price each unit of this item."
              },
              "conversion": {
                "type": "number",
                "description": "conversion factor from one unit of supplier item to one unit of inventory item."
              },
              "dynamicConversion": {
                "type": "boolean",
                "description": "Applicable only for External Supplier. If true, can override the conversion factor defined in supplier item."
              },
              "moq": {
                "type": "number",
                "description": "minimum order quantity for the supplier item"
              },
              "qtyMultiple": {
                "type": "number",
                "description": "multiples that are allowed for the supplieritem over moq. Should be entered if moq is not empty."
              },
              "taxes": {
                "type": "array",
                "description": "Supplier Taxes",
                "items": {
                  "type": "string",
                  "description": "Supplier Tax Names"
                }
              },
              "taxApplicableOn": {
                "type": "string",
                "description": "indicates tax is applicable on which field - Buying Price, Top Of MRP, MRP(Reverse computed). During update, send MRP, margin, price, and taxes as well.",
                "enum": [
                  "Buying Price",
                  "Top Of MRP",
                  "MRP"
                ]
              },
              "taxExcludesAED": {
                "type": "boolean",
                "description": "true indicates that AED is not considered for tax calculation. Applicable in case of external supplier item."
              },
              "captureAddExciseDuty": {
                "type": "boolean",
                "description": "true indicates to capture the Excise duty at PO/GRN"
              },
              "excludeTaxInCost": {
                "type": "boolean",
                "description": "true indicates tax will be exluded during PO/GRN calculation."
              },
              "excludeTaxList": {
                "type": "array",
                "description": "List of tax names to be excluded from cost calculation during GRN. Only processed when excludeTaxInCost is true.",
                "items": {
                  "type": "string",
                  "description": "Excluded Supplier Tax Names"
                }
              },
              "excludeTCS": {
                "type": "boolean",
                "description": "true indicates TCS will be included in inventory cost during PO/GRN calculation"
              },
              "status": {
                "type":"string",
                "description": "Status of the supplier item.",
                "enum": [
                  "Active",
                  "Inactive"
                ]
              },
              "useInventoryPrice": {
                "type":"boolean",
                "description": "true to use inventory cost for Internal Supplier; false to allow updating MRP, price, and margin."
              },
              "excludeItemWhileRaisingIndentOut": {
                "type": "boolean",
                "description": "true indicates that this Item will not appear in the UI or bulk uploads while creating an Indent Out."
              }
            }
          }
        }
      }
    },
    "SupplierItemResult": {
      "title": "SupplierItemResult",
      "description": "Create Supplier Item result",
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "Api response status."
        },
        "message": {
          "type": "string",
          "description": "Api response message."
        }
      }
    },
    "InventoryStoreList": {
      "title": "StoreListResult",
      "description": "Store information list",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Store"
      }
    },
    "InventoryStoreFlags": {
      "title": "InventoryStoreFlags",
      "description": "Feature flags for an inventory store.",
      "type": "object",
      "properties": {
        "enableAutoTransferIn": {
          "type": "boolean",
          "description": "Enable automatic Transfer In for the store."
        },
        "autoTransferInDuration": {
          "type": "integer",
          "description": "Duration in minutes for auto Transfer In. Required when enableAutoTransferIn is true."
        },
        "includeTaxInCost": {
          "type": "boolean",
          "description": "Include tax in item cost calculations."
        },
        "hideMaterialsInActivity": {
          "type": "boolean",
          "description": "Hide BOM materials in activity view."
        },
        "verifyItemsInGRN": {
          "type": "boolean",
          "description": "Require item verification during GRN."
        },
        "verifyBatchInGRN": {
          "type": "boolean",
          "description": "Require batch verification during GRN."
        },
        "verifyItemsInTO": {
          "type": "boolean",
          "description": "Require item verification during Transfer Out."
        },
        "verifyBatchInTO": {
          "type": "boolean",
          "description": "Require batch verification during Transfer Out."
        },
        "billOfSupply": {
          "type": "boolean",
          "description": "Enable Bill of Supply for this store."
        },
        "showBaseAmountPOGRN": {
          "type": "boolean",
          "description": "Show item base amount in Purchase Orders and GRN."
        },
        "showBaseAmountTransfer": {
          "type": "boolean",
          "description": "Show item base amount in Transfer documents."
        },
        "autoCancelIndent": {
          "type": "boolean",
          "description": "Automatically cancel pending indents after a set time."
        },
        "autoCancelIndentTime": {
          "type": "integer",
          "description": "Time in minutes after which pending indents are auto-cancelled. Required when autoCancelIndent is true."
        },
        "allowCreditNoteViaReturn": {
          "type": "boolean",
          "description": "Automatically create a credit note when a purchase return is made."
        },
        "auditInventoryUOM": {
          "type": "boolean",
          "description": "Enable UOM audit for inventory items."
        },
        "auditInternalSupplierUOM": {
          "type": "boolean",
          "description": "Enable UOM audit for internal supplier items."
        },
        "auditExternalSupplierUOM": {
          "type": "boolean",
          "description": "Enable UOM audit for external supplier items."
        },
        "auditBaseInventoryUOM": {
          "type": "boolean",
          "description": "Enable base inventory UOM audit."
        },
        "restrictIndentIfPendingTransfer": {
          "type": "boolean",
          "description": "Restrict new indent creation if a Transfer In is pending."
        },
        "enableMOQAndQM": {
          "type": "boolean",
          "description": "Enable Minimum Order Quantity and Quantity Multiplier for procurement."
        },
        "roundOffType": {
          "type": "string",
          "description": "Rounding strategy for MOQ/QM. Required when enableMOQAndQM is true.",
          "enum": ["ROUND_UP", "ROUND_DOWN"]
        },
        "hideBatchInfo": {
          "type": "boolean",
          "description": "Hide batch information in audit view."
        },
        "restrictNegativeHMConsumption": {
          "type": "boolean",
          "description": "Prevent negative homemade (BOM) consumption in sub-activities."
        }
      }
    },
    "InventoryStorePreferences": {
      "title": "InventoryStorePreferences",
      "description": "Operational preferences for an inventory store.",
      "type": "object",
      "properties": {
        "billToBranch": {
          "type": "string",
          "description": "Branch code of the billing branch."
        },
        "poExpiryDays": {
          "type": "integer",
          "description": "Number of days after which a Purchase Order expires."
        },
        "transferTitleSameTax": {
          "type": "string",
          "description": "Title for transfer invoice when tax is same."
        },
        "transferTitleDiffTax": {
          "type": "string",
          "description": "Title for transfer invoice when tax is different."
        },
        "transferReturnTitle": {
          "type": "string",
          "description": "Title for transfer return."
        }
      }
    },
    "InventoryStoreNumberSequences": {
      "title": "InventoryStoreNumberSequences",
      "description": "Number sequence names for an inventory store.",
      "type": "object",
      "properties": {
        "purchaseOrder": {
          "type": "string",
          "description": "Number sequence name for Purchase Orders."
        },
        "indentOut": {
          "type": "string",
          "description": "Number sequence name for Indent Out."
        },
        "grn": {
          "type": "string",
          "description": "Number sequence name for GRN."
        },
        "transferInvoiceSameTax": {
          "type": "string",
          "description": "Number sequence name for Transfer Invoice (Same Tax)."
        },
        "transferInvoiceDiffTax": {
          "type": "string",
          "description": "Number sequence name for Transfer Invoice (Different Tax)."
        },
        "transferReturnSameTax": {
          "type": "string",
          "description": "Number sequence name for Transfer Return (Same Tax)."
        },
        "transferReturnDiffTax": {
          "type": "string",
          "description": "Number sequence name for Transfer Return (Different Tax)."
        },
        "homemadeBatch": {
          "type": "string",
          "description": "Number sequence name for Homemade Batch."
        }
      }
    },
    "InventoryStoreInput": {
      "title": "InventoryStoreInput",
      "description": "Create or Update an inventory store. storeName, branch, businessName, label, and address are required on create.",
      "type": "object",
      "required": ["storeCode"],
      "properties": {
        "storeCode": {
          "type": "string",
          "description": "Unique store code. Used as the identifier for updates.",
          "maxLength": 25
        },
        "storeName": {
          "type": "string",
          "description": "Display name of the store.",
          "maxLength": 60
        },
        "branch": {
          "type": "string",
          "description": "Branch code to associate with this inventory store. Cannot be changed after creation."
        },
        "businessName": {
          "type": "string",
          "description": "Business name for the store.",
          "maxLength": 250
        },
        "label": {
          "type": "array",
          "description": "Store labels. Must be valid labels configured on the business.",
          "items": {
            "type": "string"
          }
        },
        "status": {
          "type": "string",
          "description": "Store status.",
          "enum": ["Active", "Inactive"]
        },
        "gstRegistrationDate": {
          "type": "string",
          "description": "GST registration date (YYYY-MM-DD).",
          "format": "date"
        },
        "account": {
          "type": "string",
          "description": "Account name to assign to this store."
        },
        "taxIdentificationNumber": {
          "type": "string",
          "description": "Tax Identification Number."
        },
        "fssaiCode": {
          "type": "string",
          "description": "FSSAI license code."
        },
        "contactInfo": {
          "type": "object",
          "description": "Contact information for the store.",
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of the contact person."
            },
            "title": {
              "type": "string",
              "description": "Title of the contact person."
            },
            "mobile": {
              "type": "integer",
              "description": "Mobile/phone number of the contact person."
            },
            "email": {
              "type": "string",
              "description": "Email of the contact person."
            }
          }
        },
        "address": {
          "type": "object",
          "description": "Store address.",
          "$ref": "#/definitions/Address"
        },
        "numberSequences": {
          "type": "object",
          "description": "Number sequence names to assign to the store.",
          "$ref": "#/definitions/InventoryStoreNumberSequences"
        },
        "preferences": {
          "type": "object",
          "description": "Operational preferences for the store.",
          "$ref": "#/definitions/InventoryStorePreferences"
        },
        "flags": {
          "type": "object",
          "description": "Feature flags for the store.",
          "$ref": "#/definitions/InventoryStoreFlags"
        }
      }
    },
    "InventoryStoreResult": {
      "title": "InventoryStoreResult",
      "description": "Inventory store details.",
      "type": "object",
      "properties": {
        "storeCode": {
          "type": "string",
          "description": "Store code."
        },
        "storeName": {
          "type": "string",
          "description": "Display name of the store."
        },
        "businessName": {
          "type": "string",
          "description": "Business name for the store."
        },
        "status": {
          "type": "string",
          "description": "Store status.",
          "enum": ["Active", "Inactive"]
        },
        "gstRegistrationDate": {
          "type": "string",
          "description": "GST registration date."
        },
        "label": {
          "type": "array",
          "description": "Store labels.",
          "items": {
            "type": "string"
          }
        },
        "taxIdentificationNumber": {
          "type": "string",
          "description": "Tax Identification Number."
        },
        "fssaiCode": {
          "type": "string",
          "description": "FSSAI license code."
        },
        "branch": {
          "type": "string",
          "description": "Branch code associated with this store."
        },
        "account": {
          "type": "string",
          "description": "Account name assigned to this store."
        },
        "contactInfo": {
          "type": "object",
          "description": "Contact information for the store.",
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of the contact person."
            },
            "title": {
              "type": "string",
              "description": "Title of the contact person."
            },
            "mobile": {
              "type": "integer",
              "description": "Mobile number of the contact person."
            },
            "email": {
              "type": "string",
              "description": "Email of the contact person."
            }
          }
        },
        "address": {
          "type": "object",
          "description": "Store address.",
          "$ref": "#/definitions/Address"
        },
        "numberSequences": {
          "type": "object",
          "description": "Number sequence names assigned to the store.",
          "$ref": "#/definitions/InventoryStoreNumberSequences"
        },
        "preferences": {
          "type": "object",
          "description": "Operational preferences for the store.",
          "$ref": "#/definitions/InventoryStorePreferences"
        },
        "flags": {
          "type": "object",
          "description": "Feature flags for the store.",
          "$ref": "#/definitions/InventoryStoreFlags"
        }
      }
    },
    "SupplierInput": {
      "type": "object",
      "required": [
        "supplierName",
        "type",
        "sourceStoreCode",
        "supplierCode"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "Supplier Type.",
          "enum": [
            "Internal",
            "External"
          ]
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier name."
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code.",
          "maxLength": 20
        },
        "sourceStoreCode": {
          "type": "string",
          "description": "Managed by store for External supplier. Sourcing store for Internal supplier."
        },
        "taxId": {
          "type": "string",
          "description": "Tax Identification Number."
        },
        "taxStateCode": {
          "type": "string",
          "description": "Tax State Code."
        },
        "address": {
          "type": "object",
          "description": "Supplier Address (Required for External Supplier).",
          "$ref": "#/definitions/Address"
        },
        "terms": {
          "type": "string",
          "description": "Terms and Conditions."
        },
        "buyerStoreCodes": {
          "type": "array",
          "description": "Codes of buyer stores",
          "items": {
            "type": "string",
            "description": "Buyer Store Codes"
          }
        },
        "skipPOApproval": {
          "type": "boolean",
          "description": "Applicable for external supplier, this flag bypasses approve functionality for PO and price override for GRN items. Only accepted for External Supplier."
        },
        "skipContractPOApproval": {
          "type": "boolean",
          "description": "Applicable for external supplier, this flag bypasses approve functionality for Contracts PO's."
        },
        "postGRNwithAttach": {
          "type": "boolean",
          "description": "If true, attachment required before submitting the GRN. Only accepted for External Supplier."
        },
        "isNegotiable": {
          "type": "boolean",
          "description": "Indicates if the price is negotiable. Only if true, allow override of price in PO/GRN. Only accepted for External Supplier."
        },
        "ignoreInvoiceNumber": {
          "type": "boolean",
          "description": "Indicates if the supplier invoice number's validation can be skipped in GRN. Only accepted for External Supplier."
        },
        "skipEInvoicing": {
          "type": "boolean",
          "description": "Indicates if EInv/Ewb has to be disabled. Only accepted for Internal Supplier."
        },
        "preventDuplicateInvoiceNumber": {
          "type": "boolean",
          "description": "Flag to prevent duplicate supplier invoice numbers in the system. . Only accepted for External Supplier."
        },
        "contactName": {
          "type": "string",
          "description": "Name of the contact person of supplier",
          "maxLength": 40
        },
        "title": {
          "type": "string",
          "description": "Title of the contact person",
          "maxLength": 40
        },
        "phoneNumber": {
          "type": "string",
          "description": "Phone No of the contact person"
        },
        "email": {
          "type": "array",
          "description": "Email of the contact person",
          "items": {
            "type": "string",
            "maxLength": 40
          }
        },
        "description": {
          "type": "string",
          "description": "Description"
        },
        "additionalInfo": {
          "title" : "AdditionalInfo",
          "type": "object",
          "properties": {
            "msme": {
              "type": "string",
              "description": "MSME.",
              "enum": [
                "Yes",
                "No"
              ]
            },
            "msmeNo": {
              "type": "string",
              "description": "MSME No."
            },
            "Fssai No": {
              "type": "string",
              "description": "Fssai No."
            },
            "GST Registration Date": {
              "type": "string",
              "description": "GST Registration Date in the format YYYY-MM-DD"
            },
            "Bank Account No.": {
              "type": "string",
              "description": "Bank Account No."
            },
            "Bank Name": {
              "type": "string",
              "description": "Bank Name"
            },
            "Bank IFSC Code": {
              "type": "string",
              "description": "Bank IFSC Code"
            },
            "Address 2": {
              "type": "string",
              "description": "Address 2"
            },
            "GST Registration No.": {
              "type": "string",
              "description": "GST Registration No."
            },
            "Bank Branch Name": {
              "type": "string",
              "description": "Bank Branch Name"
            }
          }
        }
      },
      "title": "SupplierInput",
      "description": "Supplier Input Model"
    },
    "IndentPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Indent"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last Indnet record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "SaveIndentResult": {
      "type": "object",
      "properties": {
        "indent": {
          "$ref": "#/definitions/IndentOut"
        }
      }
    },
    "POPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PurchaseOrder"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last PO record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "GRNPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GoodsReceivedNote"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last GRN record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "PostFinalGRNPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PostFinalGoodsReceivedNote"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last Post Final GRN record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "ShrinkagePageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Shrinkage"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last Shrinkage record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "AdjustmentPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Adjustment"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last Adjustment record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "TransferPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Transfer"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "TransferInPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TransferIn"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "PostFinalTransferPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PostFinalTransferIn"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "PurchaseReturnPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PurchaseReturn"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "TransferReturnPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TransferReturn"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "AuditPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Audit"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "ItemActivityResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ItemActivity"
          }
        }
      }
    },
    "ItemActivityPageResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ItemActivityPage"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "ItemStockResult": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ItemStockOutput"
          }
        }
      }
    },
    "Webhooks": {
      "description": "Details the models used in various webshooks",
      "properties": {
        "MenuSync": {
          "type": "object",
          "description": "Notification to perform menu sync",
          "required": [
            "type",
            "context"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "menu.sync"
              ]
            },
            "context": {
              "type": "object",
              "required": [
                "branchCode",
                "channelName"
              ],
              "properties": {
                "branchCode": {
                  "type": "string"
                },
                "branchName": {
                  "type": "string"
                },
                "channelName": {
                  "type": "string"
                },
                "outletId": {
                  "type": "string",
                  "description": "As defined on Rista"
                }
              }
            }
          }
        },
        "SoldOutSync": {
          "type": "object",
          "description": "Notification to perform sold out item sync",
          "required": [
            "type",
            "context"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "menu.item_stock_status_change"
              ]
            },
            "context": {
              "type": "object",
              "required": [
                "branchCode",
                "channelName"
              ],
              "properties": {
                "branchCode": {
                  "type": "string"
                },
                "branchName": {
                  "type": "string"
                },
                "channelName": {
                  "type": "string"
                },
                "outletId": {
                  "type": "string",
                  "description": "As defined on Rista"
                }
              }
            }
          }
        },
        "OutletStatus": {
          "type": "object",
          "description": "Notification on change of aggregator outlet status",
          "required": [
            "type",
            "context"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "outlet.status"
              ]
            },
            "context": {
              "type": "object",
              "required": [
                "branchCode",
                "channelName"
              ],
              "properties": {
                "branchCode": {
                  "type": "string"
                },
                "channelName": {
                  "type": "string"
                }
              }
            },
            "data": {
              "type": "object",
              "required": [
                "outletStatus"
              ],
              "properties": {
                "outletStatus": {
                  "type": "string",
                  "enum": [
                    "ON",
                    "OFF"
                  ]
                },
                "message": {
                  "type": "string",
                  "description": "Outlet is turned on/off."
                },
                "reason": {
                  "type": "string",
                  "description": "Reason of switching off the outlet. Available on outlet OFF status."
                },
                "fromTime": {
                  "type": "string",
                  "description": "Outlet OFF from. Available for swiggy outlet status OFF, if provided."
                },
                "toTime": {
                  "type": "string",
                  "description": "Outlet OFF to. Available for swiggy outlet status OFF, if provided."
                }
              }
            }
          }
        },
        "OnlineOrderStatus": {
          "type": "object",
          "description": "Notification on change of online order status",
          "required": [
            "type",
            "context"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "order.status"
              ]
            },
            "context": {
              "type": "object",
              "required": [
                "branchCode"
              ],
              "properties": {
                "branchCode": {
                  "type": "string"
                }
              }
            },
            "data": {
              "type": "object",
              "required": [
                "status",
                "channelName",
                "invoiceNumber"
              ],
              "properties": {
                "invoiceNumber": {
                  "type": "string",
                  "description": "Invoice Number as in Rista"
                },
                "orderNumber": {
                  "type": "string",
                  "description": "Present in certain outlets where invoiceNumber is different from orderNumber"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "Created",
                    "Accepted",
                    "Processed",
                    "Cancelled",
                    "Dispatched",
                    "Delivered",
                    "Closed"
                  ]
                },
                "channelName": {
                  "type": "string",
                  "description": "source channel of order"
                },
                "sourceInvoiceNumber": {
                  "type": "string",
                  "description": "source invoice number"
                }
              }
            }
          }
        },
        "InventoryActivityMessage": {
          "type": "object",
          "description": "Notification on change of online order status",
          "required": [
            "type",
            "context",
            "data"
          ],
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "inventory.activity"
              ]
            },
            "context": {
              "type": "object",
              "required": [
                "branchCode",
                "branchName"
              ],
              "properties": {
                "branchCode": {
                  "type": "string"
                },
                "branchName": {
                  "type": "string"
                }
              }
            },
            "data": {
              "type": "object",
              "required": [
                "activityType",
                "orderNumber",
                "status"
              ],
              "properties": {
                "activityType": {
                  "type": "string",
                  "enum": [
                    "Purchase Order",
                    "Goods Received Note",
                    "Indent Out",
                    "Indent In",
                    "Transfer Out",
                    "Transfer In",
                    "House Order",
                    "Housemade",
                    "Audit",
                    "Adjustment",
                    "Shrinkage",
                    "Transfer Return Out",
                    "Transfer Return In"
                  ]
                },
                "orderNumber": {
                  "type": "string",
                  "description": "Unique identification for this activity"
                },
                "status": {
                  "type": "string",
                  "description": "Status of this order. Approved is applicable only for Purchase Order",
                  "enum": [
                    "Draft",
                    "Final",
                    "Approved",
                    "Cancelled"
                  ]
                },
                "fulfillmentStatus": {
                  "type": "string",
                  "description": "Fulfillment Status, if applicable",
                  "enum": [
                    "Goods In Transit",
                    "Pending Transfer",
                    "Fulfilled",
                    "Pending Resolution",
                    "Resolved"
                  ]
                },
                "sourceBranchName": {
                  "type": "string",
                  "description": "Present for Transfer In, Indent In, Transfer Return In"
                },
                "sourceBranchCode": {
                  "type": "string",
                  "description": "Present for Transfer In, Indent In, Transfer Return In"
                },
                "targetBranchName": {
                  "type": "string",
                  "description": "Present for Indent Out, Transfer Out, Transfer Return Out"
                },
                "targetBranchCode": {
                  "type": "string",
                  "description": "Present for Indent Out, Transfer Out, Transfer Return Out"
                }
              }
            }
          }
        },
        "ReservationSync": {
          "type": "object",
          "description": "Notification on reservation updation",
          "required": [
            "reservationNumber",
            "branch",
            "action",
            "message"
          ],
          "properties": {
            "reservationNumber": {
              "type": "string",
              "description": "Unique number assigned to each reservation"
            },
            "branch": {
              "type": "string",
              "description": "Branch code of the branch"
            },
            "action": {
              "type": "string",
              "enum": [
                "Cancelled",
                "Updated"
              ]
            },
            "message": {
              "type": "string",
              "description": "Reservation is Cancelled/Updated"
            }
          }
        }
      }
    },
    "BusinessHours": {
      "description": "Weekly schedule definition",
      "type": "object",
      "properties": {
        "businessDays": {
          "type": "array",
          "description": "weekly schedule",
          "items": {
            "type": "object",
            "description": "schedule for a given day",
            "required": [
              "day",
              "slots"
            ],
            "properties": {
              "day": {
                "type": "string",
                "description": "calendar day of week. If not present for a day, then not available on that day",
                "enum": [
                  "Mon",
                  "Tue",
                  "Wed",
                  "Thu",
                  "Fri",
                  "Sat",
                  "Sun"
                ]
              },
              "slots": {
                "type": "array",
                "description": "slot of the day this schedule is applicable, If empty, applicable all day",
                "items": {
                  "type": "object",
                  "description": "definition of this slot",
                  "required": [
                    "startTime",
                    "endTime"
                  ],
                  "properties": {
                    "startTime": {
                      "type": "string",
                      "description": "start of the slot in HH:MM in 24 hours format"
                    },
                    "endTime": {
                      "type": "string",
                      "description": "end of the slot in HH:MM in 24 hours format"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "AvailableReservationSlots": {
      "type": "array",
      "description": "Available Reservation Slots Model",
      "items": {
        "type": "object",
        "properties": {
          "slotTime": {
            "type": "string",
            "description": "Available reservation slot time in HH:MM format"
          },
          "availableCount": {
            "type": "number",
            "description": "Count of available resource groups in that particular slot"
          }
        }
      }
    },
    "Catalog": {
      "type": "object",
      "description": "Catalog model",
      "properties": {
        "taxTypes": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "details of taxtype",
            "required": [
              "taxTypeId",
              "name",
              "percentage"
            ],
            "properties": {
              "taxTypeId": {
                "type": "string",
                "description": "unique identifier for this tax type"
              },
              "name": {
                "type": "string",
                "description": "tax name"
              },
              "percentage": {
                "type": "number",
                "description": "tax percentage value"
              }
            }
          }
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "category details",
            "required": [
              "categoryId",
              "name"
            ],
            "properties": {
              "categoryId": {
                "type": "string",
                "description": "unique identifier for category"
              },
              "name": {
                "type": "string",
                "description": "Category Name"
              },
              "displayOrder": {
                "type": "number",
                "description": "iDisplay order of this category"
              },
              "imageURL": {
                "type": "string",
                "description": "category image URL"
              },
              "subCategories": {
                "type": "array",
                "items": {
                  "type": "object",
                  "description": "Sub category details",
                  "required": [
                    "subCategoryId",
                    "name"
                  ],
                  "properties": {
                    "subCategoryId": {
                      "type": "string",
                      "description": "unique identifier for sub category"
                    },
                    "name": {
                      "type": "string",
                      "description": "Sub Category Name"
                    },
                    "displayOrder": {
                      "type": "number",
                      "description": "Order of this sub category within thecategory"
                    },
                    "imageURL": {
                      "type": "string",
                      "description": "subCategory image URL"
                    }
                  }
                }
              },
              "categoryTypes": {
                "type": "array",
                "description": "Defines types of the category",
                "items": {
                  "type": "string",
                  "description": "Name of category type for e.g., inventory, catalog"
                }
              }
            }
          }
        },
        "itemTags": {
          "type": "array",
          "description": "Tags that are associated to item",
          "items": {
            "type": "object",
            "required": [
              "itemTagId",
              "name"
            ],
            "properties": {
              "itemTagId": {
                "type": "string",
                "description": "unique identifier to the tag"
              },
              "name": {
                "type": "string",
                "description": "tag name"
              }
            }
          }
        },
        "schedules": {
          "type": "array",
          "description": "Shedule definitions to be used for items",
          "items": {
            "type": "object",
            "required": [
              "scheduleId",
              "name"
            ],
            "properties": {
              "scheduleId": {
                "type": "string",
                "description": "unique identifier for the schedule"
              },
              "name": {
                "type": "string",
                "description": "schedule name"
              },
              "startDate": {
                "type": "string",
                "description": "Optional. date in YYYY-MM-DD format"
              },
              "endDate": {
                "type": "string",
                "description": "Optional. date in YYYY-MM-DD format"
              },
              "itemHours": {
                "type": "object",
                "description": "Days/Hours this schedule is applicable",
                "$ref": "#/definitions/BusinessHours"
              }
            }
          }
        },
        "charges": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "charge details",
            "required": [
              "chargeId",
              "name",
              "applyAt",
              "applicableModes",
              "chargeType",
              "chargeRate",
              "isIncludesTax"
            ],
            "properties": {
              "chargeId": {
                "type": "string",
                "description": "chargeId"
              },
              "name": {
                "type": "string",
                "description": "charge name"
              },
              "applyAt": {
                "type": "string",
                "description": "Indicated if to be applied at Item or Order level",
                "enum": [
                  "Item",
                  "Order"
                ]
              },
              "applicableModes": {
                "type": "array",
                "description": "Indicates what type of orders this charge is applicable",
                "items": {
                  "type": "string",
                  "enum": [
                    "Pickup",
                    "Delivery",
                    "Others"
                  ]
                }
              },
              "minOrderAmount": {
                "type": "number",
                "description": "applicable only if applyAt=Order, minimum order amount beyond which this charge is waived"
              },
              "chargeType": {
                "type": "string",
                "description": "charge type",
                "enum": [
                  "Absolute",
                  "Percentage"
                ]
              },
              "chargeRate": {
                "type": "number",
                "description": "Absolute/Percent value based on chargeType"
              },
              "taxTypeIds": {
                "type": "array",
                "description": "Taxes applicable on this charge. Refers to taxTypes/taxTypeId",
                "items": {
                  "type": "string"
                }
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "true indicates chargeRate includes tax, otherwise taxes are extra"
              },
              "chargeTaxCode": {
                "type": "string",
                "description": "hsn code for this charge"
              }
            }
          }
        },
        "memberships": {
          "type": "array",
          "description": "Membership details",
          "items": {
            "type": "object",
            "description": "Membership definition",
            "required": [
              "membershipId",
              "name"
            ],
            "properties": {
              "membershipId": {
                "type": "string",
                "description": "unique identifier for membership"
              },
              "name": {
                "type": "string",
                "description": "membership name"
              },
              "redemptionScheme": {
                "type": "object",
                "description": "Loyalty Redemption ratio details",
                "properties": {
                  "redemptionAmount": {
                    "type": "number",
                    "description": "discount amount for the points specified"
                  },
                  "redemptionPoints": {
                    "type": "number",
                    "description": "Loyalty points to reduce for the amount"
                  }
                }
              }
            }
          }
        },
        "discounts": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "discount definition",
            "required": [
              "discountId",
              "discountCode",
              "discountType",
              "mode"
            ],
            "properties": {
              "discountId": {
                "type": "string",
                "description": "unique identifier for discount"
              },
              "discountCode": {
                "type": "string",
                "description": "Unique discount code"
              },
              "description": {
                "type": "string",
                "description": "Discount description"
              },
              "discountType": {
                "type": "string",
                "description": "Discount type among the enumerated values",
                "enum": [
                  "Absolute",
                  "Percentage",
                  "BuyXGetY",
                  "BuyXGetX",
                  "BuyX"
                ]
              },
              "mode": {
                "type": "string",
                "description": "Discount mode. Auto - applies to all customers. Coupon - applicable only if valid coupon code is presented",
                "enum": [
                  "Auto",
                  "Coupon"
                ]
              },
              "startDate": {
                "type": "string",
                "description": "Optional. date in YYYY-MM-DD format"
              },
              "endDate": {
                "type": "string",
                "description": "Optional. date in YYYY-MM-DD format"
              },
              "excludedDates": {
                "type": "array",
                "description": "Dates on which this discount is not applicable",
                "items": {
                  "type": "string",
                  "description": "Date in YYYY-MM-DD format"
                }
              },
              "discountHours": {
                "type": "object",
                "description": "Days/Hours this discount is applicable",
                "$ref": "#/definitions/BusinessHours"
              },
              "membershipIds": {
                "type": "array",
                "description": "memberships for which this disacount is applicable, if not specified applicable to all",
                "items": {
                  "type": "string",
                  "description": "reference to memberships/membershipId"
                }
              },
              "limitInOrder": {
                "type": "number",
                "description": "Applicable for discountType of BuyXGetY, BuyXGetX, BuyX types. Max nsumber of times this can be applied in an order"
              },
              "minOrderAmount": {
                "type": "number",
                "description": "Minimum order amount to qualify for this discount"
              },
              "categoryIds": {
                "type": "array",
                "description": "Applicable for discountType of Absolute, Percentage. Categories this deal is applicable. Only categoryIds/itemIds have to mentioned",
                "items": {
                  "type": "string",
                  "description": "refers to categories/categoryId"
                }
              },
              "itemIds": {
                "type": "array",
                "description": "Applicable for discountType of Absolute, Percentage. items this deal is applicable. Only categoryIds/itemIds have to mentioned",
                "items": {
                  "type": "string",
                  "description": "refers to items/itemIds"
                }
              },
              "discountRate": {
                "type": "number",
                "description": "Applicable for discounType of Absolute, Percentage. Discount value or percentage"
              },
              "maxDiscountAmount": {
                "type": "number",
                "description": "Applicable for discountType = Percentage. limit on value after applying percentage"
              },
              "BuyX": {
                "type": "object",
                "description": "Rules/Benefits for discountType = BuyX",
                "required": [
                  "buyInfo",
                  "getInfo"
                ],
                "properties": {
                  "buyInfo": {
                    "type": "object",
                    "description": "Buy conditions to avail this discount",
                    "required": [
                      "buyQty"
                    ],
                    "properties": {
                      "categoryIds": {
                        "type": "array",
                        "description": "Categories this deal is applicable. Only categoryIds/itemIds have to mentioned",
                        "items": {
                          "type": "string",
                          "description": "refers to categories/categoryId"
                        }
                      },
                      "itemIds": {
                        "type": "array",
                        "description": "items this deal is applicable. Only categoryIds/itemIds have to mentioned",
                        "items": {
                          "type": "string",
                          "description": "refers to items/itemIds"
                        }
                      },
                      "buyQty": {
                        "type": "number",
                        "description": "Miniumn quantity to buy to get this discount benefit"
                      }
                    }
                  },
                  "getInfo": {
                    "type": "object",
                    "description": "Details of Benefits of this discount",
                    "required": [
                      "getType"
                    ],
                    "properties": {
                      "getType": {
                        "type": "string",
                        "description": "Type of discount - Percetage/Absolute Discount or get at Fixed Price",
                        "enum": [
                          "Percentage",
                          "Absolute",
                          "Value"
                        ]
                      },
                      "percetangeDiscount": {
                        "type": "number",
                        "description": "Applicable for getType = Percentage"
                      },
                      "absoluteDiscount": {
                        "type": "number",
                        "description": "Applicable for getType = Absolute"
                      },
                      "absoluteValue": {
                        "type": "number",
                        "description": "Absolute Price of all get items together. Applicable for getType = Value"
                      }
                    }
                  }
                }
              },
              "BuyXGetY": {
                "type": "object",
                "description": "Rules/Benefits for discountType = BuyXGetY",
                "required": [
                  "buyInfo",
                  "getInfo"
                ],
                "properties": {
                  "buyInfo": {
                    "type": "object",
                    "description": "Buy conditions to avail this discount",
                    "required": [
                      "buyQty"
                    ],
                    "properties": {
                      "categoryIds": {
                        "type": "array",
                        "description": "Categories this deal is applicable.",
                        "items": {
                          "type": "string",
                          "description": "refers to categories/categoryId"
                        }
                      },
                      "itemIds": {
                        "type": "array",
                        "description": "items this deal is applicable.",
                        "items": {
                          "type": "string",
                          "description": "refers to items/itemIds"
                        }
                      },
                      "buyQty": {
                        "type": "number",
                        "description": "Miniumn quantity to buy to get this discount benefit"
                      }
                    }
                  },
                  "getInfo": {
                    "type": "object",
                    "description": "Details of Benefits of this discount",
                    "required": [
                      "getType",
                      "getItems"
                    ],
                    "properties": {
                      "getItems": {
                        "type": "array",
                        "description": "Description of conditional on Get Items",
                        "items": {
                          "type": "object",
                          "required": [
                            "getQty"
                          ],
                          "properties": {
                            "categoryIds": {
                              "type": "array",
                              "description": "Categories on which benefit is given.",
                              "items": {
                                "type": "string",
                                "description": "refers to categories/categoryId"
                              }
                            },
                            "itemIds": {
                              "type": "array",
                              "description": "items on which benefit is given.",
                              "items": {
                                "type": "string",
                                "description": "refers to items/itemIds"
                              }
                            },
                            "getQty": {
                              "type": "number",
                              "description": "Number of items on which benefit is given"
                            }
                          }
                        }
                      },
                      "getType": {
                        "type": "string",
                        "description": "Type of discount - Percetage/Absolute Discount or get at Fixed Price",
                        "enum": [
                          "Percentage",
                          "Absolute",
                          "Value"
                        ]
                      },
                      "percetangeDiscount": {
                        "type": "number",
                        "description": "Applicable for getType = Percentage"
                      },
                      "absoluteDiscount": {
                        "type": "number",
                        "description": "Disscount on all get items togeter. Applicable for getType = Absolute"
                      },
                      "absoluteValue": {
                        "type": "number",
                        "description": "Absolute Price of all get items together. Applicable for getType = Value"
                      }
                    }
                  }
                }
              },
              "BuyXGetX": {
                "type": "object",
                "description": "Rules/Benefits for discountType = BuyXGetX. Both Buy and Get should be of same sku",
                "required": [
                  "buyInfo",
                  "getInfo"
                ],
                "properties": {
                  "buyInfo": {
                    "type": "object",
                    "description": "Buy conditions to avail this discount",
                    "required": [
                      "buyQty"
                    ],
                    "properties": {
                      "categoryIds": {
                        "type": "array",
                        "description": "Categories this deal is applicable. Only categoryIds/itemIds have to mentioned",
                        "items": {
                          "type": "string",
                          "description": "refers to categories/categoryId"
                        }
                      },
                      "itemIds": {
                        "type": "array",
                        "description": "items this deal is applicable. Only categoryIds/itemIds have to mentioned",
                        "items": {
                          "type": "string",
                          "description": "refers to items/itemIds"
                        }
                      },
                      "buyQty": {
                        "type": "number",
                        "description": "Miniumn quantity to buy to get this discount benefit"
                      }
                    }
                  },
                  "getInfo": {
                    "type": "object",
                    "description": "Details of Benefits of this discount",
                    "required": [
                      "getType,",
                      "getQty"
                    ],
                    "properties": {
                      "getQty": {
                        "type": "number",
                        "description": "Number of items on which benefit is given"
                      },
                      "getType": {
                        "type": "string",
                        "description": "Type of discount - Percetage/Absolute Discount or get at Fixed Price",
                        "enum": [
                          "Percentage",
                          "Absolute",
                          "Value"
                        ]
                      },
                      "percetangeDiscount": {
                        "type": "number",
                        "description": "Applicable for getType = Percentage"
                      },
                      "absoluteDiscount": {
                        "type": "number",
                        "description": "Disscount on all get items togeter. Applicable for getType = Absolute"
                      },
                      "absoluteValue": {
                        "type": "number",
                        "description": "Absolute Price of all get items together. Applicable for getType = Value"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "items": {
          "type": "array",
          "description": "items in catalog",
          "items": {
            "type": "object",
            "description": "item definition",
            "required": [
              "type",
              "itemId",
              "skuCode",
              "itemName",
              "measuringUnit",
              "categoryId"
            ],
            "properties": {
              "type": {
                "type": "string",
                "description": "type of item",
                "enum": [
                  "Simple",
                  "Group",
                  "Variant",
                  "Option"
                ]
              },
              "itemId": {
                "type": "string",
                "description": "unique identifier for this item"
              },
              "skuCode": {
                "type": "string",
                "description": "unique sku for this item"
              },
              "price": {
                "type": "number",
                "description": "price of the item. Preent only for type = Simple/Variant"
              },
              "schedulePrices": {
                "description": "Price to be overridden for a schedule",
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "scheduleId",
                    "price"
                  ],
                  "properties": {
                    "scheduleId": {
                      "type": "string",
                      "description": "Reference to schedules/scheduleId"
                    },
                    "price": {
                      "type": "number",
                      "description": "Price applicable for this schedule"
                    }
                  }
                }
              },
              "displayOrder": {
                "type": "number",
                "description": "display order"
              },
              "itemName": {
                "type": "string",
                "description": "Item Name"
              },
              "description": {
                "type": "string",
                "description": "Description of item"
              },
              "measuringUnit": {
                "type": "string",
                "description": "unit of measurement"
              },
              "chargeIds": {
                "type": "array",
                "description": "charges applicable for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to charges/chargeId"
                }
              },
              "taxTypeIds": {
                "type": "array",
                "description": "taxes applicable for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to taxTypes/taxTypeId"
                }
              },
              "isPriceIncludesTax": {
                "type": "boolean",
                "description": "true indicates the price is inclusive of taxes"
              },
              "denyDiscount": {
                "type": "boolean",
                "description": "discounts/deals not applicable for this item"
              },
              "categoryId": {
                "type": "string",
                "description": "Reference to categories/categoryId"
              },
              "subCategoryId": {
                "type": "string",
                "description": "Reference to categories/subcategories/subCategoryId"
              },
              "itemTagIds": {
                "type": "array",
                "description": "tags applicable for this items",
                "items": {
                  "type": "string",
                  "description": "Reference to itemTags/itemTagId"
                }
              },
              "scheduleIds": {
                "type": "array",
                "description": "schedules applicable for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to schedules/scheduleId"
                }
              },
              "optionSetIds": {
                "type": "array",
                "description": "optionSets available for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to optionSets/optionSetId"
                }
              },
              "barCode": {
                "type": "string",
                "description": "item bar code"
              },
              "itemNature": {
                "type": "string",
                "description": "Nature of item",
                "enum": [
                  "Goods",
                  "Service"
                ]
              },
              "status": {
                "type": "string",
                "description": "Sttus of item",
                "enum": [
                  "Active",
                  "Inactive"
                ]
              },
              "itemTaxCode": {
                "type": "string",
                "description": "hsn code for this item"
              },
              "variantAttributes": {
                "type": "array",
                "description": "Variant Attributes for e.g.size, flavor. Present only if tyoe = Group",
                "items": {
                  "type": "object",
                  "description": "variantattribute type",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of variant attribute for e.g., Size"
                    },
                    "values": {
                      "type": "array",
                      "description": "Possible values for this varint attribute For e.g., [Small, Medium]",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "variantValues": {
                "type": "array",
                "description": "values of variant attributes applicable only for type = Variant",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Variant Attribute name"
                    },
                    "value": {
                      "type": "string",
                      "description": "Value of the variant attribute for this variant item"
                    }
                  }
                }
              },
              "groupItemId": {
                "type": "string",
                "description": "Reference to items/itemId of Group Item. Present only for type = Variant"
              },
              "extraInfo": {
                "type": "object",
                "description": "Extra information about this item. Present only for type = Simple/Variant",
                "properties": {
                  "serves": {
                    "type": "number",
                    "description": "Number of people the item serves"
                  },
                  "serveSizeUnit": {
                    "type": "string"
                  },
                  "preparationTime": {
                    "type": "number",
                    "description": "Preparation time in minutes"
                  },
                  "portionSize": {
                    "type": "string",
                    "description": "Portion Size"
                  },
                  "portionSizeUnit": {
                    "type": "string",
                    "description": "Unit of Measurement for portion size"
                  },
                  "allergyInformation": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "Item allergy information"
                    }
                  },
                  "calorieCount": {
                    "type": "number",
                    "description": "Calaories count in Kilo Calories"
                  },
                  "sugar": {
                    "type": "number",
                    "description": "Amount of sugar in grams"
                  },
                  "carbohydrate": {
                    "type": "number",
                    "description": "Amount of carbohydrates in grams"
                  },
                  "protein": {
                    "type": "number",
                    "description": "Amount of Protein in grams"
                  },
                  "lipid": {
                    "type": "number",
                    "description": "Amount of lipid in grams"
                  },
                  "sodium": {
                    "type": "number",
                    "description": "Amount of sodium in mg"
                  },
                  "totalFat": {
                    "type": "number",
                    "description": "Amount of Fat in grams"
                  },
                  "monounsaturated": {
                    "type": "number",
                    "description": "Amount of monounsaturated in grams"
                  },
                  "polyunsaturated": {
                    "type": "number",
                    "description": "Amount of polyunsaturated in grams"
                  },
                  "saturated": {
                    "type": "number",
                    "description": "Amount of saturated in grams"
                  },
                  "transFat": {
                    "type": "number",
                    "description": "Amount of transFat in grams"
                  },
                  "cholesterol": {
                    "type": "number",
                    "description": "Amount of cholesterol in mg"
                  },
                  "fiber": {
                    "type": "number",
                    "description": "Amount of fiber in grams"
                  },
                  "polydextrose": {
                    "type": "number",
                    "description": "Amount of polydextrose in grams"
                  },
                  "polyols": {
                    "type": "number",
                    "description": "Amount of polyols in grams"
                  },
                  "caffeine": {
                    "type": "number",
                    "description": "Amount of caffeine in grams"
                  },
                  "artificialSweetener": {
                    "type": "number",
                    "description": "Amount of artificial sweetener in grams"
                  },
                  "msg": {
                    "type": "number",
                    "description": "Amount of monosodium glutamate in grams"
                  },
                  "starIngredients": {
                    "type": "string"
                  },
                  "mainIngredients": {
                    "type": "string"
                  },
                  "primaryHealthBenefits": {
                    "type": "string"
                  },
                  "secondaryHealthBenefits": {
                    "type": "string"
                  },
                  "lifestyleDietInfo": {
                    "type": "string"
                  },
                  "dishPreparationStyle": {
                    "type": "string"
                  },
                  "minerals": {
                    "type": "array",
                    "description": "list of upto 5 minerals and their amount",
                    "items": {
                      "type": "object",
                      "required": [
                        "name",
                        "amount"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Name of mineral e.g., Calcium"
                        },
                        "amount": {
                          "type": "number",
                          "description": "Amount of mineral in mg, e.g. 0.1 "
                        }
                      }
                    }
                  },
                  "vitamins": {
                    "type": "array",
                    "description": "list of upto 5 vitamins and their amount",
                    "items": {
                      "type": "object",
                      "required": [
                        "name",
                        "amount"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Name of vitamin e.g., Vitamin A"
                        },
                        "amount": {
                          "type": "number",
                          "description": "Amount of Vitamin in mg, e.g. 0.1 "
                        }
                      }
                    }
                  },
                  "spiceLevel": {
                    "type": "string",
                    "enum": [
                      "NONSPICY",
                      "MEDIUMSPICY",
                      "VERYSPICY",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "sweetLevel": {
                    "type": "string",
                    "enum": [
                      "HIGH",
                      "MEDIUM",
                      "LOW",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "boneProperty": {
                    "type": "string",
                    "enum": [
                      "WITHBONE",
                      "BONELESS",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "gravyProperty": {
                    "type": "string",
                    "enum": [
                      "DRY",
                      "GRAVY",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "accompaniments": {
                    "type": "string",
                    "description": "List of comma separated ingredients present"
                  },
                  "manufacturingDetails": {
                    "type": "string"
                  },
                  "storageInformation": {
                    "type": "string"
                  },
                  "shelfLife": {
                    "type": "integer",
                    "description": "shelf life value of item"
                  },
                  "shelfLifeUnit": {
                    "type": "string",
                    "description": "shelf life unit like hour/day of item"
                  },
                  "minPiecesPerKG": {
                    "type": "integer",
                    "description": "Minimum pieces per kg"
                  },
                  "maxPiecesPerKG": {
                    "type": "integer",
                    "description": "Maximum pieces per kg"
                  },
                  "isHavingSeasonalIngredients": {
                    "type": "boolean",
                    "description": "true if contains seasonal ingredients"
                  }
                }
              }
            }
          }
        },
        "optionSets": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "optionSet definition",
            "required": [
              "optionSetId",
              "name"
            ],
            "properties": {
              "optionSetId": {
                "type": "string",
                "description": "unique identifier for optionSet"
              },
              "name": {
                "type": "string",
                "description": "optionSet name"
              },
              "displayName": {
                "type": "string",
                "description": "If present, use this for display instead of name"
              },
              "description": {
                "type": "string",
                "description": "optionSet description"
              },
              "min": {
                "type": "number",
                "description": "Minimum number of options to be included"
              },
              "max": {
                "type": "number",
                "description": "Maximum number of options allowed"
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "object",
                  "description": "option definition",
                  "required": [
                    "optionId",
                    "itemId",
                    "optionName",
                    "isDefault",
                    "price"
                  ],
                  "properties": {
                    "optionId": {
                      "type": "string",
                      "description": "unique identifier for this option"
                    },
                    "itemId": {
                      "type": "string",
                      "description": "Reference to items/itemId of type = Simple/Variant/Option"
                    },
                    "optionName": {
                      "type": "string",
                      "description": "Display name of option"
                    },
                    "isDefault": {
                      "type": "boolean",
                      "description": "true, indicates to be selected by default"
                    },
                    "displayOrder": {
                      "type": "number",
                      "description": "Disaply order of this option within optionset"
                    },
                    "max": {
                      "type": "number",
                      "description": "Maximum number of times this option can be picked. Default to 1"
                    },
                    "price": {
                      "type": "number",
                      "description": "Price for this option"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "EnterpriseCatalog": {
      "type": "object",
      "description": "Catalog model",
      "properties": {
        "taxTypes": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "details of taxtype",
            "required": [
              "taxTypeId",
              "name"
            ],
            "properties": {
              "taxTypeId": {
                "type": "string",
                "description": "unique identifier for this tax type"
              },
              "name": {
                "type": "string",
                "description": "tax name"
              }
            }
          }
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "category details",
            "required": [
              "categoryId",
              "name"
            ],
            "properties": {
              "categoryId": {
                "type": "string",
                "description": "unique identifier for category"
              },
              "name": {
                "type": "string",
                "description": "Category Name"
              },
              "displayOrder": {
                "type": "number",
                "description": "iDisplay order of this category"
              },
              "imageURL": {
                "type": "string",
                "description": "category image URL"
              },
              "subCategories": {
                "type": "array",
                "items": {
                  "type": "object",
                  "description": "Sub category details",
                  "required": [
                    "subCategoryId",
                    "name"
                  ],
                  "properties": {
                    "subCategoryId": {
                      "type": "string",
                      "description": "unique identifier for sub category"
                    },
                    "name": {
                      "type": "string",
                      "description": "Sub Category Name"
                    },
                    "displayOrder": {
                      "type": "number",
                      "description": "Order of this sub category within thecategory"
                    },
                    "imageURL": {
                      "type": "string",
                      "description": "subCategory image URL"
                    }
                  }
                }
              },
              "categoryTypes": {
                "type": "array",
                "description": "Defines types of the category",
                "items": {
                  "type": "string",
                  "description": "Name of category type for e.g., inventory, catalog"
                }
              }
            }
          }
        },
        "itemTags": {
          "type": "array",
          "description": "Tags that are associated to item",
          "items": {
            "type": "object",
            "required": [
              "itemTagId",
              "name"
            ],
            "properties": {
              "itemTagId": {
                "type": "string",
                "description": "unique identifier to the tag"
              },
              "name": {
                "type": "string",
                "description": "tag name"
              }
            }
          }
        },
        "schedules": {
          "type": "array",
          "description": "Shedule definitions to be used for items",
          "items": {
            "type": "object",
            "required": [
              "scheduleId",
              "name"
            ],
            "properties": {
              "scheduleId": {
                "type": "string",
                "description": "unique identifier for the schedule"
              },
              "name": {
                "type": "string",
                "description": "schedule name"
              },
              "startDate": {
                "type": "string",
                "description": "Optional. date in YYYY-MM-DD format"
              },
              "endDate": {
                "type": "string",
                "description": "Optional. date in YYYY-MM-DD format"
              },
              "itemHours": {
                "type": "object",
                "description": "Days/Hours this schedule is applicable",
                "$ref": "#/definitions/BusinessHours"
              },
              "channels": {
                "type": "array",
                "description": "Channels where this schedule will work.",
                "items": {
                  "type": "string",
                  "description": "Channel Names."
                }
              },
              "branchCodes": {
                "type": "array",
                "description": "Branch where htis schedule will work.",
                "items": {
                  "type": "string",
                  "description": "branch codes."
                }
              }
            }
          }
        },
        "charges": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "charge details",
            "required": [
              "chargeId",
              "name",
              "applyAt",
              "applicableModes",
              "chargeType",
              "chargeRate",
              "isIncludesTax"
            ],
            "properties": {
              "chargeId": {
                "type": "string",
                "description": "chargeId"
              },
              "name": {
                "type": "string",
                "description": "charge name"
              },
              "applyAt": {
                "type": "string",
                "description": "Indicated if to be applied at Item or Order level",
                "enum": [
                  "Item",
                  "Order"
                ]
              },
              "applicableModes": {
                "type": "array",
                "description": "Indicates what type of orders this charge is applicable",
                "items": {
                  "type": "string",
                  "enum": [
                    "Pickup",
                    "Delivery",
                    "Others"
                  ]
                }
              },
              "minOrderAmount": {
                "type": "number",
                "description": "applicable only if applyAt=Order, minimum order amount beyond which this charge is waived"
              },
              "chargeType": {
                "type": "string",
                "description": "charge type",
                "enum": [
                  "Absolute",
                  "Percentage"
                ]
              },
              "chargeRate": {
                "type": "number",
                "description": "Absolute/Percent value based on chargeType"
              },
              "taxTypeIds": {
                "type": "array",
                "description": "Taxes applicable on this charge. Refers to taxTypes/taxTypeId",
                "items": {
                  "type": "string"
                }
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "true indicates chargeRate includes tax, otherwise taxes are extra"
              },
              "chargeTaxCode": {
                "type": "string",
                "description": "hsn code for this charge"
              },
              "applicableBranchChannels": {
                "type": "array",
                "description": "Branch Channel combination on which this charge is applicable.",
                "items": {
                  "type": "object",
                  "properties": {
                    "channels": {
                      "type": "array",
                      "description": "Channels where this schedule will work.",
                      "items": {
                        "type": "string"
                      }
                    },
                    "branchCodes": {
                      "type": "array",
                      "description": "Branch where htis schedule will work.",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "memberships": {
          "type": "array",
          "description": "Membership details",
          "items": {
            "type": "object",
            "description": "Membership definition",
            "required": [
              "membershipId",
              "name"
            ],
            "properties": {
              "membershipId": {
                "type": "string",
                "description": "unique identifier for membership"
              },
              "name": {
                "type": "string",
                "description": "membership name"
              },
              "redemptionScheme": {
                "type": "object",
                "description": "Loyalty Redemption ratio details",
                "properties": {
                  "redemptionAmount": {
                    "type": "number",
                    "description": "discount amount for the points specified"
                  },
                  "redemptionPoints": {
                    "type": "number",
                    "description": "Loyalty points to reduce for the amount"
                  }
                }
              }
            }
          }
        },
        "discounts": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "discount definition",
            "required": [
              "discountId",
              "discountCode",
              "discountType",
              "mode"
            ],
            "properties": {
              "discountId": {
                "type": "string",
                "description": "unique identifier for discount"
              },
              "discountCode": {
                "type": "string",
                "description": "Unique discount code"
              },
              "description": {
                "type": "string",
                "description": "Discount description"
              },
              "discountType": {
                "type": "string",
                "description": "Discount type among the enumerated values",
                "enum": [
                  "Absolute",
                  "Percentage",
                  "BuyXGetY",
                  "BuyXGetX",
                  "BuyX"
                ]
              },
              "mode": {
                "type": "string",
                "description": "Discount mode. Auto - applies to all customers. Coupon - applicable only if valid coupon code is presented",
                "enum": [
                  "Auto",
                  "Coupon"
                ]
              },
              "startDate": {
                "type": "string",
                "description": "Optional. date in YYYY-MM-DD format"
              },
              "endDate": {
                "type": "string",
                "description": "Optional. date in YYYY-MM-DD format"
              },
              "excludedDates": {
                "type": "array",
                "description": "Dates on which this discount is not applicable",
                "items": {
                  "type": "string",
                  "description": "Date in YYYY-MM-DD format"
                }
              },
              "discountHours": {
                "type": "object",
                "description": "Days/Hours this discount is applicable",
                "$ref": "#/definitions/BusinessHours"
              },
              "membershipIds": {
                "type": "array",
                "description": "memberships for which this disacount is applicable, if not specified applicable to all",
                "items": {
                  "type": "string",
                  "description": "reference to memberships/membershipId"
                }
              },
              "limitInOrder": {
                "type": "number",
                "description": "Applicable for discountType of BuyXGetY, BuyXGetX, BuyX types. Max nsumber of times this can be applied in an order"
              },
              "minOrderAmount": {
                "type": "number",
                "description": "Minimum order amount to qualify for this discount"
              },
              "categoryIds": {
                "type": "array",
                "description": "Applicable for discountType of Absolute, Percentage. Categories this deal is applicable. Only categoryIds/itemIds have to mentioned",
                "items": {
                  "type": "string",
                  "description": "refers to categories/categoryId"
                }
              },
              "itemIds": {
                "type": "array",
                "description": "Applicable for discountType of Absolute, Percentage. items this deal is applicable. Only categoryIds/itemIds have to mentioned",
                "items": {
                  "type": "string",
                  "description": "refers to items/itemIds"
                }
              },
              "discountRate": {
                "type": "number",
                "description": "Applicable for discounType of Absolute, Percentage. Discount value or percentage"
              },
              "maxDiscountAmount": {
                "type": "number",
                "description": "Applicable for discountType = Percentage. limit on value after applying percentage"
              },
              "channels": {
                "type": "array",
                "description": "Channels where this schedule will work.",
                "items": {
                  "type": "string",
                  "description": "Channel Names."
                }
              },
              "branchCodes": {
                "type": "array",
                "description": "Branch where htis schedule will work.",
                "items": {
                  "type": "string",
                  "description": "branch codes."
                }
              },
              "BuyX": {
                "type": "object",
                "description": "Rules/Benefits for discountType = BuyX",
                "required": [
                  "buyInfo",
                  "getInfo"
                ],
                "properties": {
                  "buyInfo": {
                    "type": "object",
                    "description": "Buy conditions to avail this discount",
                    "required": [
                      "buyQty"
                    ],
                    "properties": {
                      "categoryIds": {
                        "type": "array",
                        "description": "Categories this deal is applicable. Only categoryIds/itemIds have to mentioned",
                        "items": {
                          "type": "string",
                          "description": "refers to categories/categoryId"
                        }
                      },
                      "itemIds": {
                        "type": "array",
                        "description": "items this deal is applicable. Only categoryIds/itemIds have to mentioned",
                        "items": {
                          "type": "string",
                          "description": "refers to items/itemIds"
                        }
                      },
                      "buyQty": {
                        "type": "number",
                        "description": "Miniumn quantity to buy to get this discount benefit"
                      }
                    }
                  },
                  "getInfo": {
                    "type": "object",
                    "description": "Details of Benefits of this discount",
                    "required": [
                      "getType"
                    ],
                    "properties": {
                      "getType": {
                        "type": "string",
                        "description": "Type of discount - Percetage/Absolute Discount or get at Fixed Price",
                        "enum": [
                          "Percentage",
                          "Absolute",
                          "Value"
                        ]
                      },
                      "percetangeDiscount": {
                        "type": "number",
                        "description": "Applicable for getType = Percentage"
                      },
                      "absoluteDiscount": {
                        "type": "number",
                        "description": "Applicable for getType = Absolute"
                      },
                      "absoluteValue": {
                        "type": "number",
                        "description": "Absolute Price of all get items together. Applicable for getType = Value"
                      }
                    }
                  }
                }
              },
              "BuyXGetY": {
                "type": "object",
                "description": "Rules/Benefits for discountType = BuyXGetY",
                "required": [
                  "buyInfo",
                  "getInfo"
                ],
                "properties": {
                  "buyInfo": {
                    "type": "object",
                    "description": "Buy conditions to avail this discount",
                    "required": [
                      "buyQty"
                    ],
                    "properties": {
                      "categoryIds": {
                        "type": "array",
                        "description": "Categories this deal is applicable.",
                        "items": {
                          "type": "string",
                          "description": "refers to categories/categoryId"
                        }
                      },
                      "itemIds": {
                        "type": "array",
                        "description": "items this deal is applicable.",
                        "items": {
                          "type": "string",
                          "description": "refers to items/itemIds"
                        }
                      },
                      "buyQty": {
                        "type": "number",
                        "description": "Miniumn quantity to buy to get this discount benefit"
                      }
                    }
                  },
                  "getInfo": {
                    "type": "object",
                    "description": "Details of Benefits of this discount",
                    "required": [
                      "getType",
                      "getItems"
                    ],
                    "properties": {
                      "getItems": {
                        "type": "array",
                        "description": "Description of conditional on Get Items",
                        "items": {
                          "type": "object",
                          "required": [
                            "getQty"
                          ],
                          "properties": {
                            "categoryIds": {
                              "type": "array",
                              "description": "Categories on which benefit is given.",
                              "items": {
                                "type": "string",
                                "description": "refers to categories/categoryId"
                              }
                            },
                            "itemIds": {
                              "type": "array",
                              "description": "items on which benefit is given.",
                              "items": {
                                "type": "string",
                                "description": "refers to items/itemIds"
                              }
                            },
                            "getQty": {
                              "type": "number",
                              "description": "Number of items on which benefit is given"
                            }
                          }
                        }
                      },
                      "getType": {
                        "type": "string",
                        "description": "Type of discount - Percetage/Absolute Discount or get at Fixed Price",
                        "enum": [
                          "Percentage",
                          "Absolute",
                          "Value"
                        ]
                      },
                      "percetangeDiscount": {
                        "type": "number",
                        "description": "Applicable for getType = Percentage"
                      },
                      "absoluteDiscount": {
                        "type": "number",
                        "description": "Disscount on all get items togeter. Applicable for getType = Absolute"
                      },
                      "absoluteValue": {
                        "type": "number",
                        "description": "Absolute Price of all get items together. Applicable for getType = Value"
                      }
                    }
                  }
                }
              },
              "BuyXGetX": {
                "type": "object",
                "description": "Rules/Benefits for discountType = BuyXGetX. Both Buy and Get should be of same sku",
                "required": [
                  "buyInfo",
                  "getInfo"
                ],
                "properties": {
                  "buyInfo": {
                    "type": "object",
                    "description": "Buy conditions to avail this discount",
                    "required": [
                      "buyQty"
                    ],
                    "properties": {
                      "categoryIds": {
                        "type": "array",
                        "description": "Categories this deal is applicable. Only categoryIds/itemIds have to mentioned",
                        "items": {
                          "type": "string",
                          "description": "refers to categories/categoryId"
                        }
                      },
                      "itemIds": {
                        "type": "array",
                        "description": "items this deal is applicable. Only categoryIds/itemIds have to mentioned",
                        "items": {
                          "type": "string",
                          "description": "refers to items/itemIds"
                        }
                      },
                      "buyQty": {
                        "type": "number",
                        "description": "Miniumn quantity to buy to get this discount benefit"
                      }
                    }
                  },
                  "getInfo": {
                    "type": "object",
                    "description": "Details of Benefits of this discount",
                    "required": [
                      "getType,",
                      "getQty"
                    ],
                    "properties": {
                      "getQty": {
                        "type": "number",
                        "description": "Number of items on which benefit is given"
                      },
                      "getType": {
                        "type": "string",
                        "description": "Type of discount - Percetage/Absolute Discount or get at Fixed Price",
                        "enum": [
                          "Percentage",
                          "Absolute",
                          "Value"
                        ]
                      },
                      "percetangeDiscount": {
                        "type": "number",
                        "description": "Applicable for getType = Percentage"
                      },
                      "absoluteDiscount": {
                        "type": "number",
                        "description": "Disscount on all get items togeter. Applicable for getType = Absolute"
                      },
                      "absoluteValue": {
                        "type": "number",
                        "description": "Absolute Price of all get items together. Applicable for getType = Value"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "items": {
          "type": "array",
          "description": "items in catalog",
          "items": {
            "type": "object",
            "description": "item definition",
            "required": [
              "type",
              "itemId",
              "skuCode",
              "itemName",
              "measuringUnit",
              "categoryId"
            ],
            "properties": {
              "type": {
                "type": "string",
                "description": "type of item",
                "enum": [
                  "Simple",
                  "Group",
                  "Variant",
                  "Option"
                ]
              },
              "itemId": {
                "type": "string",
                "description": "unique identifier for this item"
              },
              "skuCode": {
                "type": "string",
                "description": "unique sku for this item"
              },
              "prices": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "channel": {
                      "type": "string",
                      "description": "Channel Name"
                    },
                    "price": {
                      "type": "number",
                      "description": "Price on this channel and pricebook."
                    },
                    "scheduleId": {
                      "type": "string",
                      "description": "Schedule id where this price is applicable."
                    },
                    "priceBook": {
                      "type": "string",
                      "description": "Pricebook name"
                    }
                  }
                },
                "description": "price of the item. Preent only for type = Simple/Variant"
              },
              "displayOrder": {
                "type": "number",
                "description": "display order"
              },
              "itemName": {
                "type": "string",
                "description": "Item Name"
              },
              "description": {
                "type": "string",
                "description": "Description of item"
              },
              "measuringUnit": {
                "type": "string",
                "description": "unit of measurement"
              },
              "chargeIds": {
                "type": "array",
                "description": "charges applicable for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to charges/chargeId"
                }
              },
              "taxTypeIds": {
                "type": "array",
                "description": "taxes applicable for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to taxTypes/taxTypeId"
                }
              },
              "isPriceIncludesTax": {
                "type": "boolean",
                "description": "true indicates the price is inclusive of taxes"
              },
              "denyDiscount": {
                "type": "boolean",
                "description": "discounts/deals not applicable for this item"
              },
              "categoryId": {
                "type": "string",
                "description": "Reference to categories/categoryId"
              },
              "subCategoryId": {
                "type": "string",
                "description": "Reference to categories/subcategories/subCategoryId"
              },
              "itemTagIds": {
                "type": "array",
                "description": "tags applicable for this items",
                "items": {
                  "type": "string",
                  "description": "Reference to itemTags/itemTagId"
                }
              },
              "scheduleIds": {
                "type": "array",
                "description": "schedules applicable for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to schedules/scheduleId"
                }
              },
              "optionSetIds": {
                "type": "array",
                "description": "optionSets available for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to optionSets/optionSetId"
                }
              },
              "barCode": {
                "type": "string",
                "description": "item bar code"
              },
              "itemNature": {
                "type": "string",
                "description": "Nature of item",
                "enum": [
                  "Goods",
                  "Service"
                ]
              },
              "status": {
                "type": "string",
                "description": "Sttus of item",
                "enum": [
                  "Active",
                  "Inactive"
                ]
              },
              "itemTaxCode": {
                "type": "string",
                "description": "hsn code for this item"
              },
              "variantAttributes": {
                "type": "array",
                "description": "Variant Attributes for e.g.size, flavor. Present only if tyoe = Group",
                "items": {
                  "type": "object",
                  "description": "variantattribute type",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of variant attribute for e.g., Size"
                    },
                    "values": {
                      "type": "array",
                      "description": "Possible values for this varint attribute For e.g., [Small, Medium]",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "variantValues": {
                "type": "array",
                "description": "values of variant attributes applicable only for type = Variant",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Variant Attribute name"
                    },
                    "value": {
                      "type": "string",
                      "description": "Value of the variant attribute for this variant item"
                    }
                  }
                }
              },
              "groupItemId": {
                "type": "string",
                "description": "Reference to items/itemId of Group Item. Present only for type = Variant"
              },
              "extraInfo": {
                "type": "object",
                "description": "Extra information about this item. Present only for type = Simple/Variant",
                "properties": {
                  "serves": {
                    "type": "number",
                    "description": "Number of people the item serves"
                  },
                  "serveSizeUnit": {
                    "type": "string"
                  },
                  "preparationTime": {
                    "type": "number",
                    "description": "Preparation time in minutes"
                  },
                  "portionSize": {
                    "type": "string",
                    "description": "Portion Size"
                  },
                  "portionSizeUnit": {
                    "type": "string",
                    "description": "Unit of Measurement for portion size"
                  },
                  "allergyInformation": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "Item allergy information"
                    }
                  },
                  "calorieCount": {
                    "type": "number",
                    "description": "Calaories count in Kilo Calories"
                  },
                  "sugar": {
                    "type": "number",
                    "description": "Amount of sugar in grams"
                  },
                  "carbohydrate": {
                    "type": "number",
                    "description": "Amount of carbohydrates in grams"
                  },
                  "protein": {
                    "type": "number",
                    "description": "Amount of Protein in grams"
                  },
                  "lipid": {
                    "type": "number",
                    "description": "Amount of lipid in grams"
                  },
                  "sodium": {
                    "type": "number",
                    "description": "Amount of sodium in mg"
                  },
                  "totalFat": {
                    "type": "number",
                    "description": "Amount of Fat in grams"
                  },
                  "monounsaturated": {
                    "type": "number",
                    "description": "Amount of monounsaturated in grams"
                  },
                  "polyunsaturated": {
                    "type": "number",
                    "description": "Amount of polyunsaturated in grams"
                  },
                  "saturated": {
                    "type": "number",
                    "description": "Amount of saturated in grams"
                  },
                  "transFat": {
                    "type": "number",
                    "description": "Amount of transFat in grams"
                  },
                  "cholesterol": {
                    "type": "number",
                    "description": "Amount of cholesterol in mg"
                  },
                  "fiber": {
                    "type": "number",
                    "description": "Amount of fiber in grams"
                  },
                  "polydextrose": {
                    "type": "number",
                    "description": "Amount of polydextrose in grams"
                  },
                  "polyols": {
                    "type": "number",
                    "description": "Amount of polyols in grams"
                  },
                  "caffeine": {
                    "type": "number",
                    "description": "Amount of caffeine in grams"
                  },
                  "artificialSweetener": {
                    "type": "number",
                    "description": "Amount of artificial sweetener in grams"
                  },
                  "msg": {
                    "type": "number",
                    "description": "Amount of monosodium glutamate in grams"
                  },
                  "starIngredients": {
                    "type": "string"
                  },
                  "mainIngredients": {
                    "type": "string"
                  },
                  "primaryHealthBenefits": {
                    "type": "string"
                  },
                  "secondaryHealthBenefits": {
                    "type": "string"
                  },
                  "lifestyleDietInfo": {
                    "type": "string"
                  },
                  "dishPreparationStyle": {
                    "type": "string"
                  },
                  "minerals": {
                    "type": "array",
                    "description": "list of upto 5 minerals and their amount",
                    "items": {
                      "type": "object",
                      "required": [
                        "name",
                        "amount"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Name of mineral e.g., Calcium"
                        },
                        "amount": {
                          "type": "number",
                          "description": "Amount of mineral in mg, e.g. 0.1 "
                        }
                      }
                    }
                  },
                  "vitamins": {
                    "type": "array",
                    "description": "list of upto 5 vitamins and their amount",
                    "items": {
                      "type": "object",
                      "required": [
                        "name",
                        "amount"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Name of vitamin e.g., Vitamin A"
                        },
                        "amount": {
                          "type": "number",
                          "description": "Amount of Vitamin in mg, e.g. 0.1 "
                        }
                      }
                    }
                  },
                  "spiceLevel": {
                    "type": "string",
                    "enum": [
                      "NONSPICY",
                      "MEDIUMSPICY",
                      "VERYSPICY",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "sweetLevel": {
                    "type": "string",
                    "enum": [
                      "HIGH",
                      "MEDIUM",
                      "LOW",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "boneProperty": {
                    "type": "string",
                    "enum": [
                      "WITHBONE",
                      "BONELESS",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "gravyProperty": {
                    "type": "string",
                    "enum": [
                      "DRY",
                      "GRAVY",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "accompaniments": {
                    "type": "string",
                    "description": "List of comma separated ingredients present"
                  },
                  "manufacturingDetails": {
                    "type": "string"
                  },
                  "storageInformation": {
                    "type": "string"
                  },
                  "shelfLife": {
                    "type": "integer",
                    "description": "shelf life value of item"
                  },
                  "shelfLifeUnit": {
                    "type": "string",
                    "description": "shelf life unit like hour/day of item"
                  },
                  "minPiecesPerKG": {
                    "type": "integer",
                    "description": "Minimum pieces per kg"
                  },
                  "maxPiecesPerKG": {
                    "type": "integer",
                    "description": "Maximum pieces per kg"
                  },
                  "isHavingSeasonalIngredients": {
                    "type": "boolean",
                    "description": "true if contains seasonal ingredients"
                  }
                }
              }
            }
          }
        },
        "optionSets": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "optionSet definition",
            "required": [
              "optionSetId",
              "name"
            ],
            "properties": {
              "optionSetId": {
                "type": "string",
                "description": "unique identifier for optionSet"
              },
              "name": {
                "type": "string",
                "description": "optionSet name"
              },
              "displayName": {
                "type": "string",
                "description": "If present, use this for display instead of name"
              },
              "description": {
                "type": "string",
                "description": "optionSet description"
              },
              "varaints": {
                "type": "array",
                "description": "variants configured for this optionset.",
                "items": {
                  "type": "object",
                  "properties": {
                    "min": {
                      "type": "number",
                      "description": "Minimum number of options to be included"
                    },
                    "max": {
                      "type": "number",
                      "description": "Maximum number of options allowed"
                    },
                    "channels": {
                      "type": "array",
                      "description": "Channels where this schedule will work.",
                      "items": {
                        "type": "string",
                        "description": "Channel Names."
                      }
                    },
                    "branchCodes": {
                      "type": "array",
                      "description": "Branch where htis schedule will work.",
                      "items": {
                        "type": "string",
                        "description": "branch codes."
                      }
                    },
                    "options": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "option definition",
                        "required": [
                          "optionId",
                          "itemId",
                          "optionName",
                          "isDefault",
                          "price"
                        ],
                        "properties": {
                          "optionId": {
                            "type": "string",
                            "description": "unique identifier for this option"
                          },
                          "itemId": {
                            "type": "string",
                            "description": "Reference to items/itemId of type = Simple/Variant/Option"
                          },
                          "optionName": {
                            "type": "string",
                            "description": "Display name of option"
                          },
                          "isDefault": {
                            "type": "boolean",
                            "description": "true, indicates to be selected by default"
                          },
                          "displayOrder": {
                            "type": "number",
                            "description": "Disaply order of this option within optionset"
                          },
                          "max": {
                            "type": "number",
                            "description": "Maximum number of times this option can be picked. Default to 1"
                          },
                          "price": {
                            "type": "number",
                            "description": "Price for this option"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "taxAreas": {
          "type": "array",
          "description": "Diff tax Areas",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Tax Area Name"
              },
              "taxes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "description": "details of taxes",
                  "required": [
                    "taxTypeId",
                    "percentage",
                    "name"
                  ],
                  "properties": {
                    "taxTypeId": {
                      "type": "string",
                      "description": "unique identifier for this tax type"
                    },
                    "name": {
                      "type": "string",
                      "description": "tax name"
                    },
                    "percentage": {
                      "type": "number",
                      "description": "tax percentage"
                    }
                  }
                }
              }
            }
          }
        },
        "displayBooks":{
          "type": "array",
          "description": "Display Book",
          "items":{
            "type":"object",
            "properties": {
              "name": {
                "type": "string",
                "description": "display book name"
              },
              "description":{
                "type":"string",
                "description": "display book description"
              },
              "branchCodes":{
                "type":"array",
                "description":"display book branch codes",
                "items":{
                  "type":"string"
                }
              },
              "channels":{
                "type":"array",
                "description":"display book channels",
                "items":{
                  "type":"string"
                }
              },
              "items":{
                "type":"array",
                "description":"display book items",
                "items":{
                  "type":"object",
                  "properties": {
                    "itemId":{
                      "type": "string",
                      "description": "item Id for display book"
                    },
                    "description":{
                      "type": "string",
                      "description": "description for item in display book"
                    },
                    "displayOrder":{
                      "type": "integer",
                      "description": "rank order of item in display book"
                    },
                    "imageURL":{
                      "type": "string",
                      "description": "imageURL for item in display book"
                    },
                    "categorId":{
                      "type": "string",
                      "description": "categorId for item in display book"
                    },
                    "subCategoryId":{
                      "type": "string",
                      "description": "subCategoryId for item in display book"
                    },
                    "tags":{
                      "type":"array",
                      "description":"item tags for display book",
                      "items":{
                        "type":"string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "CatalogItemsResponse": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CatalogItemsData"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "CatalogItemsData": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "Item",
            "Group",
            "Variant",
            "Option"
          ],
          "description": "Type of item."
        },
        "skuCode": {
          "type": "string",
          "description": "SKU Code of Item."
        },
        "itemName": {
          "type": "string",
          "description": "Long Name of Item along with its variant values in bracket."
        },
        "shortName": {
          "type": "string",
          "description": "Short Name of Item."
        },
        "itemTags": {
          "type": "array",
          "description": "Reference to item tags that are applied to this item",
          "items": {
            "type": "string",
            "description": "Item Tag"
          }
        },
        "status": {
          "type": "string",
          "description": "Status of Catalog Item"
        },
        "measuringUnit": {
          "type": "string",
          "description": "Item unit of measure. e.g. each, kg etc."
        },
        "description": {
          "type": "string",
          "description": "Item Description."
        },
        "categoryName": {
          "type": "string",
          "description": "Name of Item Category."
        },
        "categoryTypes": {
          "type": "array",
          "description": "Defines types of the category",
          "items": {
            "type": "string",
            "description": "Name of category type for e.g., inventory, catalog"
          }
        },
        "subCategoryNames": {
          "type": "array",
          "description": "Item sub category names.",
          "items": {
            "type": "string",
            "description": "Item sub category name."
          }
        },
        "accountName": {
          "type": "string",
          "description": "Name of Item Category Group."
        }
      }
    },
    "CatalogSaveRequest": {
      "type": "object",
      "required": [
        "createdDate",
        "data"
      ],
      "properties": {
        "callbackURL": {
          "type": "string",
          "description": "HTTP/HTTPS POST URL to receive sync status updates for In Progress, Completed, Failed"
        },
        "callbackHeaders": {
          "type": "object",
          "description": "JSON object with headers needed for callback."
        },
        "createdDate": {
          "type": "number",
          "description": "Request creation time since epoch. This will be used to injest only latest request for branch and channel."
        },
        "additionalActions": {
          "type": "array",
          "description": "Additional actions to be performed post catalog creation.",
          "items": {
            "type": "string",
            "enum": [
              "menu.sync",
              "menu.item_stock_status_change"
            ]
          }
        },
        "data": {
          "$ref": "#/definitions/CatalogInput"
        }
      }
    },
    "CatalogInput": {
      "type": "object",
      "description": "Catalog input for loading catalog to Rista",
      "required": [
        "branch",
        "channel",
        "categories",
        "itemTags",
        "items",
        "displayBook"
      ],
      "properties": {
        "branch": {
          "type": "string",
          "description": "Rista branch code"
        },
        "channel": {
          "type": "string",
          "description": "Rista channel name"
        },
        "taxTypes": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "details of taxtype",
            "required": [
              "externalId",
              "name",
              "percentage"
            ],
            "properties": {
              "externalId": {
                "type": "string",
                "description": "Transient unique identifier for this tax type. This value is not persisted."
              },
              "name": {
                "type": "string",
                "description": "Unique tax name within a branch e.g. CGST Food, CGST PC"
              },
              "percentage": {
                "type": "number",
                "description": "tax percentage value"
              }
            }
          }
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "category details",
            "required": [
              "externalId",
              "name"
            ],
            "properties": {
              "externalId": {
                "type": "string",
                "description": "Transient unique identifier for category. This value is not persisted."
              },
              "name": {
                "type": "string",
                "description": "A unique category name within a branch."
              },
              "subCategories": {
                "type": "array",
                "items": {
                  "type": "object",
                  "description": "Sub category details",
                  "required": [
                    "externalId",
                    "name"
                  ],
                  "properties": {
                    "externalId": {
                      "type": "string",
                      "description": "Transient unique identifier for sub category. This value is not persisted."
                    },
                    "name": {
                      "type": "string",
                      "description": "A unique sub category name within a category."
                    }
                  }
                }
              }
            }
          }
        },
        "itemTags": {
          "type": "array",
          "description": "Tags that are associated to item, Vegetarian/Non-vegetarian/Egg are mandatory.",
          "items": {
            "type": "object",
            "required": [
              "externalId",
              "name"
            ],
            "properties": {
              "externalId": {
                "type": "string",
                "description": "Transient unique identifier to the tag. This value is not persisted."
              },
              "name": {
                "type": "string",
                "description": "A unique tag name. Please refer PredefinedTags model below."
              }
            }
          }
        },
        "schedules": {
          "type": "array",
          "description": "Shedule definitions to be used for items",
          "items": {
            "type": "object",
            "required": [
              "externalId",
              "name",
              "dayHours"
            ],
            "properties": {
              "externalId": {
                "type": "string",
                "description": "Transient unique identifier for the schedule. This value is not persisted."
              },
              "name": {
                "type": "string",
                "description": "A unique schedule name within a branch."
              },
              "dayHours": {
                "type": "object",
                "description": "Days/Hours this schedule is applicable",
                "$ref": "#/definitions/BusinessHours"
              }
            }
          }
        },
        "charges": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "charge details",
            "required": [
              "externalId",
              "name",
              "applyAt",
              "chargeType",
              "chargeRate"
            ],
            "properties": {
              "externalId": {
                "type": "string",
                "description": "Transient unique identifier. This value is not persisted."
              },
              "name": {
                "type": "string",
                "description": "A unique charge name within a branch."
              },
              "displayName": {
                "type": "string",
                "description": "display name for charge"
              },
              "applyAt": {
                "type": "string",
                "description": "Indicated if to be applied at Item or Order level",
                "enum": [
                  "Item",
                  "Order"
                ]
              },
              "chargeType": {
                "type": "string",
                "description": "charge type",
                "enum": [
                  "Absolute",
                  "Percentage"
                ]
              },
              "chargeRate": {
                "type": "number",
                "description": "Absolute/Percent value based on chargeType"
              },
              "taxTypeIds": {
                "type": "array",
                "description": "Taxes applicable on this charge. Refers to taxTypes/externalId",
                "items": {
                  "type": "string"
                }
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "true indicates chargeRate includes tax, otherwise taxes are extra",
                "default": false
              }
            }
          }
        },
        "optionSets": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "optionSet definition",
            "required": [
              "externalId",
              "name",
              "displayName",
              "options"
            ],
            "properties": {
              "externalId": {
                "type": "string",
                "description": "Transient unique identifier for this optionSet. This value is not persisted."
              },
              "name": {
                "type": "string",
                "description": "A unique optionSet name within a branch."
              },
              "displayName": {
                "type": "string",
                "description": "Display name for the option set."
              },
              "description": {
                "type": "string",
                "description": "optionSet description"
              },
              "min": {
                "type": "number",
                "description": "Minimum number of options to be included",
                "default": 0
              },
              "max": {
                "type": "number",
                "description": "Maximum number of options allowed, defaults to number of options."
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "object",
                  "description": "option definition",
                  "required": [
                    "sku",
                    "optionName",
                    "price",
                    "itemTagIds"
                  ],
                  "properties": {
                    "sku": {
                      "type": "string",
                      "description": "unique identifier for this option"
                    },
                    "optionName": {
                      "type": "string",
                      "description": "Display name of option"
                    },
                    "isDefault": {
                      "type": "boolean",
                      "description": "true, indicates to be selected by default",
                      "default": false
                    },
                    "price": {
                      "type": "number",
                      "description": "Price for this option",
                      "minimum": 0
                    },
                    "itemTagIds": {
                      "type": "array",
                      "description": "Tags applicable for this item options. Vegetarian/Non-vegetarian/Egg are mandatory.",
                      "items": {
                        "type": "string",
                        "description": "Reference to itemTags/externalId"
                      }
                    },
                    "isOutOfStock": {
                      "type": "boolean",
                      "description": "Is option out of stock?"
                    }
                  }
                }
              }
            }
          }
        },
        "items": {
          "type": "array",
          "description": "Items in catalog",
          "items": {
            "type": "object",
            "description": "item definition",
            "required": [
              "sku",
              "itemName",
              "price",
              "itemTagIds"
            ],
            "properties": {
              "sku": {
                "type": "string",
                "description": "unique sku for this item for e.g., SKU"
              },
              "itemName": {
                "type": "string",
                "description": "Item Name",
                "maxLength": 200
              },
              "barCode": {
                "type": "string",
                "description": "Item barcode."
              },
              "price": {
                "type": "number",
                "description": "Price of the item",
                "minimum": 0
              },
              "isPriceIncludesTax": {
                "type": "boolean",
                "description": "true indicates the price is inclusive of taxes"
              },
              "itemNature": {
                "type": "string",
                "description": "Nature of item",
                "enum": [
                  "Goods",
                  "Service"
                ]
              },
              "scheduleIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "schedules/externalId"
                }
              },
              "description": {
                "type": "string",
                "description": "Description of item",
                "maxLength": 1000
              },
              "taxTypeIds": {
                "type": "array",
                "description": "taxes applicable for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to taxTypes/externalId"
                }
              },
              "chargeIds": {
                "type": "array",
                "description": "charges applicable for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to charges/externalId"
                }
              },
              "itemTagIds": {
                "type": "array",
                "description": "Tags applicable for this items. Vegetarian/Non-vegetarian/Egg are mandatory.",
                "items": {
                  "type": "string",
                  "description": "Reference to itemTags/externalId"
                }
              },
              "optionSetIds": {
                "type": "array",
                "description": "optionSets available for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to optionSets/externalId"
                }
              },
              "variantValues": {
                "type": "array",
                "description": "Only applicable if this is a variant within a group. e.g. Size Small",
                "items": {
                  "type": "object",
                  "required": [
                    "name",
                    "value"
                  ],
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Variant Attribute name For e.g., Size"
                    },
                    "value": {
                      "type": "string",
                      "description": "Value of the variant attribute e.g. Small"
                    }
                  }
                }
              },
              "groupId": {
                "type": "string",
                "description": "Transient identifier to group variant items."
              },
              "imageURL": {
                "type": "string",
                "description": "Item image URL"
              },
              "isOutOfStock": {
                "type": "boolean",
                "description": "Is product in/out of stock"
              },
              "calorieCount": {
                "type": "number",
                "description": "Calories count in Kilo Calories"
              },
              "preparationTime": {
                "type": "number",
                "description": "Preparation time in minutes"
              },
              "portionSize": {
                "type": "string",
                "description": "Portion Size"
              },
              "portionSizeUnit": {
                "type": "string",
                "description": "Unit of Measurement for portion size",
                "enum": [
                  "grams",
                  "kg",
                  "inches",
                  "litre",
                  "ml",
                  "ounces",
                  "pounds",
                  "serves",
                  "slice",
                  "cms",
                  "piece",
                  "scoop"
                ]
              },
              "serves": {
                "type": "number",
                "description": "Number of people the item serves"
              },
              "allergyInformation": {
                "type": "array",
                "description": "Item allergens information",
                "items": {
                  "type": "string",
                  "description": "allergen",
                  "enum": [
                    "peanut",
                    "shellfish",
                    "egg",
                    "nuts",
                    "gluten",
                    "lactose",
                    "soy"
                  ]
                }
              },
              "healthyInfo": {
                "type": "object",
                "description": "Accepts information related to fssai guidelines",
                "properties": {
                  "protein": {
                    "type": "number",
                    "description": "Amount of Protein in grams"
                  },
                  "fiber": {
                    "type": "number",
                    "description": "Amount of fiber in grams"
                  },
                  "carbohydrate": {
                    "type": "number",
                    "description": "Amount of carbohydrate in grams"
                  },
                  "sugar": {
                    "type": "number",
                    "description": "Amount of sugar in grams"
                  },
                  "lipid": {
                    "type": "number",
                    "description": "Amount of lipid in grams"
                  },
                  "sodium": {
                    "type": "number",
                    "description": "Amount of sodium in milli-grams"
                  },
                  "totalFat": {
                    "type": "number",
                    "description": "Amount of total fat in grams"
                  },
                  "monounsaturated": {
                    "type": "number",
                    "description": "Amount of monounsaturated fat in grams"
                  },
                  "polyunsaturated": {
                    "type": "number",
                    "description": "Amount of polyunsaturated fat in grams"
                  },
                  "saturated": {
                    "type": "number",
                    "description": "Amount of saturated fat in grams"
                  },
                  "transFat": {
                    "type": "number",
                    "description": "Amount of trans fat in grams"
                  },
                  "cholesterol": {
                    "type": "number",
                    "description": "Amount of sugar in grams"
                  },
                  "polyols": {
                    "type": "number",
                    "description": "Amount of cholesterol in milli-grams"
                  },
                  "polydextrose": {
                    "type": "number",
                    "description": "Amount of polydextrose in grams"
                  },
                  "caffeine": {
                    "type": "number",
                    "description": "Amount of caffeine in grams"
                  },
                  "artificialSweetener": {
                    "type": "number",
                    "description": "Amount of artificial sweetener in grams"
                  },
                  "msg": {
                    "type": "number",
                    "description": "Amount of mono sodium glutamate in grams"
                  },
                  "minerals": {
                    "type": "array",
                    "description": "To provide list of upto 5 minerals and their amount",
                    "items": {
                      "type": "object",
                      "required": [
                        "name",
                        "amount"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Name of mineral e.g., Calcium"
                        },
                        "amount": {
                          "type": "number",
                          "description": "Amount of mineral in mg, e.g. 0.1"
                        }
                      }
                    }
                  },
                  "vitamins": {
                    "type": "array",
                    "description": "To provide list of upto 5 vitamins and their amount",
                    "items": {
                      "type": "object",
                      "required": [
                        "name",
                        "amount"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Name of vitamin e.g., Vitamin A"
                        },
                        "amount": {
                          "type": "number",
                          "description": "Amount of Vitamin in mg, e.g. 0.1"
                        }
                      }
                    }
                  },
                  "spiceLevel": {
                    "type": "string",
                    "enum": [
                      "NONSPICY",
                      "MEDIUMSPICY",
                      "VERYSPICY",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "sweetLevel": {
                    "type": "string",
                    "enum": [
                      "HIGH",
                      "MEDIUM",
                      "LOW",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "boneProperty": {
                    "type": "string",
                    "enum": [
                      "WITHBONE",
                      "BONELESS",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "gravyProperty": {
                    "type": "string",
                    "enum": [
                      "DRY",
                      "GRAVY",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "accompaniments": {
                    "type": "string",
                    "description": "List of comma separated ingredients present"
                  },
                  "isHavingSeasonalIngredients": {
                    "type": "boolean",
                    "description": "true if contains seasonal ingredients"
                  }
                }
              }
            }
          }
        },
        "displayBook": {
          "type": "object",
          "required": [
            "items"
          ],
          "properties": {
            "items": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "categoryId",
                  "sku"
                ],
                "properties": {
                  "categoryId": {
                    "type": "string",
                    "description": "categories/externalId"
                  },
                  "subCategoryId": {
                    "type": "string",
                    "description": "categories/subCategories/externalId"
                  },
                  "sku": {
                    "type": "string",
                    "description": "Item sku"
                  }
                }
              }
            }
          }
        }
      }
    },
    "PredefinedTags": {
      "description": "predefined list of tags",
      "type": "string",
      "enum": [
        "Vegetarian",
        "Non-vegetarian",
        "Egg",
        "Restaurant Recommended",
        "Chef Recommended"
      ]
    },
    "CatalogSyncRequest": {
      "type": "object",
      "required": [
        "data"
      ],
      "properties": {
        "callbackURL": {
          "type": "string",
          "description": "HTTP/HTTPS POST URL to receive sync status updates for In Progress, Completed, Failed"
        },
        "callbackHeaders": {
          "type": "object",
          "description": "JSON object with headers needed for callback."
        },
        "data": {
          "type": "object",
          "required": [
            "branch",
            "channel"
          ],
          "properties": {
            "branch": {
              "type": "string",
              "description": "Branch code"
            },
            "channel": {
              "type": "string",
              "description": "Channel name"
            }
          }
        }
      }
    },
    "CatalogItemsSaveRequest": {
      "type": "object",
      "description": "Catalog input for business level catalog items",
      "required": [
        "items"
      ],
      "properties": {
        "items": {
          "type": "array",
          "description": "Items in catalog",
          "items": {
            "type": "object",
            "description": "item definition",
            "required": [
              "sku",
              "itemName",
              "itemNature",
              "account",
              "category",
              "measuringUnit"
            ],
            "properties": {
              "sku": {
                "type": "string",
                "description": "unique sku for this item for e.g., SKU"
              },
              "itemName": {
                "type": "string",
                "description": "Item Name",
                "maxLength": 200
              },
              "itemNature": {
                "type": "string",
                "description": "Nature of item",
                "enum": [
                  "Goods",
                  "Service"
                ]
              },
              "barCode": {
                "type": "string",
                "description": "Item barcode."
              },
              "account": {
                "type": "string",
                "description": "Name of Account."
              },
              "category": {
                "type": "string",
                "description": "Name of Item Category."
              },
              "subCategory": {
                "type": "string",
                "description": "Name of Item Sub Category."
              },
              "measuringUnit": {
                "type": "string",
                "description": "Measuring Unit Of the item."
              },
              "isPriceIncludesTax": {
                "type": "boolean",
                "description": "true indicates the price is inclusive of taxes"
              },
              "description": {
                "type": "string",
                "description": "Description of item",
                "maxLength": 1000
              },
              "schedules": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "schedules/externalId"
                }
              },
              "taxTypes": {
                "type": "array",
                "description": "taxes applicable for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to taxTypes/externalId"
                }
              },
              "charges": {
                "type": "array",
                "description": "charges applicable for this item",
                "items": {
                  "type": "string",
                  "description": "Reference to charges/externalId"
                }
              },
              "itemTags": {
                "type": "array",
                "description": "Tags applicable for this items. Vegetarian/Non-vegetarian/Egg are mandatory.",
                "items": {
                  "type": "string",
                  "description": "Reference to itemTags/externalId"
                }
              },
              "prices": {
                "type": "array",
                "items": {
                  "type": "object",
                  "description": "details of taxes",
                  "required": [
                    "channel",
                    "priceBook",
                    "price"
                  ],
                  "properties": {
                    "channel": {
                      "type": "string",
                      "description": "Channel Name"
                    },
                    "priceBook": {
                      "type": "string",
                      "description": "Name of price book"
                    },
                    "price": {
                      "type": "number",
                      "description": "Price on this channel and pricebook."
                    }
                  }
                }
              },
              "calorieCount": {
                "type": "number",
                "description": "Calories count in Kilo Calories"
              },
              "preparationTime": {
                "type": "number",
                "description": "Preparation time in minutes"
              },
              "portionSize": {
                "type": "string",
                "description": "Portion Size"
              },
              "portionSizeUnit": {
                "type": "string",
                "description": "Unit of Measurement for portion size",
                "enum": [
                  "grams",
                  "kg",
                  "inches",
                  "litre",
                  "ml",
                  "ounces",
                  "pounds",
                  "serves",
                  "slice",
                  "cms",
                  "piece",
                  "scoop"
                ]
              },
              "serves": {
                "type": "number",
                "description": "Number of people the item serves"
              },
              "allergyInformation": {
                "type": "array",
                "description": "Item allergens information",
                "items": {
                  "type": "string",
                  "description": "allergen",
                  "enum": [
                    "peanut",
                    "shellfish",
                    "egg",
                    "nuts",
                    "gluten",
                    "lactose",
                    "soy"
                  ]
                }
              },
              "healthyInfo": {
                "type": "object",
                "description": "Accepts information related to fssai guidelines",
                "properties": {
                  "protein": {
                    "type": "number",
                    "description": "Amount of Protein in grams"
                  },
                  "fiber": {
                    "type": "number",
                    "description": "Amount of fiber in grams"
                  },
                  "carbohydrate": {
                    "type": "number",
                    "description": "Amount of carbohydrate in grams"
                  },
                  "sugar": {
                    "type": "number",
                    "description": "Amount of sugar in grams"
                  },
                  "lipid": {
                    "type": "number",
                    "description": "Amount of lipid in grams"
                  },
                  "sodium": {
                    "type": "number",
                    "description": "Amount of sodium in milli-grams"
                  },
                  "totalFat": {
                    "type": "number",
                    "description": "Amount of total fat in grams"
                  },
                  "monounsaturated": {
                    "type": "number",
                    "description": "Amount of monounsaturated fat in grams"
                  },
                  "polyunsaturated": {
                    "type": "number",
                    "description": "Amount of polyunsaturated fat in grams"
                  },
                  "saturated": {
                    "type": "number",
                    "description": "Amount of saturated fat in grams"
                  },
                  "transFat": {
                    "type": "number",
                    "description": "Amount of trans fat in grams"
                  },
                  "cholesterol": {
                    "type": "number",
                    "description": "Amount of sugar in grams"
                  },
                  "polyols": {
                    "type": "number",
                    "description": "Amount of cholesterol in milli-grams"
                  },
                  "polydextrose": {
                    "type": "number",
                    "description": "Amount of polydextrose in grams"
                  },
                  "caffeine": {
                    "type": "number",
                    "description": "Amount of caffeine in grams"
                  },
                  "artificialSweetener": {
                    "type": "number",
                    "description": "Amount of artificial sweetener in grams"
                  },
                  "msg": {
                    "type": "number",
                    "description": "Amount of mono sodium glutamate in grams"
                  },
                  "minerals": {
                    "type": "array",
                    "description": "To provide list of upto 5 minerals and their amount",
                    "items": {
                      "type": "object",
                      "required": [
                        "name",
                        "amount"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Name of mineral e.g., Calcium"
                        },
                        "amount": {
                          "type": "number",
                          "description": "Amount of mineral in mg, e.g. 0.1"
                        }
                      }
                    }
                  },
                  "vitamins": {
                    "type": "array",
                    "description": "To provide list of upto 5 vitamins and their amount",
                    "items": {
                      "type": "object",
                      "required": [
                        "name",
                        "amount"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "description": "Name of vitamin e.g., Vitamin A"
                        },
                        "amount": {
                          "type": "number",
                          "description": "Amount of Vitamin in mg, e.g. 0.1"
                        }
                      }
                    }
                  },
                  "spiceLevel": {
                    "type": "string",
                    "enum": [
                      "NONSPICY",
                      "MEDIUMSPICY",
                      "VERYSPICY",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "sweetLevel": {
                    "type": "string",
                    "enum": [
                      "HIGH",
                      "MEDIUM",
                      "LOW",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "boneProperty": {
                    "type": "string",
                    "enum": [
                      "WITHBONE",
                      "BONELESS",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "gravyProperty": {
                    "type": "string",
                    "enum": [
                      "DRY",
                      "GRAVY",
                      "NOT_APPLICABLE"
                    ]
                  },
                  "accompaniments": {
                    "type": "string",
                    "description": "List of comma separated ingredients present"
                  },
                  "isHavingSeasonalIngredients": {
                    "type": "boolean",
                    "description": "true if contains seasonal ingredients"
                  }
                }
              }
            }
          }
        }
      }
    },
    "BranchRequest": {
      "title": "BranchRequest",
      "description": "Branch creation/update input.",
      "type": "object",
      "required": [
        "branchName",
        "businessName",
        "branchCode",
        "status"
      ],
      "properties": {
        "branchName": {
          "type": "string",
          "description": "Name of the branch."
        },
        "businessName": {
          "type": "string",
          "description": "Name of the business."
        },
        "branchCode": {
          "type": "string",
          "description": "Unique code identifying the branch."
        },
        "status": {
          "type": "string",
          "enum": [
            "Active",
            "Inactive"
          ],
          "description": "Status of the branch."
        },
        "label": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Labels associated with the branch (e.g. Outlet, Kitchen)."
        },
        "taxArea": {
          "type": "string",
          "description": "Tax area/state for the branch."
        },
        "branchContact": {
          "type": "object",
          "description": "Primary contact details for the branch.",
          "properties": {
            "firstName": {
              "type": "string"
            },
            "lastName": {
              "type": "string"
            },
            "title": {
              "type": "string"
            },
            "phoneNumber": {
              "type": "string"
            },
            "email": {
              "type": "string",
              "format": "email"
            }
          }
        },
        "branchAddress": {
          "type": "object",
          "description": "Physical address of the branch.",
          "properties": {
            "addressLine": {
              "type": "string"
            },
            "city": {
              "type": "string"
            },
            "state": {
              "type": "string"
            },
            "country": {
              "type": "string"
            },
            "countryCode": {
              "type": "string"
            },
            "zip": {
              "type": "string"
            }
          }
        },
        "priceBookCode": {
          "type": "string",
          "description": "Price book code assigned to the branch."
        },
        "billTemplate": {
          "type": "object",
          "description": "Bill/receipt printing template configuration.",
          "properties": {
            "templateName": {
              "type": "string"
            },
            "showNote": {
              "type": "boolean"
            },
            "cutIfSplitBill": {
              "type": "boolean"
            },
            "hideOrderNoteOnPrint": {
              "type": "boolean"
            },
            "hideItemNoteOnPrint": {
              "type": "boolean"
            },
            "showPhoneNumber": {
              "type": "boolean"
            },
            "hideSaleByUserName": {
              "type": "boolean"
            },
            "showChannelName": {
              "type": "boolean"
            },
            "hideStandardHeader": {
              "type": "boolean"
            },
            "hideNoPriceItem": {
              "type": "boolean"
            },
            "hideNoPriceItemOption": {
              "type": "boolean"
            },
            "hideBaseRate": {
              "type": "boolean"
            },
            "hideDiscountSummary": {
              "type": "boolean"
            },
            "aggregateByItems": {
              "type": "boolean"
            },
            "printQRCode": {
              "type": "boolean"
            },
            "qrProvider": {
              "type": "string"
            },
            "showBarcode": {
              "type": "boolean"
            },
            "showItemTaxCode": {
              "type": "boolean"
            },
            "showDiscountReason": {
              "type": "boolean"
            },
            "footerOnOpen": {
              "type": "boolean"
            },
            "hideInvoiceTime": {
              "type": "boolean"
            },
            "hideSplitInvoice": {
              "type": "boolean"
            },
            "wrapItemNameInMultipleLines": {
              "type": "boolean"
            },
            "wrapOptionNameInMultipleLines": {
              "type": "boolean"
            },
            "lineBetweenTwoItems": {
              "type": "boolean"
            },
            "itemNameAllCapital": {
              "type": "boolean"
            },
            "showChannelWiseNetSales": {
              "type": "boolean"
            },
            "hideRazorpayLinkUntilPrint": {
              "type": "boolean"
            },
            "displayOldQuantityInKOT": {
              "type": "boolean"
            },
            "title": {
              "type": "string"
            },
            "returnTitle": {
              "type": "string"
            },
            "openOrderTitle": {
              "type": "string"
            },
            "header": {
              "type": "string"
            },
            "footer": {
              "type": "string"
            },
            "terms": {
              "type": "string"
            }
          }
        },
        "businessHours": {
          "type": "object",
          "description": "Operating hours of the branch.",
          "properties": {
            "businessDays": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "day": {
                    "type": "string",
                    "enum": [
                      "Mon",
                      "Tue",
                      "Wed",
                      "Thu",
                      "Fri",
                      "Sat",
                      "Sun"
                    ]
                  },
                  "slots": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "startTime": {
                          "type": "object",
                          "properties": {
                            "hh": {
                              "type": "string"
                            },
                            "mm": {
                              "type": "string"
                            }
                          }
                        },
                        "endTime": {
                          "type": "object",
                          "properties": {
                            "hh": {
                              "type": "string"
                            },
                            "mm": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "generalPreference": {
          "type": "object",
          "description": "General preferences for the branch.",
          "properties": {
            "paymentModes": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Accepted payment modes (e.g. Cash, Card)."
            },
            "dailyClosingTime": {
              "type": "object",
              "properties": {
                "time": {
                  "type": "string",
                  "description": "Time in HH:MM format."
                },
                "nextDay": {
                  "type": "boolean"
                }
              }
            },
            "operationClosingTime": {
              "type": "object",
              "properties": {
                "time": {
                  "type": "string",
                  "description": "Time in HH:MM format."
                },
                "nextDay": {
                  "type": "boolean"
                }
              }
            },
            "itemsQtySoldAccountWise": {
              "type": "boolean"
            },
            "isAutoEInvoiceEnabled": {
              "type": "boolean"
            },
            "barcodeTemplate": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "fieldLength": {
                    "type": "integer"
                  },
                  "name": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "posPreferences": {
          "type": "object",
          "description": "POS-specific preferences for the branch.",
          "properties": {
            "deliveryTime": {
              "type": "integer",
              "description": "Default delivery time in minutes."
            },
            "allowTip": {
              "type": "boolean"
            },
            "resourceMandatoryForSaleItem": {
              "type": "boolean"
            },
            "onlineOnly": {
              "type": "boolean"
            },
            "restrictManualStockIn": {
              "type": "boolean"
            },
            "restrictManualSoldOut": {
              "type": "boolean"
            },
            "deliveryAssignmentRequired": {
              "type": "boolean"
            },
            "verifySaleItems": {
              "type": "boolean"
            },
            "verifyItemAddons": {
              "type": "boolean"
            },
            "checkTicketsProcessed": {
              "type": "boolean"
            },
            "verifySaleBatches": {
              "type": "boolean"
            },
            "skipInvoiceSequenceForNCSales": {
              "type": "boolean"
            },
            "autoCancelOpenOrdersCheck": {
              "type": "boolean"
            },
            "autoCancelOpenOrders": {
              "type": "integer",
              "description": "Minutes after which open orders are auto-cancelled."
            },
            "kioskSettings": {
              "type": "object",
              "properties": {
                "kioskImageUrl1": {
                  "type": "string"
                },
                "kioskImageUrl2": {
                  "type": "string"
                },
                "kioskImageUrl3": {
                  "type": "string"
                }
              }
            }
          }
        },
        "invoiceNumberSequence": {
          "type": "string",
          "description": "Starting sequence for invoice numbers."
        },
        "orderNumberSequence": {
          "type": "string",
          "description": "Starting sequence for order numbers."
        },
        "b2bInvoiceNumberSequence": {
          "type": "string",
          "description": "Starting sequence for B2B invoice numbers."
        },
        "b2bOrderNumberSequence": {
          "type": "string",
          "description": "Starting sequence for B2B order numbers."
        },
        "taxIdentificationNumber": {
          "type": "string",
          "description": "GSTIN or equivalent tax ID."
        },
        "taxStateCode": {
          "type": "string",
          "description": "State code for tax purposes."
        },
        "externalInfo": {
          "type": "string",
          "description": "Arbitrary external reference string."
        },
        "tag": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags associated with the branch."
        },
        "paxMandatory": {
          "type": "boolean",
          "description": "Whether pax count is mandatory for orders."
        }
      }
    },
    "BranchResponse": {
      "title": "BranchResponse",
      "description": "Branch creation/update response.",
      "type": "object",
      "properties": {
        "data": {
          "type": "object",
          "description": "Branch data.",
          "properties": {
            "branchCode": {
              "type": "string",
              "description": "Unique code identifying the branch."
            },
            "branchName": {
              "type": "string",
              "description": "Name of the branch."
            },
            "businessName": {
              "type": "string",
              "description": "Name of the business."
            },
            "status": {
              "type": "string",
              "enum": ["Active", "Inactive"],
              "description": "Status of the branch."
            }
          }
        },
        "status": {
          "type": "boolean",
          "description": "Whether the operation was successful."
        },
        "operation": {
          "type": "string",
          "enum": ["created", "updated"],
          "description": "The operation performed on the branch."
        }
      }
    },
    "BranchChannelStatusInput": {
      "title": "BranchChannelStatusInput",
      "description": "Branch channel status input.",
      "type": "object",
      "required": [
        "branch",
        "channel",
        "status",
        "reason"
      ],
      "properties": {
        "branch": {
          "type": "string",
          "description": "Rista branch code"
        },
        "channel": {
          "type": "string",
          "description": "Rista channel name"
        },
        "status": {
          "type": "string",
          "enum": [
            "Active",
            "Inactive"
          ]
        },
        "reason": {
          "type": "string",
          "description": "Status reason. Required for Inactive status update."
        },
        "nextOpenAt": {
          "type": "integer",
          "description": "Optional. Next open time of the outlet in unix epoch time seconds. Applicable for Inactive status update."
        }
      }
    },
    "OutletStatusResult": {
      "title": "OutletStatusResult",
      "description": "Current outlet status at the order aggregator. Response is empty if the order aggregator is not configured for the branch and channel.",
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "Current outlet status at the order aggregator.",
          "enum": [
            "Active",
            "Inactive"
          ]
        }
      }
    },
    "CatalogSaveCallbackModel": {
      "description": "Model of catalog API asynchronous response.",
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "API asynchronous request status type",
          "default": "api.request.status"
        },
        "status": {
          "type": "string",
          "enum": [
            "success",
            "failed"
          ]
        },
        "requestId": {
          "type": "string",
          "description": "Request identifier. Sent on catalog save request."
        },
        "context": {
          "type": "object",
          "properties": {
            "branch": {
              "type": "string",
              "description": "Branch code."
            },
            "channel": {
              "type": "string",
              "description": "Channel name."
            }
          }
        },
        "errorMessage": {
          "type": "string",
          "description": "Error message describing the failure."
        },
        "additionalInformation": {
          "type": "object",
          "description": "Additional information as received from external systems."
        }
      }
    },
    "ContractInput": {
      "type": "object",
      "required": [
        "contractName",
        "supplierCode",
        "startDate",
        "endDate",
        "status"
      ],
      "properties": {
        "contractName": {
          "type": "string",
          "description": "Contract name."
        },
        "status": {
          "type": "string",
          "description": "status",
          "enum": [
            "Active",
            "Inactive"
          ]
        },
        "supplierCode": {
          "type": "string",
          "description": "External Supplier Code"
        },
        "startDate": {
          "type": "string",
          "description": "Start Date of contract"
        },
        "endDate": {
          "type": "string",
          "description": "End Date of contract"
        },
        "contractTerms": {
          "type": "string",
          "description": "Terms of Contract"
        },
        "contractLabels": {
          "type": "array",
          "description": "Contract Labels values as defined in business preferences. will ignore if no contract label is present in business preferences",
          "items": {
            "type": "string",
            "description": "Contract Labels"
          }
        },
        "buyerStoreCodes": {
          "type": "array",
          "description": "Store Codes of the Buyer Stores",
          "items": {
            "type": "string",
            "description": "Buyer Store Codes"
          }
        }
      },
      "title": "ContractInput",
      "description": "Contract Input Model"
    },
    "Contract": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ContractData"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "ContractData": {
      "type": "object",
      "properties": {
        "contractName": {
          "type": "string",
          "description": "Name of contract"
        },
        "status": {
          "type": "string",
          "description": "status",
          "enum": [
            "Active",
            "Inactive"
          ]
        },
        "contractCode": {
          "type": "string",
          "description": "Contract Code"
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierName": {
          "type": "string",
          "description": "Supplier Name"
        },
        "startDate": {
          "type": "string",
          "description": "Start Date of contract"
        },
        "endDate": {
          "type": "string",
          "description": "End Date of contract"
        },
        "contractTerms": {
          "type": "string",
          "description": "Terms of Contract"
        },
        "contractLabels": {
          "type": "array",
          "description": "Contract Labels of contract",
          "items": {
            "type": "string",
            "description": "Contract Labels"
          }
        },
        "buyerStoreCodes": {
          "type": "array",
          "description": "Store Codes of the Buyer Stores",
          "items": {
            "type": "string",
            "description": "Buyer Store Codes"
          }
        },
        "createdDate": {
          "type": "string",
          "description": "Creation Date and Time of Contract"
        }
      }
    },
    "ContractItemInput": {
      "title": "ContractItemInput",
      "description": "Create Contract Items Input",
      "type": "object",
      "required": [
        "contractCode",
        "contractItems"
      ],
      "properties": {
        "contractCode": {
          "type": "string",
          "description": "Contract Code."
        },
        "contractItems": {
          "type": "array",
          "description": "List of contract items to be created",
          "items": {
            "type": "object",
            "required": [
              "skuCode"
            ],
            "properties": {
              "skuCode": {
                "type": "string",
                "description": "Sku code of the Supplier Item. From which contract item to be created"
              },
              "isIncludesTax": {
                "type": "boolean",
                "description": "true indicates the price includes tax."
              },
              "eligibleForFree": {
                "type": "boolean",
                "description": "true indicates the price of item can be edited to 0 during GRN."
              },
              "taxIfFree": {
                "type": "boolean",
                "description": "true indicates that tax will be calculated even if effective price of item is zero."
              },
              "mrp": {
                "type": "number",
                "description": "MRP of the item."
              },
              "marginPercentage": {
                "type": "number",
                "description": "marginPercentage is applied on mrp to derive at the price. mrp - (mrp * marginPercentage) cannot be less than or greater than price."
              },
              "price": {
                "type": "number",
                "description": "supplier's price each unit of this item."
              },
              "taxes": {
                "type": "array",
                "description": "Supplier Taxes",
                "items": {
                  "type": "string",
                  "description": "Supplier Tax Names"
                }
              },
              "taxApplicableOn": {
                "type": "string",
                "description": "indicates tax is applicable on which field - Buying Price, Top Of MRP, MRP(Reverse computed)",
                "enum": [
                  "Buying Price",
                  "Top Of MRP",
                  "MRP"
                ]
              },
              "excludeTaxInCost": {
                "type": "boolean",
                "description": "true indicates tax will be exluded during PO/GRN calculation."
              },
              "excludeTaxList": {
                "type": "array",
                "description": "List of tax names to be excluded from cost calculation during GRN. Only processed when excludeTaxInCost is true.",
                "items": {
                  "type": "string",
                  "description": "Excluded Supplier Tax Names"
                }
              },
              "excludeTCS": {
                "type": "boolean",
                "description": "true indicates TCS will be included in inventory cost during PO/GRN calculation"
              },
              "captureAddExciseDuty": {
                "type": "boolean",
                "description": "true indicates to capture the Excise duty at PO/GRN"
              },
              "tcsPercentage": {
                "type": "number",
                "description": "Tax collected at source."
              },
              "additionalCess": {
                "type": "number",
                "description": "Additional cess (tax on tax)"
              },
              "standingPOSchedule": {
                "type": "object",
                "description": "Object contains the Standing Purchase Order Schedule Information"
              },
              "taxExcludesAED": {
                "type": "boolean",
                "description": "true indicates that AED is not considered for tax calculation"
              }
            }
          }
        }
      }
    },
    "ContractItemsResponse": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ContractItemsData"
          }
        },
        "lastKey": {
          "type": "string",
          "description": "Key of last record provided, this indicates there are more pages to be fetched. Use this in subsequent requests."
        }
      }
    },
    "ContractItemsData": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Contract Item Name. Is unique within a given contract."
        },
        "measuringUnit": {
          "type": "string",
          "description": "Item unit of measure. e.g. each, kg etc."
        },
        "skuCode": {
          "type": "string",
          "description": "Contract Item's SKU Code"
        },
        "status": {
          "type": "string",
          "description": "Status of Contract Item"
        },
        "contractCode": {
          "type": "string",
          "description": "Contract Code"
        },
        "contractName": {
          "type": "string",
          "description": "Contract Name"
        },
        "masterVendorCode": {
          "type": "string",
          "description": "Groups related suppliers under one ID for internal use and system mapping."
        },
        "supplierCode": {
          "type": "string",
          "description": "Supplier Code"
        },
        "supplierType": {
          "type": "string",
          "description": "Supplier Type"
        },
        "itemType": {
          "type": "string",
          "description": "Type of Item (e.g Product, Material)"
        },
        "categoryName": {
          "type": "string",
          "description": "Category Names to which the item is associated"
        },
        "barCode": {
          "type": "string",
          "description": "Supplier Item's Bar Code"
        },
        "allowFraction": {
          "type": "boolean",
          "description": "indicates if fractional quantity is allowed in an activity"
        },
        "isIncludesTax": {
          "type": "boolean",
          "description": "true indicates the price includes tax"
        },
        "eligibleForFree": {
          "type": "boolean",
          "description": "true indicates the price of item can be edited to 0 during GRN."
        },
        "price": {
          "type": "number",
          "description": "contract price each unit of this item."
        },
        "mrp": {
          "type": "number",
          "description": "MRP of the item"
        },
        "marginPercentage": {
          "type": "number",
          "description": "merginPercentage is applied on mrp to derive at the price"
        },
        "taxApplicableOn": {
          "type": "string",
          "enum": [
            "Buying Price",
            "Top Of MRP",
            "MRP"
          ],
          "description": "indicates tax is applicable on which field - Buying Price, Top Of MRP, MRP(Reverse computed)"
        },
        "taxDetails": {
          "type": "array",
          "description": "Supplier Tax Details.",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Supplier Tax Name"
              },
              "percentage": {
                "type": "number",
                "description": "Tax Percetange"
              },
              "taxtype": {
                "type": "string",
                "enum": [
                  "Intra State",
                  "Inter State"
                ],
                "description": "Type of Tax."
              }
            }
          }
        },
        "conversion": {
          "type": "number",
          "description": "conversion factor from one unit of contract item to one unit of inventory item."
        },
        "excludeTaxInCost": {
          "type": "boolean",
          "description": "true indicates tax will be exluded during PO/GRN calculation."
        },
         "excludeTaxDetails": {
          "type": "array",
          "description": "Exclude Supplier Tax Details.",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Excluded Supplier Tax Name"
              },
              "percentage": {
                "type": "number",
                "description": "Tax Percetange"
              },
              "taxtype": {
                "type": "string",
                "enum": [
                  "Intra State",
                  "Inter State"
                ],
                "description": "Type of Tax."
              }
            }
          }
        },
        "excludeTCS": {
          "type": "boolean",
          "description": "true indicates TCS will be included in inventory cost during PO/GRN calculation"
        },
        "captureAddExciseDuty": {
          "type": "boolean",
          "description": "true indicates to capture the Excise duty at PO/GRN"
        },
        "tcsPercentage": {
          "type": "number",
          "description": "Tax collected at source."
        },
        "additionalCess": {
          "type": "number",
          "description": "Additional cess (tax on tax)"
        },
        "standingPOSchedule": {
          "type": "object",
          "description": "Object contains the Standing Purchase Order Schedule Information"
        },
        "moq": {
          "type": "number",
          "description": "minimum order quantity for the contract item."
        },
        "qtyMultiple": {
          "type": "number",
          "description": "multiples that are allowed for the contract item over moq."
        },
        "taxIfFree": {
          "type": "boolean",
          "description": "true indicates that tax will be calculated even if effective price of item is zero."
        },
        "createdDate": {
          "type": "string",
          "description": "Date of contract item creation"
        },
        "taxExcludesAED": {
          "type": "boolean",
          "description": "true indicates that AED is not considered for tax calculation"
        }
      }
    },
    "ContractItemResult": {
      "title": "ContractItemResult",
      "description": "Create Contract Item result",
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "Api response status."
        },
        "message": {
          "type": "string",
          "description": "Api response message."
        }
      }
    },
    "CatalogSyncStatusResponse": {
      "title": "CatalogSyncStatusResponse",
      "description": "Catalog sync/save request status response",
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "Queued",
            "Processing",
            "Success",
            "Failure"
          ],
          "description": "Current status of the catalog sync/save request."
        },
        "request_id": {
          "type": "string",
          "description": "Request identifier returned from catalog save/sync API."
        },
        "errorMessage": {
          "type": "string",
          "description": "Error message if status is Failure."
        },
        "additionalInformation": {
          "type": "object",
          "description": "Additional information from external systems (e.g., aggregator responses)."
        },
        "context": {
          "type": "object",
          "properties": {
            "branch": {
              "type": "string",
              "description": "Branch code associated with the request."
            },
            "channel": {
              "type": "string",
              "description": "Channel name associated with the request."
            }
          },
          "description": "Context information for the catalog request."
        }
      }
    },
    "DeliveryTimeSlot": {
      "type": "object",
      "description": "A single delivery time slot for a day.",
      "required": [
        "startTime",
        "endTime"
      ],
      "properties": {
        "startTime": {
          "type": "string",
          "description": "Start of the slot in HH:MM 24 hour format. Minutes must be a multiple of 15."
        },
        "endTime": {
          "type": "string",
          "description": "End of the slot in HH:MM 24 hour format. Minutes must be a multiple of 15."
        }
      }
    },
    "DeliveryDayTimings": {
      "type": "object",
      "description": "Delivery timings for a single day of the week.",
      "required": [
        "day"
      ],
      "properties": {
        "day": {
          "type": "string",
          "description": "Calendar day of week.",
          "enum": [
            "Mon",
            "Tue",
            "Wed",
            "Thu",
            "Fri",
            "Sat",
            "Sun"
          ]
        },
        "slots": {
          "type": "array",
          "description": "Delivery time slots for the day. Maximum of three slots allowed and slots cannot overlap. If slots are empty, delivery timing is set to 24 hours by default.",
          "maxItems": 3,
          "items": {
            "$ref": "#/definitions/DeliveryTimeSlot"
          }
        }
      }
    },
    "DeliveryTimingsResult": {
      "type": "array",
      "description": "Delivery timings configured for the outlet, one entry per day of week. Empty if no outlet is configured for the given branch, channel and orderSource.",
      "items": {
        "$ref": "#/definitions/DeliveryDayTimings"
      }
    },
    "DeliveryTimingsUpdateRequest": {
      "type": "object",
      "required": [
        "branch",
        "channel",
        "timings"
      ],
      "properties": {
        "branch": {
          "type": "string",
          "description": "Branch Code."
        },
        "channel": {
          "type": "string",
          "description": "Channel name."
        },
        "orderSource": {
          "type": "string",
          "description": "Order aggregator to update. If not provided, timings are updated for both zomato and swiggy.",
          "enum": [
            "zomato",
            "swiggy"
          ]
        },
        "timings": {
          "type": "array",
          "description": "Delivery timings for all seven days of the week.",
          "items": {
            "$ref": "#/definitions/DeliveryDayTimings"
          }
        }
      }
    },
    "DeliveryTimingsUpdateResult": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "Api response status.",
          "enum": [
            "success"
          ]
        }
      }
    }
  }
}
