{
  "openapi": "3.0.3",
  "info": {
    "title": "Omnichannel Add-on",
    "description": "SCAYLE Omnichannel API is a REST API enabling integration of online and on-site stores. You can use it to locate nearby stores and identify available items needed for click-and-collect or reservations.\n\nFor more details, see the [Omnichannel API Developer Guide](../../dev-guides/omnichannel/docs/01-getting-started/01-introduction.md)\n\n# Request\n## Base URL\n`https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1`\n\nAll requests must be made over HTTPS.\n\n## Header\n- **Authorization** Bearer Token\n- **Content-Type** application/json\n\n# How to Use:\n1. Generate access token via the login/register endpoint of the Auth Api.\n2. Use the access token as bearer token for authentication.\n3. Use the `https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1` as the base URL.\n",
    "license": {
      "name": "Apache 2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    },
    "version": "1.0.12"
  },
  "servers": [
    {
      "url": "https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1"
    }
  ],
  "tags": [
    {
      "name": "Stores",
      "description": "Retail store, holding product stock."
    },
    {
      "name": "StoreImages",
      "description": "Store Images"
    },
    {
      "name": "StoreInventoryLocator",
      "description": "Retail store location search, based on provided origin address"
    },
    {
      "name": "Variants",
      "description": "Variants representing retail-store stock"
    },
    {
      "name": "Orders",
      "description": "Orders and OrderItems"
    },
    {
      "name": "KPIs",
      "description": "KPIs for stores, variants and fulfillment of orders"
    }
  ],
  "x-samples-enabled": true,
  "x-samples-languages": [
    "curl",
    "php",
    "javascript"
  ],
  "paths": {
    "/kpis": {
      "get": {
        "tags": [
          "KPIs"
        ],
        "summary": "All KPIs used in the dashboard",
        "description": "Get a list of all KPIs.",
        "operationId": "kpisList",
        "parameters": [
          {
            "name": "filters[kpis]",
            "in": "query",
            "required": false,
            "description": "Optional filter for specific KPIs",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filters[countryCode]",
            "in": "query",
            "description": "3 letter uppercase country code",
            "required": false,
            "schema": {
              "type": "string",
              "example": "DEU"
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "Date String (YYYY-MM-DD)",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2023-10-31 23:59:59",
              "default": "now - 7 days"
            }
          },
          {
            "name": "dateUntil",
            "in": "query",
            "description": "Date String (YYYY-MM-DD HH:MM:SS)",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2023-11-01 12:00:00",
              "default": "now"
            }
          },
          {
            "name": "dateTz",
            "in": "query",
            "description": "Timezone String (e.g. Europe/Berlin)",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Europe/Berlin",
              "default": "Europe/Berlin"
            }
          },
          {
            "name": "filters[storeId]",
            "in": "query",
            "description": "Id of a store to filter for. Works only for Top5 Products Found KPI.",
            "required": false,
            "schema": {
              "type": "integer",
              "example": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KPIs"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "422": {
            "description": "Wrong filter parameter"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/kpis?filters[kpis]=exampleKPI&filters[countryCode]=DEU&dateFrom=2023-10-31T23:59:59&dateUntil=2023-11-01T12:00:00&dateTz=Europe/Berlin&filters[storeId]=1\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/kpis?filters[kpis]=exampleKPI&filters[countryCode]=DEU&dateFrom=2023-10-31T23:59:59&dateUntil=2023-11-01T12:00:00&dateTz=Europe/Berlin&filters[storeId]=1\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/kpis\";\nconst params = {\n  'filters[kpis]': 'exampleKPI',\n  'filters[countryCode]': 'DEU',\n  'dateFrom': '2023-10-31T23:59:59',\n  'dateUntil': '2023-11-01T12:00:00',\n  'dateTz': 'Europe/Berlin'\n  'filters[storeId]': 1\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.get(url, { params, headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/stores": {
      "post": {
        "tags": [
          "Stores"
        ],
        "summary": "Create store",
        "description": "Create a new store",
        "operationId": "createStores",
        "requestBody": {
          "$ref": "#/components/requestBodies/StoreCreate"
        },
        "responses": {
          "201": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Store"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\" -H \"Content-Type: application/json\" -d '{\n  \"name\": \"Acme Corp.\",\n  \"email\": \"mail@example.org\",\n  \"address\": {\n    \"street\": \"Domstr.\",\n    \"houseNumber\": \"10\",\n    \"zipCode\": \"20095\",\n    \"city\": \"Hamburg\",\n    \"countryCode\": \"DEU\"\n  },\n  \"geoPoint\": {\n    \"lat\": 53.5511,\n    \"lng\": 9.9937\n  },\n  \"timezone\": \"Europe/Berlin\",\n  \"openingTimes\": {\n    \"mon\": [],\n    \"tue\": [],\n    \"wed\": [],\n    \"thu\": [],\n    \"fri\": [],\n    \"sat\": [],\n    \"sun\": [],\n    \"exceptions\": []\n  },\n  \"customData\": {},\n  \"settings\": {\n    \"shipFromStore\": true,\n    \"safetyStock\": 5\n  },\n  \"updateIfExists\": true,\n  \"referenceKey\": \"1fc2c699-6a93-3321-b5e7-7cae83050410\",\n  \"isActive\": true,\n  \"images\": [],\n  \"storageLocations\": [],\n  \"storeGroups\": [],\n  \"with\": \"openingTimes, customData, settings, storageLocations, storeGroups, images\"\n}'\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores\";\n\n$data = [\n  \"name\" => \"Acme Corp.\",\n  \"email\" => \"mail@example.org\",\n  \"address\" => [\n    \"street\" => \"Domstr.\",\n    \"houseNumber\" => \"10\",\n    \"zipCode\" => \"20095\",\n    \"city\" => \"Hamburg\",\n    \"countryCode\" => \"DEU\"\n  ],\n  \"geoPoint\" => [\n    \"lat\" => 53.5511,\n    \"lng\" => 9.9937\n  ],\n  \"timezone\" => \"Europe/Berlin\",\n  \"openingTimes\" => [\n    \"mon\" => [],\n    \"tue\" => [],\n    \"wed\" => [],\n    \"thu\" => [],\n    \"fri\" => [],\n    \"sat\" => [],\n    \"sun\" => [],\n    \"exceptions\" => []\n  ],\n  \"customData\" => new stdClass(),\n  \"settings\" => [\n    \"shipFromStore\" => true,\n    \"safetyStock\" => 5\n  ],\n  \"updateIfExists\" => true,\n  \"referenceKey\" => \"1fc2c699-6a93-3321-b5e7-7cae83050410\",\n  \"isActive\" => true,\n  \"images\" => [],\n  \"storageLocations\" => [],\n  \"storeGroups\" => [],\n  \"with\" => \"openingTimes, customData, settings, storageLocations, storeGroups, images\"\n];\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\",\n  \"Content-Type: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n  CURLOPT_POST => true,\n  CURLOPT_POSTFIELDS => json_encode($data),\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores\";\nconst data = {\n  name: \"Acme Corp.\",\n  email: \"mail@example.org\",\n  address: {\n    street: \"Domstr.\",\n    houseNumber: \"10\",\n    zipCode: \"20095\",\n    city: \"Hamburg\",\n    countryCode: \"DEU\"\n  },\n  geoPoint: {\n    lat: 53.5511,\n    lng: 9.9937\n  },\n  timezone: \"Europe/Berlin\",\n  openingTimes: {\n    mon: [],\n    tue: [],\n    wed: [],\n    thu: [],\n    fri: [],\n    sat: [],\n    sun: [],\n    exceptions: []\n  },\n  customData: {},\n  settings: {\n    shipFromStore: true,\n    safetyStock: 5\n  },\n  updateIfExists: true,\n  referenceKey: \"1fc2c699-6a93-3321-b5e7-7cae83050410\",\n  isActive: true,\n  images: [],\n  storageLocations: [],\n  storeGroups: [],\n  with: \"openingTimes, customData, settings, storageLocations, storeGroups, images\"\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'Accept': 'application/json',\n  'Content-Type': 'application/json'\n};\n\naxios.post(url, data, { headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      },
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "Stores index",
        "description": "Get a list of stores",
        "operationId": "indexStores",
        "parameters": [
          {
            "name": "filters[s]",
            "in": "query",
            "required": false,
            "description": "Optional search parameter",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filters[countryCode]",
            "in": "query",
            "description": "3 letter uppercase country code",
            "required": false,
            "schema": {
              "type": "string",
              "example": "DEU"
            }
          },
          {
            "name": "with",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of additional properties that should be included in the response (openingTimes, customData, settings, storageLocations, storeGroups, images)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Pagination",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "required": false,
            "description": "Pagination, items per page",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Store"
                      }
                    },
                    "links": {
                      "$ref": "#/components/schemas/PaginationLinks"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PaginationMeta"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores?filters[s]=searchTerm&filters[countryCode]=DEU&with=openingTimes,customData,settings,storageLocations,storeGroups,images&page=1&perPage=10\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores?filters[s]=searchTerm&filters[countryCode]=DEU&with=openingTimes,customData,settings,storageLocations,storeGroups,images&page=1&perPage=10\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores\";\nconst params = {\n  'filters[s]': 'searchTerm',\n  'filters[countryCode]': 'DEU',\n  'with': 'openingTimes,customData,settings,storageLocations,storeGroups,images',\n  'page': 1,\n  'perPage': 10\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.get(url, { params, headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/stores/{storeId}": {
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "Get store details",
        "description": "Returns details of a specific store",
        "operationId": "getStore",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "storeId (integer) or referenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          },
          {
            "name": "with",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of additional properties that should be included in the response (openingTimes, customData, settings, storageLocations, storeGroups, images)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Store"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123?with=openingTimes,customData,settings,storageLocations,storeGroups,images\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123?with=openingTimes,customData,settings,storageLocations,storeGroups,images\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123\";\nconst params = {\n  'with': 'openingTimes,customData,settings,storageLocations,storeGroups,images'\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.get(url, { params, headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      },
      "patch": {
        "tags": [
          "Stores"
        ],
        "summary": "Update store",
        "description": "Update a store",
        "operationId": "updateStores",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "storeId (integer) or referenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/StoreUpdate"
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Store"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X PATCH \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\" -H \"Content-Type: application/json\" -d '{\n  \"name\": \"Acme Corp.\",\n  \"email\": \"mail@example.org\",\n  \"address\": {\n    \"street\": \"Domstr.\",\n    \"houseNumber\": \"10\",\n    \"zipCode\": \"20095\",\n    \"city\": \"Hamburg\",\n    \"countryCode\": \"DEU\"\n  },\n  \"geoPoint\": {\n    \"lat\": 53.5511,\n    \"lng\": 9.9937\n  },\n  \"timezone\": \"Europe/Berlin\",\n  \"openingTimes\": {\n    \"mon\": [],\n    \"tue\": [],\n    \"wed\": [],\n    \"thu\": [],\n    \"fri\": [],\n    \"sat\": [],\n    \"sun\": [],\n    \"exceptions\": []\n  },\n  \"customData\": {},\n  \"settings\": {\n    \"shipFromStore\": true,\n    \"safetyStock\": 5\n  },\n  \"isActive\": true,\n  \"images\": [],\n  \"storageLocations\": [],\n  \"storeGroups\": [],\n  \"with\": \"openingTimes, customData, settings, storageLocations, storeGroups, images\"\n}'\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123\";\n\n$data = [\n  \"name\" => \"Acme Corp.\",\n  \"email\" => \"mail@example.org\",\n  \"address\" => [\n    \"street\" => \"Domstr.\",\n    \"houseNumber\" => \"10\",\n    \"zipCode\" => \"20095\",\n    \"city\" => \"Hamburg\",\n    \"countryCode\" => \"DEU\"\n  ],\n  \"geoPoint\" => [\n    \"lat\" => 53.5511,\n    \"lng\" => 9.9937\n  ],\n  \"timezone\" => \"Europe/Berlin\",\n  \"openingTimes\" => [\n    \"mon\" => [],\n    \"tue\" => [],\n    \"wed\" => [],\n    \"thu\" => [],\n    \"fri\" => [],\n    \"sat\" => [],\n    \"sun\" => [],\n    \"exceptions\" => []\n  ],\n  \"customData\" => new stdClass(),\n  \"settings\" => [\n    \"shipFromStore\" => true,\n    \"safetyStock\" => 5\n  ],\n  \"isActive\" => true,\n  \"images\" => [],\n  \"storageLocations\" => [],\n  \"storeGroups\" => [],\n  \"with\" => \"openingTimes, customData, settings, storageLocations, storeGroups, images\"\n];\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\",\n  \"Content-Type: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n  CURLOPT_CUSTOMREQUEST => \"PATCH\",\n  CURLOPT_POSTFIELDS => json_encode($data),\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123\";\nconst data = {\n  name: \"Acme Corp.\",\n  email: \"mail@example.org\",\n  address: {\n    street: \"Domstr.\",\n    houseNumber: \"10\",\n    zipCode: \"20095\",\n    city: \"Hamburg\",\n    countryCode: \"DEU\"\n  },\n  geoPoint: {\n    lat: 53.5511,\n    lng: 9.9937\n  },\n  timezone: \"Europe/Berlin\",\n  openingTimes: {\n    mon: [],\n    tue: [],\n    wed: [],\n    thu: [],\n    fri: [],\n    sat: [],\n    sun: [],\n    exceptions: []\n  },\n  customData: {},\n  settings: {\n    shipFromStore: true,\n    safetyStock: 5\n  },\n  isActive: true,\n  images: [],\n  storageLocations: [],\n  storeGroups: [],\n  with: \"openingTimes, customData, settings, storageLocations, storeGroups, images\"\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'Accept': 'application/json',\n  'Content-Type': 'application/json'\n};\n\naxios.patch(url, data, { headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      },
      "delete": {
        "tags": [
          "Stores"
        ],
        "summary": "Delete store",
        "description": "Delete a store",
        "operationId": "deleteStores",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "storeId (integer) or referenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Store deleted",
            "content": {
              "application/json": {}
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {}
            }
          },
          "404": {
            "description": "Store not found",
            "content": {
              "application/json": {}
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X DELETE \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n  CURLOPT_CUSTOMREQUEST => \"DELETE\",\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123\";\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.delete(url, { headers })\n  .then(response => console.log('Store deleted successfully'))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/stores/{storeId}/images/{imageId}": {
      "delete": {
        "tags": [
          "StoreImages"
        ],
        "summary": "Delete a store image",
        "operationId": "deleteStoreImage",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "storeId (integer) or referenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          },
          {
            "name": "imageId",
            "in": "path",
            "description": "ID of the image that needs to be deleted",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Store deleted",
            "content": {
              "application/json": {}
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {}
            }
          },
          "404": {
            "description": "Store not found",
            "content": {
              "application/json": {}
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X DELETE \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/images/456\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/images/456\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n  CURLOPT_CUSTOMREQUEST => \"DELETE\",\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/images/456\";\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.delete(url, { headers })\n  .then(response => console.log('Image deleted successfully'))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/stores/locator": {
      "get": {
        "tags": [
          "StoreInventoryLocator"
        ],
        "summary": "Returns a list of stores",
        "description": "Returns a list of stores, based on distance to a provided address",
        "operationId": "getStoreLocator",
        "parameters": [
          {
            "name": "filters[storeGroup]",
            "in": "query",
            "description": "store group identifier",
            "required": false,
            "schema": {
              "description": "store group identifier is the reference_key",
              "type": "string",
              "example": "reference_key_store_group"
            }
          },
          {
            "name": "filters[address]",
            "in": "query",
            "description": "street address of search origin (alternative to lat & lng)",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Domstraße 10, 20095 Hamburg"
            }
          },
          {
            "name": "filters[countryCode]",
            "in": "query",
            "description": "3 letter uppercase country code",
            "required": false,
            "schema": {
              "type": "string",
              "example": "DEU"
            }
          },
          {
            "name": "filters[geoPoint][lat]",
            "in": "query",
            "description": "latitude of search origin (alternative to address)",
            "required": false,
            "schema": {
              "type": "number",
              "example": 53.5492237
            }
          },
          {
            "name": "filters[geoPoint][lng]",
            "in": "query",
            "description": "longitude of search origin (alternative to address)",
            "required": false,
            "schema": {
              "type": "number",
              "example": 9.9912508
            }
          },
          {
            "name": "filters[radius]",
            "in": "query",
            "description": "search radius in meter",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 10000
            }
          },
          {
            "name": "with",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of additional properties that should be included in the response (openingTimes, customData, settings, storageLocations, storeGroups, images)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "max number of results",
            "required": false,
            "schema": {
              "type": "number",
              "example": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreLocator"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/locator?filters[storeGroup]=reference_key_store_group&filters[address]=Domstraße 10, 20095 Hamburg&filters[countryCode]=DEU&filters[geoPoint][lat]=53.5492237&filters[geoPoint][lng]=9.9912508&filters[radius]=10000&with=openingTimes,customData,settings,storageLocations,storeGroups,images&perPage=10\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/locator?filters[storeGroup]=reference_key_store_group&filters[address]=Domstraße 10, 20095 Hamburg&filters[countryCode]=DEU&filters[geoPoint][lat]=53.5492237&filters[geoPoint][lng]=9.9912508&filters[radius]=10000&with=openingTimes,customData,settings,storageLocations,storeGroups,images&perPage=10\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/locator\";\nconst params = {\n  'filters[storeGroup]': 'reference_key_store_group',\n  'filters[address]': 'Domstraße 10, 20095 Hamburg',\n  'filters[countryCode]': 'DEU',\n  'filters[geoPoint][lat]': 53.5492237,\n  'filters[geoPoint][lng]': 9.9912508,\n  'filters[radius]': 10000,\n  'with': 'openingTimes,customData,settings,storageLocations,storeGroups,images',\n  'perPage': 10\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.get(url, { params, headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/variants/locator": {
      "get": {
        "tags": [
          "StoreInventoryLocator"
        ],
        "summary": "Search variant availability in stores",
        "description": "Returns a list of stores, with availability of variant",
        "operationId": "getVariantAvailability",
        "parameters": [
          {
            "name": "filters[storeGroup]",
            "in": "query",
            "description": "store group identifier",
            "required": false,
            "schema": {
              "description": "store group identifier is the reference_key",
              "type": "string",
              "example": "reference_key_store_group"
            }
          },
          {
            "name": "filters[address]",
            "in": "query",
            "description": "Search origin address",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Domstraße 10, 20095 Hamburg"
            }
          },
          {
            "name": "filters[geoPoint][lat]",
            "in": "query",
            "description": "latitude of search origin (alternative to address)",
            "required": false,
            "schema": {
              "type": "number",
              "example": 53.5492237
            }
          },
          {
            "name": "filters[geoPoint][lng]",
            "in": "query",
            "description": "longitude of search origin (alternative to address)",
            "required": false,
            "schema": {
              "type": "number",
              "example": 9.9912508
            }
          },
          {
            "name": "filters[radius]",
            "in": "query",
            "description": "search radius in meters",
            "required": false,
            "schema": {
              "type": "integer",
              "example": 10000
            }
          },
          {
            "name": "variantId",
            "in": "query",
            "description": "Optional variantID, required if variantReferenceKey is not given",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "variantReferenceKey",
            "in": "query",
            "description": "Optional variantReferenceKey (prefixed with key=), required if variantId is not given",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "disableSafetyStock",
            "in": "query",
            "description": "optional parameter, if safetyStock should be disabled",
            "required": false,
            "schema": {
              "type": "boolean",
              "example": true
            }
          },
          {
            "name": "with",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of additional properties that should be included in the response (store.openingTimes, store.customData, store.settings, store.storeGroups, store.storageLocations, store.images)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VariantAvailability"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/variants/locator?filters[storeGroup]=reference_key_store_group&filters[address]=Domstraße 10, 20095 Hamburg&filters[geoPoint][lat]=53.5492237&filters[geoPoint][lng]=9.9912508&filters[radius]=10000&variantId=example_variant_id&variantReferenceKey=key=example_reference_key&disableSafetyStock=true&with=store.openingTimes,store.customData,store.settings,store.storeGroups,store.storageLocations,store.images\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/variants/locator?filters[storeGroup]=reference_key_store_group&filters[address]=Domstraße 10, 20095 Hamburg&filters[geoPoint][lat]=53.5492237&filters[geoPoint][lng]=9.9912508&filters[radius]=10000&variantId=example_variant_id&variantReferenceKey=key=example_reference_key&disableSafetyStock=true&with=store.openingTimes,store.customData,store.settings,store.storeGroups,store.storageLocations,store.images\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/variants/locator\";\nconst params = {\n  'filters[storeGroup]': 'reference_key_store_group',\n  'filters[address]': 'Domstraße 10, 20095 Hamburg',\n  'filters[geoPoint][lat]': 53.5492237,\n  'filters[geoPoint][lng]': 9.9912508,\n  'filters[radius]': 10000,\n  'variantId': 'example_variant_id',\n  'variantReferenceKey': 'key=example_reference_key',\n  'disableSafetyStock': true,\n  'with': 'store.openingTimes,store.customData,store.settings,store.storeGroups,store.storageLocations,store.images'\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.get(url, { params, headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/stores/{storeId}/variants": {
      "get": {
        "tags": [
          "Variants"
        ],
        "summary": "Returns a list of variants in store",
        "description": "Returns a list of variants, available in specific store",
        "operationId": "getStoreVariants",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "storeId (integer) or referenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          },
          {
            "name": "with",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of additional properties that should be included in the response (store.openingTimes, store.customData, store.settings, store.storeGroups, store.storageLocations, store.images)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Pagination",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "required": false,
            "description": "Pagination, items per page",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "disableSafetyStock",
            "in": "query",
            "description": "optional parameter, if safetyStock should be disabled",
            "required": false,
            "schema": {
              "type": "boolean",
              "example": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreVariants"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants?with=store.openingTimes,store.customData,store.settings,store.storeGroups,store.storageLocations,store.images&page=1&perPage=10&disableSafetyStock=true\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants?with=store.openingTimes,store.customData,store.settings,store.storeGroups,store.storageLocations,store.images&page=1&perPage=10&disableSafetyStock=true\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants\";\nconst params = {\n  'with': 'store.openingTimes,store.customData,store.settings,store.storeGroups,store.storageLocations,store.images',\n  'page': 1,\n  'perPage': 10,\n  'disableSafetyStock': true\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.get(url, { params, headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/stores/{storeId}/variants/{variantId}": {
      "get": {
        "tags": [
          "Variants"
        ],
        "summary": "Returns a specific variant in store",
        "description": "Returns a specific variants, available in specific store",
        "operationId": "getStoreVariant",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "storeId (integer) or referenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "description": "variantId OR variantReferenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1234
            }
          },
          {
            "name": "with",
            "in": "query",
            "required": false,
            "description": "Comma-separated list of additional properties that should be included in the response (store.openingTimes, store.customData, store.settings, store.storeGroups, store.storageLocations, store.images)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "disableSafetyStock",
            "in": "query",
            "description": "optional parameter, if safetyStock should be disabled",
            "required": false,
            "schema": {
              "type": "boolean",
              "example": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreVariantSingle"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants/1234?with=store.openingTimes,store.customData,store.settings,store.storeGroups,store.storageLocations,store.images&disableSafetyStock=true\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants/1234?with=store.openingTimes,store.customData,store.settings,store.storeGroups,store.storageLocations,store.images&disableSafetyStock=true\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants/1234\";\nconst params = {\n  'with': 'store.openingTimes,store.customData,store.settings,store.storeGroups,store.storageLocations,store.images',\n  'disableSafetyStock': true\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.get(url, { params, headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/stores/{storeId}/variants/{variantId}/stock-update": {
      "post": {
        "tags": [
          "Variants"
        ],
        "summary": "Update store variant stock level",
        "description": "Update the stores quantity of a variant",
        "operationId": "postStoreVariantStockUpdate",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "storeId (integer) or referenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "description": "variantId or variantReferenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStoreVariantStockLevel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "msg": {
                      "type": "string",
                      "example": "Stock updated"
                    }
                  }
                },
                "example": {
                  "msg": "Stock updated"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants/456/stock-update\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\" -H \"Content-Type: application/json\" -d '{\n  \"quantity\": 52,\n  \"source\": \"Tenant OMS\"\n}'\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants/456/stock-update\";\n\n$data = [\n  \"quantity\" => 52,\n  \"source\" => \"Tenant OMS\"\n];\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\",\n  \"Content-Type: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n  CURLOPT_POST => true,\n  CURLOPT_POSTFIELDS => json_encode($data),\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants/456/stock-update\";\nconst data = {\n  quantity: 52,\n  source: \"Tenant OMS\"\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'Accept': 'application/json',\n  'Content-Type': 'application/json'\n};\n\naxios.post(url, data, { headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/variants/batch-store-stock-update": {
      "post": {
        "tags": [
          "Variants"
        ],
        "summary": "Update store variant stock level in batches",
        "description": "Update the stores quantity for a given list of a variants",
        "operationId": "postVariantsBatchStockUpdate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchUpdateStoreVariantStockLevel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "msg": {
                      "type": "string",
                      "example": "Started batch stock update successfully"
                    }
                  }
                },
                "example": {
                  "msg": "Started batch stock update successfully"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/variants/batch-store-stock-update\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\" -H \"Content-Type: application/json\" -d '{\n  \"variants\": [\n    {\n      \"id\": \"key=abc-129\",\n      \"quantity\": 52,\n      \"store\": {\n        \"key\": \"key=store-123\"\n      }\n    },\n    {\n      \"id\": \"209292\",\n      \"quantity\": 30,\n      \"store\": {\n        \"key\": \"key=store-456\"\n      }\n    }\n  ],\n  \"source\": \"Tenant OMS\"\n}'\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/variants/batch-store-stock-update\";\n\n$data = [\n  \"variants\" => [\n    [\n      \"id\" => \"key=abc-129\",\n      \"quantity\" => 52,\n      \"store\" => [\n        \"key\" => \"key=store-123\"\n      ]\n    ],\n    [\n      \"id\" => \"209292\",\n      \"quantity\" => 30,\n      \"store\" => [\n        \"key\" => \"key=store-456\"\n      ]\n    ]\n  ],\n  \"source\" => \"Tenant OMS\"\n];\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\",\n  \"Content-Type: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n  CURLOPT_POST => true,\n  CURLOPT_POSTFIELDS => json_encode($data),\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/variants/batch-store-stock-update\";\nconst data = {\n  variants: [\n    {\n      id: \"key=abc-129\",\n      quantity: 52,\n      store: {\n        key: \"key=store-123\"\n      }\n    },\n    {\n      id: \"209292\",\n      quantity: 30,\n      store: {\n        key: \"key=store-456\"\n      }\n    }\n  ],\n  source: \"Tenant OMS\"\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'Accept': 'application/json',\n  'Content-Type': 'application/json'\n};\n\naxios.post(url, data, { headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/stores/{storeId}/variants/{variantId}/stock-delete": {
      "delete": {
        "tags": [
          "Variants"
        ],
        "summary": "Delete store variant stock level",
        "description": "Delete store variant stock level (detach Store from Variant)",
        "operationId": "deleteStoreVariantStockDelete",
        "parameters": [
          {
            "name": "storeId",
            "in": "path",
            "description": "storeId (integer) or referenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          },
          {
            "name": "variantId",
            "in": "path",
            "description": "variantId or variantReferenceKey (prefixed with key=)",
            "required": true,
            "schema": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Stock deleted",
            "content": {
              "application/json": {}
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {}
            }
          },
          "404": {
            "description": "Stock not found",
            "content": {
              "application/json": {}
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X DELETE \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants/456/stock-delete\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants/456/stock-delete\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n  CURLOPT_CUSTOMREQUEST => \"DELETE\",\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/stores/123/variants/456/stock-delete\";\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.delete(url, { headers })\n  .then(response => console.log('Store variant stock level deleted successfully'))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/orders": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Orders index",
        "description": "Get a list of orders",
        "operationId": "indexOrders",
        "parameters": [
          {
            "name": "storeId",
            "in": "query",
            "required": true,
            "description": "storeId (integer) or referenceKey (prefixed with key=)",
            "schema": {
              "oneOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          },
          {
            "name": "filters[orderType]",
            "in": "query",
            "required": false,
            "description": "Optional storeId",
            "schema": {
              "type": "string",
              "example": "pickupCollect"
            }
          },
          {
            "name": "filters[orderStatus]",
            "in": "query",
            "description": "Optional Order status",
            "required": false,
            "schema": {
              "type": "string",
              "example": "accepted"
            }
          },
          {
            "name": "filters[orderItemStatus]",
            "in": "query",
            "description": "Optional OrderItem status",
            "required": false,
            "schema": {
              "type": "string",
              "example": "accepted"
            }
          },
          {
            "name": "filters[date]",
            "in": "query",
            "description": "Optional Order Date (YYYY-MM-DD)",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2023-06-20"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional Sort (defaults to Order createdAt)",
            "required": false,
            "schema": {
              "type": "string",
              "example": "createdAt"
            }
          },
          {
            "name": "sortDir",
            "in": "query",
            "description": "Optional Sort direction (defaults desc)",
            "required": false,
            "schema": {
              "type": "string",
              "example": "desc"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Pagination",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "required": false,
            "description": "Pagination, items per page",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Order"
                      }
                    },
                    "links": {
                      "$ref": "#/components/schemas/PaginationLinks"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/PaginationMeta"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/orders?storeId=123&filters[orderType]=pickupCollect&filters[orderStatus]=accepted&filters[orderItemStatus]=accepted&filters[date]=2023-06-20&sort=createdAt&sortDir=desc&page=1&perPage=10\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/orders?storeId=123&filters[orderType]=pickupCollect&filters[orderStatus]=accepted&filters[orderItemStatus]=accepted&filters[date]=2023-06-20&sort=createdAt&sortDir=desc&page=1&perPage=10\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/orders\";\nconst params = {\n  storeId: 123,\n  'filters[orderType]': 'pickupCollect',\n  'filters[orderStatus]': 'accepted',\n  'filters[orderItemStatus]': 'accepted',\n  'filters[date]': '2023-06-20',\n  sort: 'createdAt',\n  sortDir: 'desc',\n  page: 1,\n  perPage: 10\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.get(url, { params, headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/order/scope-count": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get order count by scope",
        "description": "Get the count of orders grouped by their scope (incomingPackages, openFulfillment, readyForPickup)",
        "parameters": [
          {
            "name": "scopes[scopeName]",
            "in": "query",
            "required": true,
            "description": "Available scopeNames: incomingPackages, openFulfillment, readyForPickup",
            "schema": {
              "type": "string",
              "example": "incomingPackages"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "incomingPackages": {
                      "type": "number",
                      "example": 12
                    },
                    "openFulfillment": {
                      "type": "number",
                      "example": 84
                    },
                    "readyForPickup": {
                      "type": "number",
                      "example": 2
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/orders/{orderId}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get order details",
        "description": "Returns details of a specific order",
        "operationId": "getOrder",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "description": "SCAYLE orderId",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/orders/12345\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\"\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/orders/12345\";\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/orders/12345\";\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'accept': 'application/json'\n};\n\naxios.get(url, { headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    },
    "/orders/{orderId}/state": {
      "patch": {
        "tags": [
          "Orders"
        ],
        "summary": "Update order & orderItem status",
        "description": "Update the state of an order and its related orderItems",
        "operationId": "updateOrderState",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "description": "SCAYLE orderId",
            "schema": {
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "orderItemId": {
                          "type": "number",
                          "example": 23456
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "readyForPickup",
                            "pickedUp"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Order"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "description": "Unprocessable Entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X PATCH \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/orders/12345/state\" -H \"Authorization: Bearer YOUR_ACCESS_TOKEN\" -H \"accept: application/json\" -H \"Content-Type: application/json\" -d '{\n  \"items\": [\n    {\n      \"orderItemId\": 23456,\n      \"status\": \"readyForPickup\"\n    },\n    {\n      \"orderItemId\": 23457,\n      \"status\": \"pickedUp\"\n    }\n  ]\n}'\n"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n$url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/orders/12345/state\";\n\n$data = [\n  \"items\" => [\n    [\n      \"orderItemId\" => 23456,\n      \"status\" => \"readyForPickup\"\n    ],\n    [\n      \"orderItemId\" => 23457,\n      \"status\" => \"pickedUp\"\n    ]\n  ]\n];\n\n$headers = [\n  \"Authorization: Bearer YOUR_ACCESS_TOKEN\",\n  \"accept: application/json\",\n  \"Content-Type: application/json\"\n];\n\n$curl = curl_init();\ncurl_setopt_array($curl, [\n  CURLOPT_URL => $url,\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_HTTPHEADER => $headers,\n  CURLOPT_CUSTOMREQUEST => \"PATCH\",\n  CURLOPT_POSTFIELDS => json_encode($data),\n]);\n\n$response = curl_exec($curl);\ncurl_close($curl);\n\nif ($response === false) {\n  echo \"cURL Error: \" . curl_error($curl);\n} else {\n  echo $response;\n}\n"
          },
          {
            "lang": "javascript",
            "label": "nodeJS",
            "source": "const axios = require('axios');\n\nconst url = \"https://{{tenant-space}}-omnichannel.addon.scayle.cloud/api/v1/orders/12345/state\";\nconst data = {\n  items: [\n    {\n      orderItemId: 23456,\n      status: \"readyForPickup\"\n    },\n    {\n      orderItemId: 23457,\n      status: \"pickedUp\"\n    }\n  ]\n};\nconst headers = {\n  'Authorization': 'Bearer YOUR_ACCESS_TOKEN',\n  'Accept': 'application/json',\n  'Content-Type': 'application/json'\n};\n\naxios.patch(url, data, { headers })\n  .then(response => console.log(response.data))\n  .catch(error => console.error('Error:', error));\n"
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "UpdateStoreVariantStockLevel": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "integer",
            "example": 52
          },
          "source": {
            "type": "string",
            "example": "Tenant OMS"
          }
        }
      },
      "BatchUpdateStoreVariantStockLevel": {
        "type": "object",
        "properties": {
          "variants": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "example": "key=abc-129 or 209292",
                  "description": "if key=xxx is set, the reference goes to variantReferenceKey. If not it references to variantId"
                },
                "quantity": {
                  "type": "integer",
                  "example": 52
                },
                "store": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string",
                      "example": "key=abc-129 or 209292",
                      "description": "if key=xxx is set, the reference goes to variantReferenceKey. If not it references to variantId"
                    }
                  }
                }
              }
            }
          },
          "source": {
            "type": "string",
            "example": "Tenant OMS"
          }
        }
      },
      "KPIs": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "numZeroSearchResultsStoreLocator": {
                "type": "integer",
                "example": 53
              },
              "numZeroSearchResultsStoreInventoryLocator": {
                "type": "integer",
                "example": 53
              },
              "top5CitiesSearchedInStoreLocator": {
                "type": "object",
                "example": {
                  "Hamburg": 53,
                  "Berlin": 12
                }
              },
              "top5CitiesSearchedInStoreInventoryLocator": {
                "type": "object",
                "example": {
                  "Hamburg": 53,
                  "Berlin": 12
                }
              },
              "top5StoresFoundInStoreLocatorSearch": {
                "type": "object",
                "example": {
                  "22": 53,
                  "24": 12
                }
              },
              "top5StoresFoundInStoreInventoryLocatorSearch": {
                "type": "object",
                "example": {
                  "22": 53,
                  "24": 12
                }
              },
              "top5ProductsFoundInStoreInventoryLocatorSearch": {
                "type": "object",
                "example": {
                  "22": 53,
                  "24": 12
                }
              }
            }
          }
        }
      },
      "StoreBase": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "Acme Corp."
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "mail@example.org"
          },
          "address": {
            "type": "object",
            "properties": {
              "street": {
                "type": "string",
                "example": "Domstr."
              },
              "houseNumber": {
                "type": "string",
                "example": 10
              },
              "additional": {
                "type": "string",
                "example": null
              },
              "zipCode": {
                "type": "string",
                "example": 20095
              },
              "city": {
                "type": "string",
                "example": "Hamburg"
              },
              "countryCode": {
                "type": "string",
                "example": "DEU"
              }
            }
          },
          "timezone": {
            "type": "string",
            "example": "Europe/Berlin"
          },
          "openingTimes": {
            "type": "object",
            "properties": {
              "mon": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "tue": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "wed": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "thu": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "fri": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "sat": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "sun": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "exceptions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTimeException"
                }
              }
            }
          },
          "geoPoint": {
            "$ref": "#/components/schemas/GeoPoint"
          },
          "customData": {
            "type": "object"
          },
          "settings": {
            "type": "object",
            "properties": {
              "shipFromStore": {
                "type": "boolean",
                "example": true
              },
              "safetyStock": {
                "type": "number",
                "example": 5
              }
            }
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "StoreUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "Acme Corp."
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "mail@example.org"
          },
          "address": {
            "type": "object",
            "properties": {
              "street": {
                "type": "string",
                "example": "Domstr."
              },
              "houseNumber": {
                "type": "string",
                "example": 10
              },
              "additional": {
                "type": "string",
                "example": null
              },
              "zipCode": {
                "type": "string",
                "example": 20095
              },
              "city": {
                "type": "string",
                "example": "Hamburg"
              },
              "countryCode": {
                "type": "string",
                "example": "DEU"
              }
            }
          },
          "geoPoint": {
            "$ref": "#/components/schemas/GeoPoint"
          },
          "timezone": {
            "type": "string",
            "example": "Europe/Berlin"
          },
          "openingTimes": {
            "type": "object",
            "properties": {
              "mon": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "tue": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "wed": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "thu": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "fri": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "sat": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "sun": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "exceptions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTimeException"
                }
              }
            }
          },
          "customData": {
            "type": "object"
          },
          "settings": {
            "type": "object",
            "properties": {
              "shipFromStore": {
                "type": "boolean",
                "example": true
              },
              "safetyStock": {
                "type": "number",
                "example": 5
              }
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "images": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/Image"
                },
                {
                  "$ref": "#/components/schemas/ImageNew"
                }
              ]
            }
          },
          "storageLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StorageLocationUpdate"
            }
          },
          "storeGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StoreGroupNew"
            }
          },
          "with": {
            "type": "string",
            "description": "Comma-separated list of additional properties that should be included in the response",
            "example": "openingTimes, customData, settings, storageLocations, storeGroups, images"
          }
        }
      },
      "StoreCreate": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "example": "Acme Corp."
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "mail@example.org"
          },
          "address": {
            "type": "object",
            "required": [
              "street",
              "zipCode",
              "city",
              "countryCode"
            ],
            "properties": {
              "street": {
                "type": "string",
                "example": "Domstr."
              },
              "houseNumber": {
                "type": "string",
                "example": 10
              },
              "additional": {
                "type": "string",
                "example": null
              },
              "zipCode": {
                "type": "string",
                "example": 20095
              },
              "city": {
                "type": "string",
                "example": "Hamburg"
              },
              "countryCode": {
                "type": "string",
                "example": "DEU"
              }
            }
          },
          "geoPoint": {
            "$ref": "#/components/schemas/GeoPoint"
          },
          "timezone": {
            "type": "string",
            "example": "Europe/Berlin"
          },
          "openingTimes": {
            "type": "object",
            "properties": {
              "mon": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "tue": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "wed": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "thu": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "fri": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "sat": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "sun": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "exceptions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTimeException"
                }
              }
            }
          },
          "customData": {
            "type": "object"
          },
          "settings": {
            "type": "object",
            "properties": {
              "shipFromStore": {
                "type": "boolean",
                "example": true
              },
              "safetyStock": {
                "type": "number",
                "example": 5
              }
            }
          },
          "updateIfExists": {
            "type": "boolean",
            "example": true
          },
          "referenceKey": {
            "type": "string",
            "example": "1fc2c699-6a93-3321-b5e7-7cae83050410"
          },
          "isActive": {
            "type": "boolean",
            "example": true
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ImageNew"
            }
          },
          "storageLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StorageLocationNew"
            }
          },
          "storeGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StoreGroupNew"
            }
          },
          "with": {
            "type": "string",
            "description": "Comma-separated list of additional properties that should be included in the response",
            "example": "openingTimes, customData, settings, storageLocations, storeGroups, images"
          }
        }
      },
      "Store": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "example": 10
          },
          "referenceKey": {
            "type": "string",
            "example": "1fc2c699-6a93-3321-b5e7-7cae83050410"
          },
          "name": {
            "type": "string",
            "example": "Acme Corp."
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "mail@example.org"
          },
          "address": {
            "type": "object",
            "properties": {
              "street": {
                "type": "string",
                "example": "Domstr."
              },
              "houseNumber": {
                "type": "string",
                "example": 10
              },
              "additional": {
                "type": "string",
                "example": null
              },
              "zipCode": {
                "type": "string",
                "example": 20095
              },
              "city": {
                "type": "string",
                "example": "Hamburg"
              },
              "countryCode": {
                "type": "string",
                "example": "DEU"
              }
            }
          },
          "geoPoint": {
            "$ref": "#/components/schemas/GeoPoint"
          },
          "timezone": {
            "type": "string",
            "example": "Europe/Berlin"
          },
          "openingTimes": {
            "type": "object",
            "properties": {
              "mon": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "tue": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "wed": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "thu": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "fri": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "sat": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "sun": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTime"
                }
              },
              "exceptions": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OpeningTimeException"
                }
              },
              "currentlyOpen": {
                "type": "boolean",
                "example": true
              },
              "minutesUntilClosed": {
                "type": "integer",
                "example": 52
              }
            }
          },
          "customData": {
            "type": "object"
          },
          "settings": {
            "type": "object",
            "properties": {
              "shipFromStore": {
                "type": "boolean",
                "example": true
              },
              "safetyStock": {
                "type": "number",
                "example": 5
              }
            }
          },
          "isActive": {
            "type": "boolean"
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Image"
            }
          },
          "storageLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StorageLocation"
            }
          },
          "storeGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StoreGroup"
            }
          }
        }
      },
      "VariantLocatorStore": {
        "type": "array",
        "items": {
          "allOf": [
            {
              "$ref": "#/components/schemas/Store"
            },
            {
              "type": "object",
              "properties": {
                "quantity": {
                  "type": "integer",
                  "example": 18
                },
                "subtractedSafetyStock": {
                  "type": "integer",
                  "example": 5
                },
                "stockLevelUpdatedAt": {
                  "type": "string",
                  "example": "2024-02-29T10:00:34.000000Z"
                }
              }
            }
          ]
        }
      },
      "StoreLocator": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Store"
                },
                {
                  "type": "object",
                  "properties": {
                    "distance": {
                      "type": "integer",
                      "description": "distance to origin in meter",
                      "example": 4500
                    }
                  }
                }
              ]
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "searchAddress": {
                "type": "object",
                "properties": {
                  "geoPoint": {
                    "$ref": "#/components/schemas/GeoPoint"
                  }
                }
              }
            }
          }
        }
      },
      "VariantAvailability": {
        "type": "object",
        "properties": {
          "name": {
            "type": "object",
            "properties": {
              "de_DE": {
                "type": "string",
                "example": "Blaues Shirt"
              },
              "en_EN": {
                "type": "string",
                "example": "Blue Shirt"
              }
            }
          },
          "productId": {
            "type": "integer",
            "example": 165
          },
          "variantId": {
            "type": "integer",
            "example": 176
          },
          "productReferenceKey": {
            "type": "string",
            "example": "M0001-black1"
          },
          "variantReferenceKey": {
            "type": "string",
            "example": "M0001-black1-M"
          },
          "image": {
            "type": "string",
            "example": "https://cdn.example.com/images/cbeb9d806a4b.jpg"
          },
          "additionData": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "foo": {
                  "type": "string",
                  "example": "bar"
                }
              }
            }
          },
          "stores": {
            "$ref": "#/components/schemas/VariantLocatorStore"
          },
          "meta": {
            "type": "object",
            "properties": {
              "searchAddress": {
                "type": "object",
                "properties": {
                  "geoPoint": {
                    "type": "object",
                    "properties": {
                      "lat": {
                        "type": "number"
                      },
                      "lng": {
                        "type": "number"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "StoreVariants": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Store"
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              },
              "meta": {
                "$ref": "#/components/schemas/PaginationMeta"
              }
            }
          }
        ]
      },
      "StoreVariantSingle": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Store"
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProductVariant"
                }
              }
            }
          }
        ]
      },
      "ProductVariant": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "integer",
            "example": 165
          },
          "productReferenceKey": {
            "type": "string",
            "example": "M0001-black1"
          },
          "name": {
            "type": "object",
            "properties": {
              "de_DE": {
                "type": "string",
                "example": "Blaues Shirt"
              },
              "en_EN": {
                "type": "string",
                "example": "Blue Shirt"
              }
            }
          },
          "image": {
            "type": "string",
            "example": "https://cdn.example.com/images/cbeb9d806a4b.jpg"
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VariantItem"
            }
          }
        }
      },
      "VariantItem": {
        "type": "object",
        "properties": {
          "variantId": {
            "type": "integer",
            "example": 176
          },
          "variantReferenceKey": {
            "type": "string",
            "example": "M0001-black1-M"
          },
          "quantity": {
            "type": "integer",
            "example": 25
          },
          "subtractedSafetyStock": {
            "type": "integer",
            "example": "5,"
          },
          "updatedAt": {
            "type": "string",
            "example": "2024-02-29T10:00:34.000000Z"
          }
        }
      },
      "OpeningTime": {
        "type": "object",
        "properties": {
          "timeFrom": {
            "type": "string",
            "example": "08:00"
          },
          "timeUntil": {
            "type": "string",
            "example": "17:00"
          }
        }
      },
      "OpeningTimeException": {
        "type": "object",
        "properties": {
          "exceptionDate": {
            "type": "string",
            "maxLength": 10,
            "example": "2023-12-24T00:00:00.000Z"
          },
          "exceptionName": {
            "type": "string",
            "example": "Christmas"
          },
          "exceptionType": {
            "type": "string",
            "example": "open || closed"
          },
          "timeFrom": {
            "type": "string",
            "example": "08:00"
          },
          "timeUntil": {
            "type": "string",
            "example": "17:00"
          }
        }
      },
      "GeoPoint": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "example": 53.5492237
          },
          "lng": {
            "type": "number",
            "example": 9.9912508
          }
        }
      },
      "Order": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "number",
            "example": 12345
          },
          "orderType": {
            "type": "string",
            "example": "pickupCollect"
          },
          "orderKey": {
            "type": "string",
            "example": "7RVplPdxqQGDReedFd0UTpnQDCT51NMS"
          },
          "shopId": {
            "type": "number",
            "example": 1003
          },
          "shopKey": {
            "type": "string",
            "example": "ay"
          },
          "name": {
            "type": "string",
            "example": "John Doe"
          },
          "email": {
            "type": "string",
            "example": "jd@example.net"
          },
          "phoneNumber": {
            "type": "string",
            "example": "+49 012 3456 7890"
          },
          "status": {
            "type": "string",
            "example": "confirmed"
          },
          "shippingAddress": {
            "type": "object",
            "properties": {
              "street": {
                "type": "string",
                "example": "Domstraße"
              },
              "houseNumber": {
                "type": "string",
                "example": "10"
              },
              "additional": {
                "type": "string",
                "example": ""
              },
              "zipCode": {
                "type": "string",
                "example": "20095"
              },
              "city": {
                "type": "string",
                "example": "Hamburg"
              },
              "countryCode": {
                "type": "string",
                "example": "DEU"
              }
            }
          },
          "createdAt": {
            "type": "string",
            "example": "2023-06-21"
          },
          "updatedAt": {
            "type": "string",
            "example": "2023-06-21"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItem"
            }
          },
          "packages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Package"
            }
          }
        }
      },
      "OrderItem": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "confirmed"
          },
          "productId": {
            "type": "number",
            "example": 390
          },
          "productName": {
            "type": "object",
            "properties": {
              "de_DE": {
                "type": "string",
                "example": "T-Shirt"
              }
            }
          },
          "variantId": {
            "type": "number",
            "example": 65075
          },
          "variantReferenceKey": {
            "type": "string",
            "example": "49500ed2-22d7"
          },
          "orderItemId": {
            "type": "number",
            "example": 54321
          },
          "storeId": {
            "type": "number",
            "example": 17
          },
          "variant": {
            "type": "object",
            "properties": {
              "productId": {
                "type": "number",
                "example": 390
              },
              "variantId": {
                "type": "number",
                "example": 80845
              },
              "productReferenceKey": {
                "type": "string",
                "example": "1154ed2-54xs"
              },
              "variantReferenceKey": {
                "type": "string",
                "example": "49500ed2-22d7"
              },
              "name": {
                "type": "object",
                "properties": {
                  "de_DE": {
                    "type": "string",
                    "example": "T-Shirt xs red"
                  }
                }
              },
              "image": {
                "type": "string",
                "example": "https://url-to-image"
              }
            }
          },
          "storageLocation": {
            "type": "object",
            "properties": {
              "id": {
                "type": "number",
                "example": 1
              },
              "referenceKey": {
                "type": "string",
                "example": "SHELF-A"
              },
              "name": {
                "type": "string",
                "example": "Shelf A"
              }
            }
          },
          "packageId": {
            "type": "number",
            "example": 1
          }
        }
      },
      "Package": {
        "type": "object",
        "properties": {
          "packageId": {
            "type": "number",
            "example": 1
          },
          "carrierKey": {
            "type": "string",
            "example": "dhl"
          },
          "deliveryDateMin": {
            "type": "string",
            "example": "2024-03-24T00:00:00.000Z"
          },
          "deliveryDateMax": {
            "type": "string",
            "example": "2024-03-26T00:00:00.000Z"
          },
          "deliveryStatus": {
            "type": "string",
            "example": "in transit"
          },
          "trackingId": {
            "type": "string",
            "example": "ABC456789"
          }
        }
      },
      "PaginationLinks": {
        "type": "object",
        "properties": {
          "first": {
            "type": "string"
          },
          "last": {
            "type": "string"
          },
          "prev": {
            "type": "string"
          },
          "next": {
            "type": "string"
          }
        }
      },
      "PaginationMeta": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "currentPage": {
            "type": "number",
            "example": 1
          },
          "lastPage": {
            "type": "number",
            "example": 3
          },
          "from": {
            "type": "number",
            "example": 1
          },
          "to": {
            "type": "number",
            "example": 50
          },
          "perPage": {
            "type": "number",
            "example": 50
          },
          "total": {
            "type": "number",
            "example": 143
          },
          "firstPageUrl": {
            "type": "string"
          },
          "lastPageUrl": {
            "type": "string"
          },
          "prevPageUrl": {
            "type": "string"
          },
          "nextPageUrl": {
            "type": "string"
          }
        }
      },
      "Image": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 123
          },
          "name": {
            "type": "string",
            "example": "CLW4xYPvIvkvh7ZX5DpRq7Z5Hi6A4tQX.jpg"
          },
          "assetUrl": {
            "type": "string",
            "example": "images/custom-image-name.jpg"
          },
          "customData": {
            "type": "object"
          }
        }
      },
      "ImageNew": {
        "type": "object",
        "properties": {
          "customData": {
            "type": "object"
          },
          "source": {
            "type": "object",
            "description": "source of the image, can be either attachment or url",
            "properties": {
              "attachment": {
                "type": "string",
                "description": "base64 encoded"
              },
              "url": {
                "type": "string",
                "description": "url to an external image",
                "example": "https://cdn.example.com/images/example.jpg"
              }
            }
          }
        }
      },
      "StorageLocation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "referenceKey": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "StorageLocationNew": {
        "type": "object",
        "properties": {
          "referenceKey": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "StoreGroupNew": {
        "type": "object",
        "properties": {
          "referenceKey": {
            "type": "string"
          }
        }
      },
      "StorageLocationUpdate": {
        "type": "object",
        "properties": {
          "referenceKey": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "StoreGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "referenceKey": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "shop": {
            "type": "object",
            "properties": {
              "id": {
                "type": "number"
              },
              "companyId": {
                "type": "number"
              },
              "shopCountryId": {
                "type": "number"
              },
              "countryCode": {
                "type": "string"
              },
              "shopName": {
                "type": "string"
              },
              "shopKey": {
                "type": "string"
              },
              "shopId": {
                "type": "number"
              },
              "createdAt": {
                "type": "string",
                "example": "2024-03-27T13:51:40+01:00"
              },
              "updatedAt": {
                "type": "string",
                "example": "2024-03-27T13:51:40+01:00"
              }
            }
          },
          "createdAt": {
            "type": "string",
            "example": "2024-03-27T13:51:40+01:00"
          },
          "updatedAt": {
            "type": "string",
            "example": "2024-03-27T13:51:40+01:00"
          }
        },
        "example": "1d43daa8-248e-463a-be27-dd33d3069987"
      },
      "ApiResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      },
      "ValidationErrorResponse": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "The foo field is required. (and 1 more error)"
          },
          "errors": {
            "type": "object",
            "properties": {
              "foo": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "The foo field is required."
                }
              },
              "bar": {
                "type": "array",
                "items": {
                  "type": "string",
                  "example": "The bar must be at least 20 characters."
                }
              }
            }
          }
        }
      }
    },
    "requestBodies": {
      "StoreCreate": {
        "description": "Store object that needs to be added",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/StoreCreate"
            }
          }
        }
      },
      "StoreUpdate": {
        "description": "Store object that needs to be added",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/StoreUpdate"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  }
}