openapi: 3.0.0 info: version: 1.1.1 title: On Demand Rider Authentication Outlets API x-logo: url: data:image/svg+xml,%3Csvg width='173' height='28' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='translate(-64 -15)' fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h1350v60H0z'%3E%3C/path%3E%3Cpath d='M0 0h1350v60H0z'%3E%3C/path%3E%3Cg transform='translate(64 15)' fill='%23D61F26'%3E%3Cpath d='M32.18 13.383l-.021.012-3.754 1.531-.115.053-.915 4.18c-.061.143-.244.177-.367.058l-2.735-3.234-.013-.01-15.423 6.618a.103.103 0 01-.104-.176l13.333-9.98-1.687-3.852c-.084-.175.071-.362.277-.31h.002l4.086 1.006 3.172-2.823c.137-.107.323-.03.358.14l.31 4.241 3.658 2.141c.157.1.134.332-.062.405zM30.316 1.258C25.582-.6 20.376.795 17.164 4.365L4.63 17.793c-.169.181-.09.408.115.438l3.34.205c.267.017.3.247.166.404L.086 27.646c-.142.152.03.392.224.332l11.656-3.683c.246-.085.436.135.332.328l-1.56 2.756c-.08.157.071.372.267.358l16.804-3.743c4.015-.636 7.6-3.316 9.193-7.374 2.4-6.09-.598-12.967-6.686-15.362z'%3E%3C/path%3E%3Cpath d='M75.362 21.69h-3.829L74.53 7.658l4.176-1.535-3.343 15.565'%3E%3C/path%3E%3Cpath d='M67.138 13.653c-.917 0-1.444.759-1.658 1.638 1.813 0 2.362-.566 2.362-1.036 0-.33-.295-.602-.704-.602m-2.087 4.096c-.02.096-.04.274-.04.37 0 .625.428.84 1.562.84 1.013 0 2.456-.255 3.297-.546v2.868c-1.073.39-2.753.603-4.1.603-3.16 0-4.682-.859-4.682-3.725 0-2.814 1.307-7.201 6.344-7.201 3.198 0 4.153 1.445 4.153 2.968 0 1.97-1.696 3.647-6.534 3.823'%3E%3C/path%3E%3Cpath d='M82.316 10.455c-1.305 0-2.145-.839-2.145-1.99 0-1.503 1.054-2.341 2.359-2.341 1.328 0 2.148.838 2.148 1.97 0 1.522-1.034 2.361-2.362 2.361'%3E%3C/path%3E%3Cpath d='M79.63 11.31h3.94l-1.992 10.224h-3.98L79 14.354'%3E%3C/path%3E%3Cpath d='M94.925 11.31c-1.367 3.435-2.87 6.79-4.78 10.224h-4.88c-.623-3.24-.898-6.654-.818-10.224h3.981a47.373 47.373 0 00.036 4.994c.021.43.061.838.099 1.251h.022c.174-.413.368-.82.545-1.251.682-1.68 1.306-3.51 1.777-4.994h4.018'%3E%3C/path%3E%3Cpath d='M100.252 13.653c-.915 0-1.445.759-1.661 1.638 1.817 0 2.363-.566 2.363-1.036 0-.33-.29-.602-.702-.602m-2.086 4.096a2.33 2.33 0 00-.042.37c0 .625.431.84 1.561.84 1.016 0 2.46-.255 3.299-.546v2.868c-1.074.39-2.752.603-4.097.603-3.163 0-4.684-.859-4.684-3.725 0-2.814 1.306-7.201 6.341-7.201 3.2 0 4.155 1.445 4.155 2.968 0 1.97-1.694 3.647-6.533 3.823'%3E%3C/path%3E%3Cpath d='M112.351 14.92a4.396 4.396 0 00-.957-.12c-.879 0-1.581.88-1.895 2.5l-.816 4.235H104.7l1.993-10.224h2.987l.096 1.363c.916-1.13 1.64-1.716 2.752-1.716.506 0 .78.039.915.078l-1.091 3.883'%3E%3C/path%3E%3Cpath d='M124.799 11.31c-1.758 4.567-3.318 7.902-4.88 10.207-2.262 3.376-4.254 4.157-6.304 4.157-.605 0-1.247-.16-1.561-.314l.626-2.947h1.366c.683 0 .974-.275 1.424-.879-.761-2.75-1.133-6.594-1.094-10.224h4.002a44.95 44.95 0 00.039 4.936c.02.448.056.878.095 1.309h.02c.177-.413.37-.82.547-1.27a50.015 50.015 0 001.736-4.975h3.984'%3E%3C/path%3E%3Cpath d='M140.1 21.534h-4.2l.997-5.153h-3.553l-.997 5.153h-4.192l2.652-13.62h4.197l-.955 4.86h3.551l.957-4.86h4.193l-2.651 13.62'%3E%3C/path%3E%3Cpath d='M148.37 13.653c-.918 0-1.442.759-1.658 1.638 1.815 0 2.364-.566 2.364-1.036 0-.33-.296-.602-.706-.602m-2.088 4.096a2.32 2.32 0 00-.037.37c0 .625.43.84 1.559.84 1.016 0 2.46-.255 3.299-.546v2.868c-1.073.39-2.752.603-4.1.603-3.16 0-4.682-.859-4.682-3.725 0-2.814 1.307-7.201 6.342-7.201 3.2 0 4.158 1.445 4.158 2.968 0 1.97-1.7 3.647-6.539 3.823'%3E%3C/path%3E%3Cpath d='M160.467 14.92a4.333 4.333 0 00-.954-.12c-.877 0-1.581.88-1.893 2.5l-.82 4.235h-3.979l1.988-10.224h2.985l.1 1.363c.916-1.13 1.637-1.716 2.748-1.716.51 0 .782.039.92.078l-1.095 3.883'%3E%3C/path%3E%3Cpath d='M167.006 14.1c-1.6 0-2.03 2.44-2.03 3.533 0 .877.37 1.13 1.095 1.13 1.577 0 1.988-2.44 1.988-3.55 0-.858-.35-1.113-1.053-1.113m-1.485 7.784c-3.102 0-4.622-1.327-4.622-3.98 0-2.947 1.462-6.946 6.615-6.946 3.084 0 4.624 1.366 4.624 3.982 0 3.005-1.464 6.944-6.617 6.944'%3E%3C/path%3E%3Cpath d='M52.543 18.294h-.781l1.404-7.182h1.095c1.657 0 2.262.98 2.262 2.323 0 2.715-1.504 4.86-3.98 4.86m3.719-6.928l2.652-2.545c-1.035-.623-2.455-.908-4.227-.908h-5.073l-2.651 13.621h5.289c6.144 0 8.601-4.293 8.601-8.76 0-1.161-.25-2.09-.732-2.81l-3.86 1.402'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/svg%3E altText: Delivery Hero backgroundColor: '#FFFFFF' description: "# About\nThe On Demand Rider (ODR) API provides system-to-system integration to facilitate on-demand courier delivery service requests.\nEach integration is scoped as a specific Brand using a ClientID.\nEach delivery request will be called an Order.\nThe ODR API is supporting the following products:\n\n
\n \"Glovo\n \"Gostation\"\n \"Talabat\n \"Foody\"\n \"efood\"\n \"pandago\"\n \"foodora\n
\n\n\n## On Demand Concepts\n\n### Client\nA Client represents a **single integration for a specific Brand** and acts as the **\"parent vendor\"**. It contains high-level information such as:\n* Customer's known name of the Brand/Branch\n* General Address of the Brand/Branch that includes Latitude and Longitude.\n\n### Outlets\nOutlets are **the individual branches or vendor locations tied to the Client**. Each outlet represents the specific pickup location for deliveries. In ODR, if a client has **multiple locations**, they **can all be configured under the same parent vendor**.\nOutlet details include:\n* Branch vendor name\n* Address of outlet with latitude and longitude.\n \n\n**Note**: In ODR, **all orders should be sent from an Outlet**. Even if the client has only one location, the order should still originate from the Outlet and not the parent vendor.\n\n## Ordering Steps\n1. The Sender address must be specified when submitting an Order.\n2. The Sender latitude and longitude will be used to find the matching Branch/Outlet.\n\n### Supported Payment Methods\n| Payment Method | Description |\n| - | - |\n| PAID | Order has been fully paid already and courier will not collect any amount from the end customer |\n| CASH_ON_DELIVERY | Courier will collect payment (order amount) from the end customer upon delivery |\n| CARD_ON_DELIVERY | Payment by credit card upon receipt of the order |\n\n## API Endpoints and URLs\n\nBelow are the API endpoints for each brand and country:\n\n- Production URLs use DH-friendly domains when available.\n- Staging URLs always use raw infra domains.\n\n### Talabat\n| Country | Prod API | Stage API |\n| - | - | - |\n| United Arab Emirates | https://talabat-api-euw2.deliveryhero.io/ae | https://api-infra-eu-west-2.stg.ondemandrider.net/ae |\n| Bahrain | https://talabat-api-euw2.deliveryhero.io/bh | https://api-infra-eu-west-2.stg.ondemandrider.net/bh |\n| Egypt | https://talabat-api-euw2.deliveryhero.io/eg | https://api-infra-eu-west-2.stg.ondemandrider.net/eg |\n| Jordan | https://talabat-api-euw2.deliveryhero.io/jo | https://api-infra-eu-west-2.stg.ondemandrider.net/jo |\n| Kuwait | https://talabat-api-euw2.deliveryhero.io/kw | https://api-infra-eu-west-2.stg.ondemandrider.net/kw |\n| Oman | https://talabat-api-euw2.deliveryhero.io/om | https://api-infra-eu-west-2.stg.ondemandrider.net/om |\n| Qatar | https://talabat-api-euw2.deliveryhero.io/qa | https://api-infra-eu-west-2.stg.ondemandrider.net/qa |\n\n---\n\n### Hungerstation\n| Country | Prod API | Stage API |\n| - | - | - |\n| Saudi Arabia | https://talabat-api-euw2.deliveryhero.io/sa | https://api-infra-eu-west-2.stg.ondemandrider.net/sa |\n\n---\n\n### Pandago\n| Country | Prod API | Stage API |\n| - | - | - |\n| Bangladesh | https://pandago-api-apse.deliveryhero.io/bd | https://api-infra-ap-southeast-1.stg.ondemandrider.net/bd |\n| Hong Kong | https://pandago-api-apse.deliveryhero.io/hk | https://api-infra-ap-southeast-1.stg.ondemandrider.net/hk |\n| Cambodia | https://pandago-api-apse.deliveryhero.io/kh | https://api-infra-ap-southeast-1.stg.ondemandrider.net/kh |\n| Laos | https://pandago-api-apse.deliveryhero.io/la | https://api-infra-ap-southeast-1.stg.ondemandrider.net/la |\n| Myanmar | https://pandago-api-apse.deliveryhero.io/mm | https://api-infra-ap-southeast-1.stg.ondemandrider.net/mm |\n| Malaysia | https://pandago-api-apse.deliveryhero.io/my | https://api-infra-ap-southeast-1.stg.ondemandrider.net/my |\n| Philippines | https://pandago-api-apse.deliveryhero.io/ph | https://api-infra-ap-southeast-1.stg.ondemandrider.net/ph |\n| Pakistan (APSO) | https://pandago-api-apso.deliveryhero.io/pk | https://api-infra-ap-south-1.stg.ondemandrider.net/pk |\n| Singapore | https://pandago-api-apse.deliveryhero.io/sg | https://api-infra-ap-southeast-1.stg.ondemandrider.net/sg |\n| Thailand | https://pandago-api-apse.deliveryhero.io/th | https://api-infra-ap-southeast-1.stg.ondemandrider.net/th |\n| Taiwan | https://pandago-api-apse.deliveryhero.io/tw | https://api-infra-ap-southeast-1.stg.ondemandrider.net/tw |\n\n---\n\n### Foodora Go\n| Country | Prod API | Stage API |\n| - | - | - |\n| Czech Republic | https://talabat-api-euw2.deliveryhero.io/cz | https://api-infra-eu-west-2.stg.ondemandrider.net/cz |\n| Finland | https://foodorago-api-eun1.deliveryhero.io/fi | https://api-infra-eu-north-1.stg.ondemandrider.net/fi |\n| Hungary | https://talabat-api-euw2.deliveryhero.io/hu | https://api-infra-eu-west-2.stg.ondemandrider.net/hu |\n| Norway | https://foodorago-api-eun1.deliveryhero.io/no | https://api-infra-eu-north-1.stg.ondemandrider.net/no |\n| Sweden | https://foodorago-api-eun1.deliveryhero.io/se | https://api-infra-eu-north-1.stg.ondemandrider.net/se |\n| Austria | https://api-infra-eu-west-2.ondemandrider.net/at | https://api-infra-eu-west-2.stg.ondemandrider.net/at |\n\n---\n\n### Efood\n| Country | Prod API | Stage API |\n| - | - | - |\n| Greece | https://api-infra-eu-west-2.ondemandrider.net/gr | https://api-infra-eu-west-2.stg.ondemandrider.net/gr |\n\n---\n\n### Foody\n| Country | Prod API | Stage API |\n| - | - | - |\n| Cyprus | https://api-infra-eu-west-2.ondemandrider.net/cy | https://api-infra-eu-west-2.stg.ondemandrider.net/cy |\n\n---\n\n### Glovo\n| Country | Prod API | Stage API |\n| - | - | - |\n| Armenia | https://ondemand-api-glovoapp.deliveryhero.io/am | https://api-infra-eu-central-1.stg.ondemandrider.net/am |\n| Bosnia & Herzegovina | https://ondemand-api-glovoapp.deliveryhero.io/ba | https://api-infra-eu-central-1.stg.ondemandrider.net/ba |\n| Bulgaria | https://ondemand-api-glovoapp.deliveryhero.io/bg | https://api-infra-eu-central-1.stg.ondemandrider.net/bg |\n| Ivory Coast | https://ondemand-api-glovoapp.deliveryhero.io/ci | https://api-infra-eu-central-1.stg.ondemandrider.net/ci |\n| Spain | https://ondemand-api-glovoapp.deliveryhero.io/es | https://api-infra-eu-central-1.stg.ondemandrider.net/es |\n| Georgia | https://ondemand-api-glovoapp.deliveryhero.io/ge | https://api-infra-eu-central-1.stg.ondemandrider.net/ge |\n| Croatia | https://ondemand-api-glovoapp.deliveryhero.io/hr | https://api-infra-eu-central-1.stg.ondemandrider.net/hr |\n| Italy | https://ondemand-api-glovoapp.deliveryhero.io/it | https://api-infra-eu-central-1.stg.ondemandrider.net/it |\n| Kenya | https://ondemand-api-glovoapp.deliveryhero.io/ke | https://api-infra-eu-central-1.stg.ondemandrider.net/ke |\n| Kyrgyzstan | https://ondemand-api-glovoapp.deliveryhero.io/kg | https://api-infra-eu-central-1.stg.ondemandrider.net/kg |\n| Kazakhstan | https://ondemand-api-glovoapp.deliveryhero.io/kz | https://api-infra-eu-central-1.stg.ondemandrider.net/kz |\n| Morocco | https://ondemand-api-glovoapp.deliveryhero.io/ma | https://api-infra-eu-central-1.stg.ondemandrider.net/ma |\n| Moldova | https://ondemand-api-glovoapp.deliveryhero.io/md | https://api-infra-eu-central-1.stg.ondemandrider.net/md |\n| Montenegro | https://ondemand-api-glovoapp.deliveryhero.io/me | https://api-infra-eu-central-1.stg.ondemandrider.net/me |\n| Nigeria | https://ondemand-api-glovoapp.deliveryhero.io/ng | https://api-infra-eu-central-1.stg.ondemandrider.net/ng |\n| Poland | https://ondemand-api-glovoapp.deliveryhero.io/pl | https://api-infra-eu-central-1.stg.ondemandrider.net/pl |\n| Portugal | https://ondemand-api-glovoapp.deliveryhero.io/pt | https://api-infra-eu-central-1.stg.ondemandrider.net/pt |\n| Romania | https://ondemand-api-glovoapp.deliveryhero.io/ro | https://api-infra-eu-central-1.stg.ondemandrider.net/ro |\n| Serbia | https://ondemand-api-glovoapp.deliveryhero.io/rs | https://api-infra-eu-central-1.stg.ondemandrider.net/rs |\n| Tunisia | https://ondemand-api-glovoapp.deliveryhero.io/tn | https://api-infra-eu-central-1.stg.ondemandrider.net/tn |\n| Ukraine | https://ondemand-api-glovoapp.deliveryhero.io/ua | https://api-infra-eu-central-1.stg.ondemandrider.net/ua |\n| Uganda | https://ondemand-api-glovoapp.deliveryhero.io/ug | https://api-infra-eu-central-1.stg.ondemandrider.net/ug |\n\n---\n\n# Getting Started\n\n## 1. Provide a public key\nThese are the steps to start using the ODR API:\n1. Generate Key Pair (Private Key and Public Key) to support secure communication with the ODR API.\n\n Follow these commands on a terminal:\n ```bash\n # Generate private key\n # output: client.pem file\n openssl genrsa -out client.pem 2048\n\n # Generate public key from the generated private one\n # input: client.pem file\n # output: client.pub file\n openssl rsa -in client.pem -pubout > client.pub\n ```\n Or, follow these steps:\n 1. Open a browser and access [this Online RSA Generator](https://emn178.github.io/online-tools/rsa/key-generator/)\n 2. Select key length to 2048 bit, and click the Generate Key Pair button.\n 3. Copy and save the Private Key to a file with .pem extension (e.g. client.pem).\n 4. Copy and save the Public Key to a file with .pub extension (e.g. client.pub).\n2. The ODR representative will provide you with `ClientID`, `KeyID` and `Scope` that your service will need to generate an Access Token for the ODR API.\n | Attribute | Description | Example |\n | - | - | - |\n | ClientID | Your service identifier| pandago:sg:00000000-0000-0000-0000-000000000000 |\n | KeyID | Your public key identifier| 00000000-0000-0000-0000-000000000001 |\n | Scope | Access scope of your service| `pandago.api.{country code}.*` (ex: `pandago.api.pt.*`) |\n\n\n## 2. Generate signed JWT\nGenerate assertion as a signed token in Javascript Web Token (JWT) format.\n\nThis is the payload structure of the token:\n```\n{\n \"alg\":\"RS256\",\n \"typ\":\"JWT\",\n \"kid\": \"{{KeyID}}\"\n}\n.\n{\n \"iss\":\"{{ClientID}}\",\n \"sub\":\"{{ClientID}}\",\n \"jti\":\"{{random uuid (e.g. caa56777-4e88-4c59-be70-3ae513fd2e00)}}\",\n \"exp\":{{unix timestamp in the future (e.g. 1894712882)}},\n \"aud\":\"https://sts.deliveryhero.io\"\n}\n```\nAnd use your Private Key to sign the token.\n\n\uD83D\uDCA1 **Tips** \uD83D\uDCA1\n* Always use `https://sts.deliveryhero.io` for `aud` key, in both testing and prod environments\n* For the `exp` key, just get a future timestamp (ex in 1 year) with [unixtimestamp.com](https://www.unixtimestamp.com/index.php)\n\n## 3. Get a JWT access token\n\nFollow the instructions to call [the auth endpont](#tag/Authentication)\n" servers: - url: https://pandago-api-sandbox.deliveryhero.io/sg/api/v1 description: Sandbox environment - url: https://api-infra-eu-central-1.stg.ondemandrider.net/{country code}/api/v1 description: "Stage Glovo generic \uD83D\uDCA1 Find your country URL [here](#section/About/API-Endpoints-and-URLs) \uD83D\uDCA1" - url: https://ondemand-api-glovoapp.deliveryhero.io/{country code}/api/v1 description: "Production Glovo generic \uD83D\uDCA1 Find your country URL [here](#section/About/API-Endpoints-and-URLs) \uD83D\uDCA1" - url: https://ondemand-api-glovoapp.deliveryhero.io/pt/api/v1 description: Example in production for Glovo Portugal security: - Bearer_Token: [] tags: - name: Outlets paths: /outlets/{client_vendor_id}: summary: Operations put: summary: Create or Update an Outlet tags: - Outlets description: "*NOTE for vendors in Finland, Norway, and Sweden:*\n\nVendors in the the named countries have the option to work with coordinates (by providing **`latitude`** and **`longitude`**) or with addresses by providing **`address`**. Addresses should be specified in accordance with the format used by the national postal service of the specific country. Do not include additional address elements, like business names, floor numbers, etc. Delimit address elements by spaces. Examples:\n * Jakobsbergsgatan 24 111 44 Stockholm\n * Pasilankatu 10 00240 Helsinki\n * Waldemar Thranes gate 98 0175 Oslo\n\n*NOTE for vendors in Singapore:*\n\nVendors in Singapore have the option to work with location coordinates (by providing **`latitude`** and **`longitude`**) or with postal codes (by providing **`postal_code`**). If both location coordinates and postal codes are provided, only the coordinates will be used for finding the exact location.\nPostal code should be specified as a 6 digit number. For example: 752340.\n\n*NOTE on removing users:*\n\n* Users can only be removed while updating an outlet.\n* Adding and removing users in the same request is not recommended.\n" parameters: - name: Authorization in: header required: true schema: type: string default: Bearer {access-token} - name: client_vendor_id in: path required: true description: "ID of the outlet to update or to create.\n\uD83D\uDCA1 When creating an outlet, this will be the `client_vendor_id` of the outlet needed to fetch or update the outlet\n" schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateOrUpdateOutletRequest' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Outlet' '400': description: Invalid request body content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: response: value: message: Invalid request payload\n - recipient.phone_number is required '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: response: value: message: Unable to proceed, something went wrong get: summary: Get an Outlet tags: - Outlets parameters: - name: Authorization in: header required: true schema: type: string default: Bearer {access-token} - name: client_vendor_id in: path required: true description: ID of the outlet to get schema: type: string responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/VendorResponse' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: response: value: message: Outlet not found '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: response: value: message: Unable to proceed, something went wrong patch: summary: Partially Update an Outlet tags: - Outlets description: 'Use this endpoint to partially update an existing outlet. Only the fields provided in the request body will be updated; all other fields will remain unchanged. This is useful when you need to update specific outlet attributes without having to provide all required fields as in the PUT endpoint. *NOTE:* * At least one field must be provided for the update. * If both `latitude` and `longitude` are provided, they must be provided together. * The outlet must already exist and be active. * The parent vendor must be active. ' parameters: - name: Authorization in: header required: true schema: type: string default: Bearer {access-token} - name: client_vendor_id in: path required: true description: ID of the outlet to partially update schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchOutletRequest' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/Outlet' '400': description: Invalid request body content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: response: value: message: at least one field must be provided for update '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: response: value: message: Outlet not found '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: response: value: message: vendor is not a proper parent '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: response: value: message: Unable to proceed, something went wrong /outletList: summary: Bulk Operations get: summary: Get All Outlets description: 'Kindly use this endpoint to get all outlets created under a single parent vendor. This end point will work only with Brand Vendors. When any Outlet vendor sends this request, they will see an error message saying "This vendor is not a parent". ' tags: - Outlets parameters: - name: Authorization in: header required: true schema: type: string default: Bearer {access-token} responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/OutletListResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: response: value: message: This vendor is not a parent '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: response: value: message: Unable to proceed, something went wrong components: schemas: OutletListResponse: title: OutletListResponse type: array items: $ref: '#/components/schemas/OutletList' example: - client_vendor_id: outlet-8c3179cc-630b-4aba-83f1-8450f7954ed3 name: Order Anytime Delivery Anywhere address: 'Central #08-02' latitude: 1.2923742 longitude: 103.83231003 phone_number: '+6587654321' description: Some Outlet details created_at: 1636802000 - client_vendor_id: outlet-7a6202b5-8dc8-4b93-88ef-a7dd895dbe7f name: Order Anytime Delivery Anywhere address: '2nd Street #08-03' latitude: 1.86631006 longitude: 103.5486025 phone_number: '+6587654321' description: Some Outlet details created_at: 1636803000 - client_vendor_id: outlet-4b1dd7a8-90e2-4b00-a7ee-6cca61dc70f0 name: Order Anytime Delivery Anywhere address: '1st Street #08-04' latitude: 1.3823567 longitude: 103.6686023 phone_number: '+6587654321' description: Some Outlet details created_at: 1636804000 PostalCode: title: PostalCode **(can be used only for Singapore)** type: string maxLength: 120 description: Vendors in Singapore alone should use this attribute. If an accurate postal code is provided for Singapore orders, vendor does not need to provide address or lat/long information. example: 752340, 750313, 757046 ErrorResponse: title: Error Response type: object properties: message: type: string required: - message PhoneNumber: type: string format: e164 description: '* Phone number in E.164 standard (https://en.wikipedia.org/wiki/E.164) * libphonenumber is used for phone number validation ' example: '+6588888888' Longitude: title: Longitude type: number format: double minimum: -180 maximum: 180 Timestamp: title: Timestamp type: integer VendorResponse: title: VendorResponse type: object properties: client_vendor_id: $ref: '#/components/schemas/ClientVendorID' name: $ref: '#/components/schemas/Name' address: $ref: '#/components/schemas/Address' street: $ref: '#/components/schemas/Street' street_number: $ref: '#/components/schemas/StreetNumber' building: $ref: '#/components/schemas/Building' district: $ref: '#/components/schemas/District' postal_code: $ref: '#/components/schemas/PostalCode' rider_instructions: $ref: '#/components/schemas/RiderInstructions' latitude: $ref: '#/components/schemas/Latitude' longitude: $ref: '#/components/schemas/Longitude' city: $ref: '#/components/schemas/City' phone_number: $ref: '#/components/schemas/PhoneNumber' currency: $ref: '#/components/schemas/Currency' description: type: string locale: $ref: '#/components/schemas/Locale' halal: $ref: '#/components/schemas/Halal' example: client_vendor_id: outlet-987b61a1-7ccf-4447-82e0-6b9c1ab35a4f name: Order Anytime Delivery Anywhere address: '1 2nd Street #08-01' latitude: 1.2923742 longitude: 103.8486029 city: Singapore phone_number: '+6587654321' currency: SGD locale: en-SG description: any items are for sale required: - name - address - latitude - city - currency - description - locale - phone_number Address: type: string maxLength: 255 Locale: title: Locale type: string format: ISO639-1 example: en-SG Street: type: string maxLength: 300 RiderInstructions: type: string maxLength: 500 ClientVendorID: title: Client Outlet ID type: string maxLength: 255 Description: title: Description type: string maxLength: 1000 Building: type: string maxLength: 120 Currency: title: Currency type: string format: ISO4217 example: SGD District: type: string maxLength: 300 Name: title: Name type: string maxLength: 300 CreateOrUpdateOutletRequest: title: Create or Update an Outlet Response type: object properties: name: $ref: '#/components/schemas/Name' address: $ref: '#/components/schemas/Address' street: $ref: '#/components/schemas/Street' street_number: $ref: '#/components/schemas/StreetNumber' building: $ref: '#/components/schemas/Building' district: $ref: '#/components/schemas/District' postal_code: $ref: '#/components/schemas/PostalCode' rider_instructions: $ref: '#/components/schemas/RiderInstructions' latitude: $ref: '#/components/schemas/Latitude' longitude: $ref: '#/components/schemas/Longitude' city: $ref: '#/components/schemas/City' phone_number: $ref: '#/components/schemas/PhoneNumber' currency: $ref: '#/components/schemas/Currency' locale: $ref: '#/components/schemas/Locale' description: type: string halal: $ref: '#/components/schemas/Halal' add_user: type: array items: type: string format: email delete_user: type: array items: type: string format: email required: - name - address - latitude - longitude - city - phone_number - currency - locale example: name: Order Anytime Delivery Anywhere address: '1 2nd Street #08-01' latitude: 1.2923742 longitude: 103.8486029 city: Singapore phone_number: '+6587654321' currency: SGD locale: en-SG description: any items are for sale add_user: - example@email.com - example2@email.com Latitude: title: Latitude type: number format: double minimum: -90 maximum: 90 PatchOutletRequest: title: Partial Update Outlet Request description: 'Request body for partially updating an outlet. All fields are optional - only the fields provided will be updated. If updating coordinates, both latitude and longitude must be provided together. ' type: object properties: name: $ref: '#/components/schemas/Name' address: $ref: '#/components/schemas/Address' street: $ref: '#/components/schemas/Street' street_number: $ref: '#/components/schemas/StreetNumber' building: $ref: '#/components/schemas/Building' district: $ref: '#/components/schemas/District' postal_code: $ref: '#/components/schemas/PostalCode' rider_instructions: $ref: '#/components/schemas/RiderInstructions' latitude: $ref: '#/components/schemas/Latitude' longitude: $ref: '#/components/schemas/Longitude' city: $ref: '#/components/schemas/City' phone_number: $ref: '#/components/schemas/PhoneNumber' description: type: string halal: $ref: '#/components/schemas/Halal' example: name: Updated Outlet Name address: 123 New Street phone_number: '+6512345678' City: title: City type: string maxLength: 300 example: Singapore StreetNumber: type: string maxLength: 120 Outlet: title: Outlet type: object properties: vendor_id: type: string client_vendor_id: $ref: '#/components/schemas/ClientVendorID' name: $ref: '#/components/schemas/Name' address: $ref: '#/components/schemas/Address' street: $ref: '#/components/schemas/Street' street_number: $ref: '#/components/schemas/StreetNumber' building: $ref: '#/components/schemas/Building' district: $ref: '#/components/schemas/District' postal_code: $ref: '#/components/schemas/PostalCode' rider_instructions: $ref: '#/components/schemas/RiderInstructions' latitude: $ref: '#/components/schemas/Latitude' longitude: $ref: '#/components/schemas/Longitude' city: $ref: '#/components/schemas/City' phone_number: $ref: '#/components/schemas/PhoneNumber' currency: $ref: '#/components/schemas/Currency' description: type: string locale: $ref: '#/components/schemas/Locale' halal: $ref: '#/components/schemas/Halal' users: type: array items: type: string format: email example: client_vendor_id: outlet-987b61a1-7ccf-4447-82e0-6b9c1ab35a4f name: Order Anytime Delivery Anywhere address: '1 2nd Street #08-01' latitude: 1.2923742 longitude: 103.8486029 city: Singapore phone_number: '+6587654321' currency: SGD locale: en-SG description: any items are for sale vendor_id: a-bcde users: - example@email.com - example2@email.com required: - name - address - latitude - city - currency - description - locale - phone_number OutletList: title: OutletList type: object properties: client_vendor_id: $ref: '#/components/schemas/ClientVendorID' name: $ref: '#/components/schemas/Name' address: $ref: '#/components/schemas/Address' latitude: $ref: '#/components/schemas/Latitude' longitude: $ref: '#/components/schemas/Longitude' phone_number: $ref: '#/components/schemas/PhoneNumber' description: $ref: '#/components/schemas/Description' created_at: $ref: '#/components/schemas/Timestamp' required: - name - address - latitude - longitude - phone_number Halal: title: Halal type: boolean description: Boolean flag to determine that the Outlet has a valid Halal certification securitySchemes: Bearer_Token: type: apiKey name: Authorization in: header description: 'Provide the access token in the format: `Bearer {access-token}`. You can obtain the access token from the [Authentication endpoint](#tag/Authentication). ' x-tagGroups: - name: Authentication tags: - Authentication - name: Orders tags: - OrdersManagement - OrdersEstimation - RiderPosition - Proofs - name: Outlets tags: - Outlets - name: Callback tags: - Callback