openapi: 3.0.0
servers:
  - description: Production URL for the UK API
    url: https://uk.api.just-eat.io
  - description: Production URL for the DK, ES, IE, IT and NO API
    url: https://i18n.api.just-eat.io
  - description: Production URL for the AU and NZ API
    url: https://aus.api.just-eat.io
info:
  contact:
    x-twitter: JustEatUK
  description: |-
    # Just Eat API
    Just Eat offers services for our various business partners and our consumer applications.
    How you interact with the API depends on the services you wish to interact with.
    ## Security
    ### HTTPS
    All api calls and callbacks require HTTPS. Your service will need a valid SSL certificate and be accessible via the standard SSL port (port 443).
    ## Making an API request
    Some API calls require an API key, to authenticate the partner calling the API.
    ```
    PUT https://uk-partnerapi.just-eat.io/orders/abcd1234 HTTP/1.1
    Authorization: JE-API-KEY abcd123456789
    ```
    Other calls require a user token in the form of a JWT.
    ```
    GET https://uk.api.just-eat.io/consumer/me/orders/uk HTTP/1.1
    Authorization: Bearer abcd123456789
    ```

    ## Date Formats
    ### Date and time formats
    All dates and times should use the [ISO 8601 standard for representation of dates and times](https://en.wikipedia.org/wiki/ISO_8601).

    #### For instance:
    * DueDateWithUtcOffset: `"2015-05-26T14:52:35.5444292+01:00"`
      - Local time: `14:52`
      - UTC time: `13:52`
      - UTC offset: `+1hr` (due to daylight time saving)
    * DueDateWithUtcOffset: `"2015-02-03T11:10:00.0000000+00:00"`
      - Local time: `11:10`
      - UTC time: `11:10`
      - UTC offset: `0` (no daylight time saving, local time is equivalent to UTC)

    Note that the offset may be for a timezone different to your own, so you should alway convert to your own local time for display purposes (e.g. on receipts and terminals).

    ### Callback timestamps
    Timestamps sent to Just Eat should be recorded as the current local time (including any changes needed to account for daylight saving) with an accompanying offset that shows the difference between the recorded local time and the current UTC time.

    If it is not possible to record timestamps in local time, timestamps may be recorded in UTC time with a 00:00 offset.
    ## Async Webhooks
    Some of the webhooks on the platform are configured as being 'async' webhooks. These are for long-running operations, and work as follows:
      1. Your webhook is invoked with a `?callback={returnUrl}` query string parameter. The `returnUrl` is a unique URL that you will need to send the async response to.
      2. Return an immediate `202 Accepted` response from the webhook endpoint, to indicate that you have received the request.
      3. Perform the long-running operation. This can be deemed either a _success_; or a _failure_.
      4. If the result is a _**success**_, return the following:
      ```
      POST {returnUrl} HTTP/1.1

      {
            "status": "Success",
            "message": "{successMessage}",
            "data": {}   // webhook-specific response object
      }
      ```
      5. Otherwise, if the result is a _**failure**_, return the following:
      ```
      POST {returnUrl} HTTP/1.1

      {
            "status": "Failure",
            "message": "{failureMessage}",
            "data": {}   // webhook-specific response object
      }
      ```
  title: Just Eat UK
  version: 1.0.0
  x-apisguru-categories:
    - ecommerce
  x-logo:
    url: https://twitter.com/JustEatUK/profile_image?size=original
  x-origin:
    - format: openapi
      url: https://uk.api.just-eat.io/docs/openapi.json
      version: "3.0"
  x-providerName: just-eat.co.uk
paths:
  /acceptance-requested:
    post:
      description: This webhook will be invoked whenever acceptance has been requested for the order.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/acceptance-requested"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: Acceptance requested
      tags:
        - Order Acceptance Webhooks
        - publicly-accessible
  /attempted-delivery-query-resolved:
    put:
      description: This webhook will be invoked whenever an attempted delivery query has been resolved.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/attempted-delivery-resolved"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: Attempted delivery query resolved
      tags:
        - Attempted Delivery Webhooks
        - publicly-accessible
      x-status: Stable
  "/checkout/{tenant}/{checkoutId}":
    get:
      description: |
        Get the details required to fulfil an order, which includes:
          - The restaurant selling the items to be purchased
          - The customer making the purchase
          - How, where and when the items will be received by the customer
          - Instructions about the order
      parameters:
        - description: |
            A two-character country code. 

            The following countries are supported:
              - United Kingdom (UK)
              - Australia (AU)
              - New Zealand (NZ)
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: A unique identifier for a checkout. This is currently a Basket Id.
          in: path
          name: checkoutId
          required: true
          schema:
            type: string
        - description: Allows the server to identify the application making the request.
          in: header
          name: User-Agent
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              example:
                customer:
                  firstName: Joe
                  lastName: Bloggs
                  phoneNumber: "+447111111111"
                fulfilment:
                  location:
                    address:
                      administrativeArea: Somerset
                      lines:
                        - 1 Bristol Road
                      locality: Bristol
                      postalCode: BS1 1AA
                    geolocation:
                      latitude: 1
                      longitude: -1
                  time:
                    asap: false
                    scheduled:
                      from: 2020-01-01T00:30:00.000Z
                      to: 2020-01-01T00:30:00.000Z
                isFulfillable: true
                issues:
                  - code: RESTAURANT_NOT_TAKING_ORDERS
                  - additionalSpendRequired: 100
                    code: MINIMUM_ORDER_VALUE_NOT_MET
                    currency: GBP
                    minimumOrderValue: 1000
                restaurant:
                  availabilityId: "5678"
                  id: "1234"
                serviceType: delivery
              schema:
                $ref: "#/components/schemas/CheckoutGetResponse"
          description: "OK : Request has succeeded."
          headers:
            cache-control:
              description: Response caching must not be applied.
              schema:
                enum:
                  - no-store
                type: string
        "400":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: The tenant is invalid
                      errorCode: TENANT_INVALID
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutGet400Error"
          description: "BAD REQUEST : Cannot process the request due to error by client."
        "401":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Authentication required to access this resource
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "UNAUTHORIZED : Missing authentication credentials to access target resource."
        "403":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Access to the resource is forbidden
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "FORBIDDEN : Not authorised to access target resource."
        "404":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: The tenant is not supported
                      errorCode: TENANT_NOT_SUPPORTED
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/Checkout404Error"
          description: "NOT FOUND : Target resource could not be found."
        "409":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: The checkout is in an invalid state
                      errorCode: CHECKOUT_INVALID
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/Checkout409Error"
          description: "CONFLICT : Request not completed as it conflicts with target resource."
        "429":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Couldn't complete request
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "TOO MANY REQUESTS : Request not completed as server has received too many requests in a given amount of time."
        "500":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Internal Server Error
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "INTERNAL SERVER ERROR : Error on server preventing request from being fulfilled."
        "503":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Couldn't complete request
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "SERVICE UNAVAILABLE : Server currently unable to fulfil the request. The request can be retried."
      security:
        - Bearer: []
      summary: Get Checkout
      tags:
        - Checkout
        - publicly-accessible
      x-status: Stable
    patch:
      description: |
        Update the details required to fulfil an order, which includes:
          - The customer making the purchase
          - Where and when the items will be received by the customer
          - Instructions about the order
      parameters:
        - description: |
            A two-character country code. 

            The following countries are supported:
              - United Kingdom (UK)
              - Australia (AU)
              - New Zealand (NZ)
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: A unique identifier for a checkout. This is currently a Basket Id.
          in: path
          name: checkoutId
          required: true
          schema:
            type: string
        - description: Allows the server to identify the application making the request.
          in: header
          name: User-Agent
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json-patch+json:
            example:
              - op: add
                path: /customer
                value:
                  dateOfBirth: 1980-01-30
                  phoneNumber: "+447111111111"
            schema:
              $ref: "#/components/schemas/CheckoutUpdateRequest"
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                isFulfillable: true
                issues:
                  - code: RESTAURANT_NOT_TAKING_ORDERS
                  - additionalSpendRequired: 100
                    code: MINIMUM_ORDER_VALUE_NOT_MET
                    currency: GBP
                    minimumOrderValue: 1000
              schema:
                $ref: "#/components/schemas/CheckoutUpdateResponse"
          description: "OK : Request has succeeded."
          headers:
            cache-control:
              description: Response caching must not be applied.
              schema:
                enum:
                  - no-store
                type: string
        "400":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: The tenant is invalid
                      errorCode: TENANT_INVALID
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutUpdate400Error"
          description: "BAD REQUEST : Cannot process the request due to error by client."
        "401":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Authentication required to access this resource
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "UNAUTHORIZED : Missing authentication credentials to access target resource."
        "403":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Access to the resource is forbidden
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "FORBIDDEN : Not authorised to access target resource."
        "404":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: The tenant is not supported
                      errorCode: TENANT_NOT_SUPPORTED
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/Checkout404Error"
          description: "NOT FOUND : Target resource could not be found."
        "409":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: The checkout is in an invalid state
                      errorCode: CHECKOUT_INVALID
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/Checkout409Error"
          description: "CONFLICT : Request not completed as it conflicts with target resource."
        "429":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Couldn't complete request
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "TOO MANY REQUESTS : Request not completed as server has received too many requests in a given amount of time."
        "500":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Internal Server Error
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "INTERNAL SERVER ERROR : Error on server preventing request from being fulfilled."
        "503":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Couldn't complete request
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "SERVICE UNAVAILABLE : Server currently unable to fulfil the request. The request can be retried."
      security:
        - Bearer: []
      summary: Update Checkout
      tags:
        - Checkout
        - publicly-accessible
      x-status: Stable
  "/checkout/{tenant}/{checkoutId}/fulfilment/availabletimes":
    get:
      description: Gets a collection of times for when an order can be fulfilled.
      parameters:
        - description: |
            A two-character country code. 

            The following countries are supported:
              - United Kingdom (UK)
              - Australia (AU)
              - New Zealand (NZ)
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: A unique identifier for a checkout. This is currently a Basket Id.
          in: path
          name: checkoutId
          required: true
          schema:
            type: string
        - description: Allows the server to identify the application making the request.
          in: header
          name: User-Agent
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              example:
                asapAvailable: true
                times:
                  - from: 2020-01-01T00:30:00.000Z
                    to: 2020-01-01T00:45:00.000Z
                  - from: 2020-01-01T00:45:00.000Z
                    to: 2020-01-01T01:00:00.000Z
              schema:
                $ref: "#/components/schemas/GetAvailableFulfilmentTimesResponse"
          description: "OK : Request has succeeded."
          headers:
            cache-control:
              description: Response caching must not be applied.
              schema:
                enum:
                  - no-store
                type: string
        "400":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: The tenant is invalid
                      errorCode: TENANT_INVALID
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutGet400Error"
          description: "BAD REQUEST : Cannot process the request due to error by client."
        "404":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: The tenant is not supported
                      errorCode: TENANT_NOT_SUPPORTED
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/Checkout404Error"
          description: "NOT FOUND : Target resource could not be found."
        "409":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: The fulfilment time bands are in an invalid state
                      errorCode: FULFILMENT_TIME_BANDS_INVALID
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/AvailableFulfilmentTimes409Error"
          description: "CONFLICT : Request not completed as it conflicts with target resource."
        "429":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Couldn't complete request
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "TOO MANY REQUESTS : Request not completed as server has received too many requests in a given amount of time."
        "500":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Internal Server Error
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "INTERNAL SERVER ERROR : Error on server preventing request from being fulfilled."
        "503":
          content:
            application/json:
              example:
                fault:
                  errors:
                    - description: Couldn't complete request
                  faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                  traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/CheckoutDefaultError"
          description: "SERVICE UNAVAILABLE : Server currently unable to fulfil the request. The request can be retried."
      summary: Get Available Fulfilment Times
      tags:
        - Checkout
        - publicly-accessible
      x-status: Stable
  "/consumers/{tenant}":
    get:
      description: Currently this operation only supports retrieving a count of consumer accounts given an email address.
      parameters:
        - description: The identifier for the tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Email address of the consumer.
          in: query
          name: emailAddress
          required: true
          schema:
            type: string
        - description: The account type of the consumer - currently only 'registered' accounts are supported.
          in: query
          name: accountType
          required: true
          schema:
            default: registered
            enum:
              - registered
            type: string
        - description: Returns the number of consumers that matches the `emailAddress` and `accountType`. The query value should be empty, e.g. `/consumers/uk/?emailAddress=someone@email.com&accountType=registered&count`.
          in: query
          name: count
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            text/plain:
              example: 1
              schema:
                type: integer
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: The Email is missing or invalid.
                    errorCode: InvalidEmail
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request.
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Tenant not found
                    errorCode: TenantNotFound
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: The specified tenant does not exist.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
        "501":
          content:
            application/json:
              example:
                errors:
                  - description: Non-Count queries have not been implemented
                    errorCode: NotImplemented
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/5XXErrorSchema"
          description: The operation has not been implemented
      summary: Get consumers details
      tags:
        - Consumers
        - publicly-accessible
    post:
      description: Creates a consumer for the given tenant.
      parameters:
        - description: The identifier for the tenant. The only supported tenants are `uk`, `au` and `nz`
          in: path
          name: tenant
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ConsumerCreate"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConsumerCreateResponse"
          description: Consumer created.
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Email is required.
                    errorCode: BadRequest
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request.
        "403":
          content:
            application/json:
              example:
                errors:
                  - description: Not authorized to do this.
                    errorCode: Forbidden
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Forbidden.
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Tenant not found
                    errorCode: TenantNotFound
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: The specified tenant does not exist.
        "409":
          content:
            application/json:
              example:
                errors:
                  - description: The specified email already exists
                    errorCode: Conflict
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: The specified email already exists.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Create consumer
      tags:
        - Consumers
        - publicly-accessible
  "/consumers/{tenant}/me/communication-preferences":
    get:
      description: Get all communication preferences for a given consumer.
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              example:
                marketing:
                  isDefault: false
                  subscribedChannels:
                    - email
                    - sms
              schema:
                $ref: "#/components/schemas/CommunicationPreferences"
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "401":
          content:
            application/json:
              example:
                errors:
                  - description: You are unauthorized to perform this request.
                    errorCode: Unauthorized
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized
        "403":
          content:
            application/json:
              example:
                errors:
                  - description: You are forbidden from performing this request.
                    errorCode: Forbidden
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Forbidden
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Tenant could not be found.
                    errorCode: NotFound
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found
        "500":
          $ref: "#/components/responses/500ErrorResponse"
          description: Internal Server Error
      summary: Get communication preferences
      tags:
        - Consumers
        - publicly-accessible
  "/consumers/{tenant}/me/communication-preferences/{type}":
    get:
      description: Get channel subscriptions for a given consumer's communication preference type
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The type of communication preferences.
          in: path
          name: type
          required: true
          schema:
            $ref: "#/components/schemas/CommunicationTypes"
      responses:
        "200":
          content:
            application/json:
              example:
                isDefault: false
                subscribedChannels:
                  - email
                  - sms
              schema:
                $ref: "#/components/schemas/ChannelSubscriptionsWithDerivedField"
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "401":
          content:
            application/json:
              example:
                errors:
                  - description: You are unauthorized to perform this request.
                    errorCode: Unauthorized
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized
        "403":
          content:
            application/json:
              example:
                errors:
                  - description: You are forbidden from performing this request.
                    errorCode: Forbidden
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Forbidden
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Tenant could not be found.
                    errorCode: NotFound
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found
        "500":
          $ref: "#/components/responses/500ErrorResponse"
          description: Internal Server Error
      summary: Get channel subscriptions for a given consumer's communication preference type
      tags:
        - Consumers
        - publicly-accessible
    put:
      description: Set only the channel subscriptions for a given consumer's communication preference type. E.g., An empty list of subscribed Channels implies unsubscribe from all channels.
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The type of communication preferences.
          in: path
          name: type
          required: true
          schema:
            $ref: "#/components/schemas/CommunicationTypes"
      requestBody:
        content:
          application/json:
            example:
              subscribedChannels:
                - email
                - sms
            schema:
              $ref: "#/components/schemas/ChannelSubscriptions"
        description: The list of channels that the consumer should be subscribed to.
        required: true
      responses:
        "204":
          content: {}
          description: Success
        "401":
          content:
            application/json:
              example:
                errors:
                  - description: You are unauthorized to perform this request.
                    errorCode: Unauthorized
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Tenant could not be found.
                    errorCode: NotFound
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found
        "500":
          $ref: "#/components/responses/500ErrorResponse"
          description: Internal Server Error
      summary: Set only the channel subscriptions for a given consumer's communication preference type
      tags:
        - Consumers
        - publicly-accessible
  "/consumers/{tenant}/me/communication-preferences/{type}/subscribedChannels/{channel}":
    delete:
      description: Remove subscription of a specific communication preference channel.
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The type of communication preference.
          in: path
          name: type
          required: true
          schema:
            $ref: "#/components/schemas/CommunicationTypes"
        - description: The channel.
          in: path
          name: channel
          required: true
          schema:
            type: string
      requestBody:
        content: {}
        required: false
      responses:
        "204":
          content: {}
          description: Success
        "401":
          content:
            application/json:
              example:
                errors:
                  - description: You are unauthorized to perform this request.
                    errorCode: Unauthorized
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Tenant could not be found.
                    errorCode: NotFound
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found
        "500":
          $ref: "#/components/responses/500ErrorResponse"
          description: Internal Server Error
      summary: Remove subscription of a specific communication preference channel
      tags:
        - Consumers
        - publicly-accessible
    post:
      description: Subscribe to a specific communication preference channel.
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The type of communication preferences.
          in: path
          name: type
          required: true
          schema:
            $ref: "#/components/schemas/CommunicationTypes"
        - description: The channel.
          in: path
          name: channel
          required: true
          schema:
            $ref: "#/components/schemas/CommunicationChannels"
      requestBody:
        content: {}
        required: false
      responses:
        "204":
          content: {}
          description: Success
        "401":
          content:
            application/json:
              example:
                errors:
                  - description: You are unauthorized to perform this request.
                    errorCode: Unauthorized
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized
        "403":
          content:
            application/json:
              example:
                errors:
                  - description: You are forbidden from performing this request.
                    errorCode: Forbidden
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Forbidden
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Tenant could not be found.
                    errorCode: NotFound
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found
        "500":
          $ref: "#/components/responses/500ErrorResponse"
          description: Internal Server Error
      summary: Subscribe to a specific communication preference channel
      tags:
        - Consumers
        - publicly-accessible
  /delivery-failed:
    put:
      description: This webhook will be invoked whenever an attempted delivery event is created from the device.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/attempted-delivery-created"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: Delivery Attempt Failed
      tags:
        - Attempted Delivery Webhooks
        - publicly-accessible
  "/delivery-fees/{tenant}":
    get:
      description: Retrieve delivery fees for many restaurants. Returns fees and minimum order values required for delivery orders.
      parameters:
        - description: Tenant containing the restaurants.
          example: uk
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Restaurant IDs which fees are requested for. e.g. `?restaurantIds=1,2,3,4`
          example:
            - "1"
            - "2"
            - "3"
            - "4"
          explode: false
          in: query
          name: restaurantIds
          required: true
          schema:
            items:
              type: string
            maxItems: 200
            type: array
          style: form
        - description: Delivery date/time when fees are required (ISO8601 format).
          example: 2019-09-05T12:43:48.431Z
          in: query
          name: deliveryTime
          required: true
          schema:
            format: date-time
            type: string
        - description: Postcode or other location name identifying the location to which delivery is required. For use when precise location is not available. This will be removed in future in favour of location.
          example: BS1
          in: query
          name: zone
          required: false
          schema:
            type: string
        - description: Point to which delivery is required (latitude, longitude). Supply this where possible as support for zone-only based lookups will be removed in future.
          example:
            - 51.3851513
            - -2.0841275
          explode: false
          in: query
          name: latlong
          required: false
          schema:
            items:
              format: double
              type: number
            maxItems: 2
            minItems: 2
            type: array
          style: form
      responses:
        "200":
          content:
            application/json:
              examples:
                flatRate:
                  summary: Single fee, with and without minimum order value
                  value:
                    restaurants:
                      - bands:
                          - fee: 250
                            minimumAmount: 1000
                        minimumOrderValue: 1000
                        restaurantId: "1234"
                      - bands:
                          - fee: 100
                            minimumAmount: 0
                        minimumOrderValue: 0
                        restaurantId: "5678"
                flatRateWithFreeTier:
                  summary: Single fee with minimum order value, and free delivery threshold
                  value:
                    restaurants:
                      - bands:
                          - fee: 250
                            minimumAmount: 1000
                          - fee: 0
                            minimumAmount: 2000
                        minimumOrderValue: 1000
                        restaurantId: "1234"
                threeTier:
                  summary: No minimum order value, three pricing tiers
                  value:
                    restaurants:
                      - bands:
                          - fee: 250
                            minimumAmount: 0
                          - fee: 100
                            minimumAmount: 10
                          - fee: 0
                            minimumAmount: 2000
                        minimumOrderValue: 0
                        restaurantId: "1234"
              schema:
                nullable: true
                properties:
                  restaurants:
                    description: Collection of restaurants for which delivery fees were found.
                    items:
                      $ref: "#/components/schemas/RestaurantDeliveryFees"
                    type: array
                type: object
          description: Success
        "400":
          description: Bad request
        "404":
          description: Not found
      summary: Get restaurant delivery fees
      tags:
        - DeliveryFee
        - publicly-accessible
  /delivery/estimate:
    get:
      deprecated: true
      description: Get delivery estimate
      parameters:
        - description: The reference of the restaurant to estimate the delivery time from.
          in: query
          name: restaurantReference
          required: true
          schema:
            type: string
        - description: The latitude of the position to estimate the delivery time to.
          in: query
          name: toLat
          required: false
          schema:
            type: string
        - description: The longitude of the position to estimate the delivery time to.
          in: query
          name: toLon
          required: false
          schema:
            type: string
        - description: The postcode to estimate the delivery time to.
          in: query
          name: toPostcode
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/estimated-delivery-time"
          description: OK
      summary: Get delivery estimate
      tags:
        - Order Delivery API
        - publicly-accessible
  /delivery/pools:
    get:
      description: A delivery pool is a named group of drivers which deliver food for a set of restaurants.
      responses:
        "200":
          content:
            application/json:
              examples:
                response:
                  value:
                    b9c6673b8e5948b98cfbd14a982de2c2:
                      name: Toronto - East
                      restaurants:
                        - 789
                    d5f72466a6dd49a08166d5a044c5b9e4:
                      name: Toronto - West
                      restaurants:
                        - 123
                        - 456
              schema:
                properties:
                  delivery-pool-id:
                    properties:
                      name:
                        description: The name of the pool, used by operations teams, in reports, etc.
                        type: string
                      restaurants:
                        description: A list of Just Eat restaurant ids served by the delivery pool.
                        items:
                          format: int32
                          type: number
                        type: array
                    type: object
                type: object
          description: OK
        "500":
          content:
            text/plain:
              examples:
                response:
                  value: Internal Server Error
          description: Internal Server Error
      summary: Get your delivery pools
      tags:
        - Delivery Pools API
        - publicly-accessible
    post:
      description: A delivery pool is a named group of drivers which deliver food for a set of restaurants.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/create-delivery-pool"
        required: true
      responses:
        "201":
          description: Pool has been created.
        "400":
          content:
            application/json:
              examples:
                response:
                  value:
                    name:
                      - "'Name' should not be empty"
          description: There was something invalid in your request - check response body for details
        "500":
          content:
            text/plain:
              examples:
                response:
                  value: Internal Server Error
          description: Internal Server Error
      summary: Create a new delivery pool
      tags:
        - Delivery Pools API
        - publicly-accessible
  "/delivery/pools/{deliveryPoolId}":
    delete:
      description: The restaurants will no longer be associated with the pool.
      responses:
        "200":
          description: Pool deleted
        "404":
          description: The pool could not be found
        "500":
          content:
            text/plain:
              examples:
                response:
                  value: Internal Server Error
          description: Internal Server Error
      summary: Delete a delivery pool
      tags:
        - Delivery Pools API
        - publicly-accessible
    get:
      description: A delivery pool is a named group of drivers which deliver food for a set of restaurants.
      responses:
        "200":
          content:
            application/json:
              examples:
                response:
                  value:
                    name: Toronto - West
                    restaurants:
                      - 123
                      - 456
              schema:
                properties:
                  name:
                    description: The name of the pool, used by operations teams, in reports, etc.
                    type: string
                  restaurants:
                    description: A list of Just Eat restaurant ids served by the delivery pool.
                    items:
                      format: int32
                      type: number
                    type: array
                type: object
          description: OK
        "404":
          description: The pool could not be found
        "500":
          content:
            text/plain:
              examples:
                response:
                  value: Internal Server Error
          description: Internal Server Error
      summary: Get an individual delivery pool
      tags:
        - Delivery Pools API
        - publicly-accessible
    parameters:
      - description: Identifier for the pool
        in: path
        name: deliveryPoolId
        required: true
        schema:
          type: string
    patch:
      description: Modify a delivery pool, changing its name, restaurants or both
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/patch-delivery-pool"
        description: Request body should contain an object with either or both of the properties. If a property is not specified then the existing values are retained.
        required: true
      responses:
        "202":
          content:
            application/json:
              examples:
                response:
                  value:
                    name: Toronto - North
                    restaurants:
                      - 123
                      - 456
              schema:
                properties:
                  name:
                    description: The name of the pool, used by operations teams, in reports, etc.
                    type: string
                  restaurants:
                    description: A list of Just Eat restaurant ids served by the delivery pool.
                    items:
                      format: int32
                      type: number
                    type: array
                type: object
          description: Pool has been updated
        "400":
          content:
            application/json:
              examples:
                response:
                  value:
                    name:
                      - "'Name' should not be empty"
          description: There was something invalid in your request - check response body for details
        "404":
          description: The pool could not be found
        "409":
          content:
            text/plain:
              examples:
                response:
                  value: "Restaurant(s) are already assigned to pools : `{RestaurantId:55474, PoolId:cccebb96452349b799b71a7adc51df66}`"
          description: A restaurant in your request already belongs to another pool
        "500":
          content:
            text/plain:
              examples:
                response:
                  value: Internal Server Error
          description: Internal Server Error
      summary: Modify a delivery pool
      tags:
        - Delivery Pools API
        - publicly-accessible
    put:
      description: Replace an existing delivery pool changing all of its properties
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/create-delivery-pool"
        required: true
      responses:
        "202":
          content:
            application/json:
              examples:
                response:
                  value:
                    name: Toronto - West
                    restaurants:
                      - 123
                      - 456
              schema:
                properties:
                  name:
                    description: The name of the pool, used by operations teams, in reports, etc.
                    type: string
                  restaurants:
                    description: A list of Just Eat restaurant ids served by the delivery pool.
                    items:
                      format: int32
                      type: number
                    type: array
                type: object
          description: Pool has been replaced
        "400":
          content:
            application/json:
              examples:
                response:
                  value:
                    name:
                      - "'Name' should not be empty"
          description: There was something invalid in your request - check response body for details
        "404":
          description: The pool could not be found
        "409":
          content:
            text/plain:
              examples:
                response:
                  value: "Restaurant(s) are already assigned to pools : `{RestaurantId:55474, PoolId:cccebb96452349b799b71a7adc51df66}`"
          description: A restaurant in your request already belongs to another pool
        "500":
          content:
            text/plain:
              examples:
                response:
                  value: Internal Server Error
          description: Internal Server Error
      summary: Replace an existing delivery pool
      tags:
        - Delivery Pools API
        - publicly-accessible
  "/delivery/pools/{deliveryPoolId}/availability/relative":
    get:
      description: Get the current amount of time it will take a driver to collect a new order from a restaurant in the pool.
      responses:
        "200":
          content:
            application/json:
              examples:
                request:
                  value:
                    bestGuess: 00:35:00
              schema:
                properties:
                  bestGuess:
                    description: Your best estimation (hh:mm:ss)
                    type: string
                type: object
          description: OK
        "404":
          description: The pool could not be found
      summary: Get availability for pickup
      tags:
        - Delivery Pools API
        - publicly-accessible
    parameters:
      - description: Identifier for the pool
        in: path
        name: deliveryPoolId
        required: true
        schema:
          type: string
    put:
      description: Set the average amount of time it will take a driver to collect a new order from a restaurant in the pool.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/estimated-time"
        required: true
      responses:
        "202":
          description: Update will take effect shortly
        "404":
          description: The pool could not be found
      summary: Set availability for pickup
      tags:
        - Delivery Pools API
        - publicly-accessible
  "/delivery/pools/{deliveryPoolId}/hours":
    parameters:
      - description: Identifier for the pool
        in: path
        name: deliveryPoolId
        required: true
        schema:
          type: string
    put:
      description: Set the daily start and end times for a pool or set closed flag if the pool does not operate on that day. Start and end times for all days must be provided. Though the API accepts array of start and end times for each day, multiple start and end time for a day are not accepted. If the end time for a day is equal to or before start time, end time will be considered as time for the next day.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/delivery-pool-hours"
        required: true
      responses:
        "200":
          description: Pool hours have been updated
        "404":
          description: The pool could not be found
      summary: Set the delivery pools daily start and end times
      tags:
        - Delivery Pools API
        - publicly-accessible
  "/delivery/pools/{deliveryPoolId}/restaurants":
    delete:
      description: Remove restaurants from a delivery pool
      requestBody:
        content:
          application/json:
            schema:
              example:
                restaurants:
                  - 123
                  - 456
              properties:
                restaurants:
                  description: A list of Just Eat restaurant ids served by the delivery pool.
                  items:
                    format: int32
                    type: number
                  type: array
              type: object
        required: true
      responses:
        "200":
          description: Pool has been updated
        "400":
          description: There was something invalid in your request - check response body for details
        "404":
          description: The pool could not be found
      summary: Remove restaurants from a delivery pool
      tags:
        - Delivery Pools API
        - publicly-accessible
    parameters:
      - description: Identifier for the pool
        in: path
        name: deliveryPoolId
        required: true
        schema:
          type: string
    put:
      description: Add additional restaurants to a delivery pool
      responses:
        "200":
          content:
            application/json:
              examples:
                response:
                  value:
                    restaurants:
                      - 123
                      - 456
              schema:
                $ref: "#/components/schemas/delivery-restaurantslist"
          description: OK
        "400":
          description: There was something invalid in your request - check response body for details
        "404":
          description: The pool could not be found
        "409":
          description: The restaurants could not be added to the pool. Typically this is because they are already assigned to another pool
      summary: Add restaurants to an existing delivery pool
      tags:
        - Delivery Pools API
        - publicly-accessible
  /driver-assigned-to-delivery:
    put:
      description: Driver Assigned to Delivery
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/driver-status"
        required: true
      responses:
        "200":
          description: OK
      summary: Driver Assigned to Delivery
      tags:
        - Order Delivery Webhooks
        - publicly-accessible
  /driver-at-delivery-address:
    put:
      description: Driver at delivery address
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/driver-status"
        required: true
      responses:
        "200":
          description: OK
      summary: Driver at delivery address
      tags:
        - Order Delivery Webhooks
        - publicly-accessible
  /driver-at-restaurant:
    put:
      description: Driver at restaurant
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/driver-status"
        required: true
      responses:
        "200":
          description: OK
      summary: Driver at restaurant
      tags:
        - Order Delivery Webhooks
        - publicly-accessible
  /driver-has-delivered-order:
    put:
      description: Driver has delivered order
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/driver-status"
        required: true
      responses:
        "200":
          description: OK
      summary: Driver has delivered order
      tags:
        - Order Delivery Webhooks
        - publicly-accessible
  /driver-location:
    put:
      description: Driver Location
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/driver-location"
        required: true
      responses:
        "200":
          description: OK
      summary: Driver Location
      tags:
        - Order Delivery Webhooks
        - publicly-accessible
  /driver-on-their-way-to-delivery-address:
    put:
      description: Driver on their way to delivery address
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/driver-status"
        required: true
      responses:
        "200":
          description: OK
      summary: Driver on their way to delivery address
      tags:
        - Order Delivery Webhooks
        - publicly-accessible
  /late-order-compensation-query:
    post:
      description: This webhook will be invoked when a late order compensation query has been raised and a restaurant response is required.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/late-order-compensation-query"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification
      summary: late order compensation query, restaurant response required
      tags:
        - Consumer Queries Webhooks
        - publicly-accessible
  /late-order-query:
    post:
      description: This webhook will be invoked when a late order query has been raised and a restaurant response is required.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/late-order-query"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: late order query, restaurant response required
      tags:
        - Consumer Queries Webhooks
        - publicly-accessible
  /menu-ingestion-complete:
    post:
      description: Callback to confirm that an attempt to ingest a menu has completed either successfully or unsuccessfully
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/menu-ingestion-complete"
        required: true
      responses:
        "200":
          description: OK
      summary: Menu ingestion complete
      tags:
        - Restaurant Webhooks
        - publicly-accessible
  /order-accepted:
    post:
      description: This webhook will be invoked whenever the order was accepted.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-accepted"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: Order accepted
      tags:
        - Order Acceptance Webhooks
        - publicly-accessible
  /order-cancelled:
    post:
      description: This webhook will be invoked whenever the order was cancelled.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-cancelled"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: Order cancelled
      tags:
        - Order Acceptance Webhooks
        - publicly-accessible
  /order-eligible-for-restaurant-compensation:
    post:
      description: |
        This webhook will be invoked for every cancelled order and it will inform if the order is eligible for compensation.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OrderEligibleForRestaurantCompensation"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: Order Eligible For Restaurant Compensation
      tags:
        - RestaurantQueries Webhooks
        - publicly-accessible
  /order-is-ready-for-pickup:
    put:
      description: <p>The "Ready for pickup" event lets the delivery partner know that the food has been cooked and is now ready for collection up from the restaurant.</p><p>When this event is received, it is important that you let your driver know that the order should now be collected from inside the restaurant. For example, this driver notification could take the form of an in-app notification or an SMS message.</p><p>This communication is needed to support restaurants who are unable to accommodate drivers inside their premises, as it allows restaurants to notify drivers waiting outside that they should come inside to collect their order.</p><p>NB&semi; This event can be sent by the restaurant at any point after the order is accepted by the restaurant (for instance, this event may be sent before the driver has arrived at the restaurant).</p>
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ready-for-pickup"
        required: true
      responses:
        "200":
          description: Upon successful receipt of the event, delivery partners should return a 200 HTTP status code indicating acknowledgement of transmission.
        default:
          content:
            application/json:
              schema:
                properties:
                  Details:
                    type: string
                  Message:
                    type: string
                  OrderId:
                    type: string
                  Timestamp:
                    format: date-time
                    type: string
                type: object
          description: In the unlikely case of unknown errors, JUST EAT will log a raw response. If possible, the response should have the following format
      summary: Order ready for pickup
      tags:
        - Order Delivery Webhooks
        - publicly-accessible
  /order-ready-for-preparation-async:
    post:
      description: |
        This webhook will be invoked when we have determined that an order is ready for preparation. Upon receiving the request, you should perform any preparation-related activities, such as sending the order to the POS system / kitchen screen.
        **NOTE:** This version of the webhook is asynchronous, and we expect a response in two parts:
          1. We expect an immediate `202` response from this webhook to denote that you have received the request;
          2. Following that, we expect an [async callback](#section/Async-Webhooks) - indicating either success or failure of the operation. The body for the async callbacks are as below:
          
          **Success callback**
          ```
          {
                "status": "Success",
                "message": "Order successfully sent to POS",
                "data": {}
          }
          ```
          **Failure callback**
          ```
          {
                "status": "Failure",
                "message": "{errorMessage}",   // e.g. "The POS is currently in use"
                "data": {}
          }
          ```
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-ready-for-preparation"
        required: true
      responses:
        "202":
          description: Upon successful receipt of this event, a `202` status code should be returned, indicating the request has been accepted. You should then later respond with the result of processing this request, via the [callback URL](#section/Async-Webhooks) endpoint.
        "400":
          description: "Should the initial validation of the order fail, return a `400` status code. NOTE: In this instance we do not also expect a failure callback via the async callback URL."
      summary: Order ready for preparation (async)
      tags:
        - Order Webhooks
        - publicly-accessible
  /order-ready-for-preparation-sync:
    post:
      description: |
        This webhook will be invoked when we have determined that an order is ready for preparation. Upon receiving the request, you should perform any preparation-related activities, such as sending the order to the POS system / kitchen screen.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-ready-for-preparation"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: Order ready for preparation (sync)
      tags:
        - Order Webhooks
        - publicly-accessible
  /order-rejected:
    post:
      description: This webhook will be invoked whenever the order was rejected.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-rejected"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: Order rejected
      tags:
        - Order Acceptance Webhooks
        - publicly-accessible
  /order-requires-delivery-acceptance:
    put:
      description: This webhook will be invoked when we have determined that an order is required acceptance for delivery. Upon receiving the request, the order should be scheduled for pickup by a courier/driver. We expect an immediate `201` response from this webhook to denote that you have received the request.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/connectorder-list"
        required: true
      responses:
        "201":
          description: In the event of successful handling of the request, a 201 status code should be returned, indicating acknowledgement of transmission success.
        default:
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      properties:
                        code:
                          description: <p>Each code should be selected from the following list of valid reasons.</p><table><tr><th>code</th><th>explanation</th></tr><tr><td>`outside_hours`</td><td>Delivery partner is closed and not accepting requests.</td></tr><tr><td>`too_busy`</td><td>Delivery partner does not have enough capacity to accept this request.</td></tr><tr><td>`too_far`</td><td>The customer is too far away from the restaurant, either by time or distance.</td></tr><tr><td>`not_supported`</td><td>Delivery partner is currently unable to deliver to the customer's location.</td></tr><tr><td>`bad_address`</td><td>The order contains an address that could not be processed or understood.</td></tr><tr><td>`bad_request`</td><td>The order format is invalid or the order contains required data or information that cannot be processed.</td></tr><tr><td>`restaurant_not_configured`</td><td>Delivery partner is not configured to accept requests for given restaurant.</td></tr><tr><td>`duplicate`</td><td>The request has already been processed before.</td></tr><tr><td>`other`</td><td>Any validation failure or unexpected error not covered by the above codes.</td></tr></table>
                          enum:
                            - outside_hours
                            - too_busy
                            - too_far
                            - not_supported
                            - bad_address
                            - bad_request
                            - restaurant_not_configured
                            - duplicate
                            - other
                          type: string
                        message:
                          description: <p>The accompanying message should, in each case, provide an explanation of the specific problem that was experienced.</p><br/><p>Please note that the accompanying explanatory text are part of the code is only intended as an explanation of each reason code - and should not be returned to us as the message.</p>
                          type: string
                      type: object
                    type: array
                type: object
          description: In the case that the order cannot be accepted, an appropriate HTTP status code, such as 400 (Bad request) or 500 (Internal server error) should be returned.  In addition to the HTTP status code, a specific reason code and explanatory message should be provided within the response body
      summary: Order requires delivery acceptance
      tags:
        - Order Delivery Webhooks
        - publicly-accessible
  /order-time-updated:
    post:
      description: Callback to notify recipients that there has been a change to the restaurant order times for a given day and service type
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-time-updated"
        required: true
      responses:
        "200":
          description: OK
      summary: Order time updated
      tags:
        - Restaurant Webhooks
        - publicly-accessible
  /orders:
    post:
      description: Create order
      parameters:
        - description: The api version to use. Version 2.0 is the only available version.
          example: 2
          in: header
          name: x-je-api-version
          required: false
          schema:
            default: 1
            type: number
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-request-v2"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                properties:
                  OrderId:
                    type: string
                type: object
          description: Created
        "400":
          description: Bad Request - Request is for deprecated API version or has failed validation in some way - see response body for details
        "409":
          content:
            application/json:
              schema:
                properties:
                  OrderId:
                    type: string
                type: object
          description: Conflict - you've already told us about an order with this `OrderReference`
      summary: Create order
      tags:
        - Order API
        - publicly-accessible
  /orders/deliverystate/driverlocation:
    put:
      description: Current driver location (bulk upload)
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/bulk-delivery-details-list"
        required: true
      responses:
        "200":
          description: OK
      summary: Update current driver locations (bulk upload)
      tags:
        - Order Delivery API
        - publicly-accessible
  "/orders/{orderId}/accept":
    put:
      description: Call when an order has been accepted. An order can only be accepted if it hasn't previously been accepted, rejected, cancelled or ignored
      parameters:
        - in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-accept-request"
        required: true
      responses:
        "200":
          description: OK
        "404":
          description: Order could not be found
        "409":
          description: Conflict. This order has either already been accepted, rejected or ignored by restaurant or cancelled by ops
      summary: Accept order
      tags:
        - Order Acceptance API
        - publicly-accessible
  "/orders/{orderId}/cancel":
    put:
      description: Call when an order has been cancelled by Ops. Cancelling an order overrides any previous accept/reject calls. This should not be used for restaurant rejection but only from Ops involvement
      parameters:
        - in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-cancel-request"
        required: true
      responses:
        "200":
          description: OK
        "404":
          description: Order could not be found
        "409":
          description: Conflict. This order has already been cancelled
      summary: Cancel order
      tags:
        - Order Acceptance API
        - publicly-accessible
  "/orders/{orderId}/complete":
    post:
      description: Call when an order is complete. An order can only be marked as complete if it hasn't already been marked as cancelled or complete.
      parameters:
        - description: The ID of the order to mark as complete
          in: path
          name: orderId
          required: true
          schema:
            type: string
      responses:
        "204":
          description: No content - status updated successfully
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Order could not be found
                faultId: b6a1d658-dda4-41b6-a9a5-dbfb7ba7b2aa
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not found - order could not be found
        "409":
          content:
            application/json:
              example:
                errors:
                  - description: Order cannot be marked as complete because it is already marked as cancelled
                faultId: 9c63827b-6fad-46bf-9e9a-9aafec941824
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Conflict - this order has already been marked as cancelled or complete
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Complete order
      tags:
        - Order Acceptance API
        - publicly-accessible
    x-status: Draft
  "/orders/{orderId}/deliverystate/atdeliveryaddress":
    put:
      description: <p>The _at delivery address_ callback should be sent when the driver thinks that they have arrived at the specified delivery address.</p><p>NB&semi; This callback should be distinct from the delivered callback, as Just Eat use this callback to understand how much time is spent locating the customer's address.</p>
      parameters:
        - description: Just Eat order identifier
          in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/delivery-details"
        required: true
      responses:
        "200":
          description: OK
      summary: Update order with driver at delivery address details
      tags:
        - Order Delivery API
        - publicly-accessible
  "/orders/{orderId}/deliverystate/atrestaurant":
    put:
      description: The _at restaurant_ callback should be sent when the driver arrives at the restaurant and is ready to collect the order.
      parameters:
        - description: Just Eat order identifier
          in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/delivery-driver-details-with-eta"
        required: true
      responses:
        "200":
          description: OK
      summary: Update order with driver at restaurant details
      tags:
        - Order Delivery API
        - publicly-accessible
  "/orders/{orderId}/deliverystate/atrestauranteta":
    put:
      description: <p>In the UK, this endpoint updates the estimated arrival time at the restaurant. This value can be overridden from other endpoints like <a href="https://uk.api.just-eat.io/docs#tag/Order-Delivery-API/paths/~1orders~1{orderId}~1deliverystate~1driverlocation/put">Driver Locations</a> </p> <p> This endpoint should be used to set initial at restaurant ETAs prior to driver assignment where available. The earlier a delivery partner is able to provide an estimate of when the driver will arrive at the restaurant the more likely it is that driver arrival and order preparation will be aligned. </p> <p> In other tenants (Not UK):Note that if set for a given order, this Eta will NOT be overridden by any other at restaurant ETAs provided in `DriverAssigned` or `DriverLocation` requests</p> <p>This value is significant since it informs when a restaurant is instructed to start preparing food. When the time remaining between current time and the estimated time of arrival becomes less than the restaurant's configured preparation time, food preparation is initiated</p>
      parameters:
        - description: Just Eat order identifier
          in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/eta-estimate"
        required: true
      responses:
        "200":
          description: OK
      summary: Update the driver's estimated time to arrive at the Restaurant
      tags:
        - Order Delivery API
        - publicly-accessible
  "/orders/{orderId}/deliverystate/delivered":
    put:
      description: The _delivered_ callback should be sent when the driver has handed the food to the customer and completed the order.
      parameters:
        - description: Just Eat order identifier
          in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/delivery-details"
        required: true
      responses:
        "200":
          description: OK
      summary: Update order with delivered details
      tags:
        - Order Delivery API
        - publicly-accessible
  "/orders/{orderId}/deliverystate/driverassigned":
    put:
      description: The _driver assigned_ callback should be sent when a driver is assigned to the order. It should communicate important details about the driver - and also an estimated time for the driver to arrive at the restaurant and delivery address.
      parameters:
        - description: Just Eat order identifier
          in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/delivery-driver-assigned-details"
        required: true
      responses:
        "200":
          description: OK
      summary: Update order with driver assigned details
      tags:
        - Order Delivery API
        - publicly-accessible
  "/orders/{orderId}/deliverystate/driverlocation":
    put:
      description: <p>Just Eat requires all delivery partners to send regular driver location callbacks, that record the GPS location of the drivers assigned to each order</p><p>Partners should aim to supply this callback approximately every 10 seconds.</p><p>Please provide an up-to-date ETA for when the driver will reach the restaurant in this request - this value is significant since it informs when a restaurant is instructed to start preparing food - when the time remaining between current time and the estimated time of arrival becomes less than the restaurant's configured preparation time, food preparation is initiated</p><p>Note that at restaurant Eta provided in this request will NOT override any ETA set in the Driver At Restaurant Eta request</p>
      parameters:
        - description: Just Eat order identifier
          in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/delivery-driver-location"
        required: true
      responses:
        "200":
          description: OK
      summary: Update the driver's current location
      tags:
        - Order Delivery API
        - publicly-accessible
  "/orders/{orderId}/deliverystate/driverunassigned":
    put:
      description: The _driver unassigned_ callback should be sent when a driver is unassigned from the order. It may details about the reason for cancelling the assignment, the driver details, and any newer at restaurant and customer estimations.
      parameters:
        - description: Just Eat order identifier
          in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/delivery-driver-unassigned-details"
        required: true
      responses:
        "200":
          description: OK
        "400":
          content:
            application/json:
              example:
                partnerId:
                  - Partner id was not found or could not be parsed
              schema:
                $ref: "#/components/schemas/extensibleObject"
          description: Bad Request.
      summary: Update order with driver unassigned details
      tags:
        - Order Delivery API
        - publicly-accessible
  "/orders/{orderId}/deliverystate/onitsway":
    put:
      description: The _on its way_ callback should be sent when the driver departs the restaurant with the customer's order. It should contain an ETA that records when the driver expects to arrive at the customer's address.
      parameters:
        - in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/on-its-way-details"
        required: true
      responses:
        "200":
          description: OK
      summary: Update order with driver on its way details
      tags:
        - Order Delivery API
        - publicly-accessible
  "/orders/{orderId}/duedate":
    put:
      description: |
        Use this to update the estimated time of arrival for an order (i.e. when you expect the customer to receive the food). NOTE: An initial estimate is given [upon acceptance](#/paths/~1orders~1{orderId}~1accept/put). This endpoint can be used to update that estimate.
      parameters:
        - in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-due-date-request"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: The due date is missing, or out of range (either in the past, or > 7 days in the future).
        "404":
          description: The order could not be found.
      summary: Update order ETA
      tags:
        - Order Acceptance API
        - publicly-accessible
  "/orders/{orderId}/ignore":
    put:
      description: Call when an order has been ignored by restaurant. An order can only be ignored if it hasn't previously been accepted, rejected, cancelled or ignored
      parameters:
        - in: path
          name: orderId
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
        "404":
          description: Order could not be found
        "409":
          description: Conflict. This order has either already been accepted, rejected or ignored by restaurant or cancelled by ops
      summary: Ignore order
      tags:
        - Order Acceptance API
        - publicly-accessible
  "/orders/{orderId}/readyforcollection":
    post:
      description: Call when a collection order is ready to be collected by the customer. An order can only be marked as ready for collection if it is a collection order in the accepted state.
      parameters:
        - description: The ID of the order to mark as ready for collection
          in: path
          name: orderId
          required: true
          schema:
            type: string
      responses:
        "204":
          description: No content - status updated successfully
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Order cannot be marked as ready for collection because it is not a collection order
                faultId: aa5d282c-498e-47dd-acca-d4bb811a8f9d
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request - order cannot be marked as ready for collection because it is not a collection order
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Order could not be found
                faultId: 15c27f5b-5121-4c1f-bea3-34378dff2a79
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not found - order could not be found
        "409":
          content:
            application/json:
              example:
                errors:
                  - description: Order cannot be marked as ready for collection because it is already marked as complete
                faultId: 9c63827b-6fad-46bf-9e9a-9aafec941824
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Conflict - this order is not in the accepted state
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Mark order as ready for collection
      tags:
        - Order Acceptance API
        - publicly-accessible
    x-status: Draft
  "/orders/{orderId}/reject":
    put:
      description: Call when an order has been rejected. An order can only be rejected if it hasn't previously been accepted, rejected, cancelled or ignored
      parameters:
        - in: path
          name: orderId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order-reject-request"
        required: true
      responses:
        "200":
          description: OK
        "404":
          description: Order could not be found
        "409":
          description: Conflict. This order has either already been accepted, rejected or ignored by restaurant or cancelled by ops
      summary: Reject order
      tags:
        - Order Acceptance API
        - publicly-accessible
  "/orders/{tenant}/{orderId}/consumerqueries/lateorder/restaurantresponse":
    post:
      description: If a customer has requested an update on the status of a late order, a response can be given by calling this endpoint.
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Id for the order.
          in: path
          name: orderId
          required: true
          schema:
            type: string
        - description: Containing a partner issued API key e.g. `JE-API-KEY ABCDE123456789`
          in: header
          name: Authorization
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            example:
              additionalDeliveryTimeToAddMinutes: 5
              lateOrderStatus: OnItsWay
            schema:
              $ref: "#/components/schemas/LateOrderRestaurantResponse"
        description: An object for updating the status of a late order query with the amount of time to add to the delivery estimate in minutes (optional)
        required: true
      responses:
        "202":
          description: Accepted
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Justification notes are required for this query. Query Type:type Tenant:tenant QueryId:queryId OrderId:orderId
                    errorCode: BadRequest
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request. Returned if the request is invalid i.e. missing a required parameters
        "401":
          content:
            application/json:
              example:
                errors:
                  - description: Unauthorized.
                    errorCode: Unauthorized
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized. Consumer is not authorized to modify the resource
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Order 1234 was not found
                    errorCode: NotFound
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found. Order query or Order not found
        "409":
          content:
            application/json:
              example:
                errors:
                  - description: Query 1234 cannot be responded to at this time
                    errorCode: Conflict
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Conflict. Query not in state to accept response
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Response to Late Order Update Request
      tags:
        - ConsumerQueries
        - publicly-accessible
  "/orders/{tenant}/{orderId}/consumerqueries/lateordercompensation/restaurantresponse":
    post:
      description: If a customer has requested compensation for a late order, a restaurant response is given by calling this endpoint.
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Id for the order.
          in: path
          name: orderId
          required: true
          schema:
            type: string
        - description: Containing a partner issued API key e.g. `JE-API-KEY ABCDE123456789`
          in: header
          name: Authorization
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LateOrderCompensationRestaurantResolution"
        description: The restaurant response to a late order compensation request. Indicates either a monetary amount (when the compensation is accepted); or a rejection reason (when compensation is rejected).
        required: true
      responses:
        "202":
          description: Accepted
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: A reason is required when compensation is rejected.
                    errorCode: BadRequest
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request. Returned if the request is invalid - e.g. contains missing or invalid parameters.
        "401":
          content:
            application/json:
              example:
                errors:
                  - description: Unauthorized.
                    errorCode: Unauthorized
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized. Consumer is not authorized to modify the resource
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Order 1234 was not found
                    errorCode: NotFound
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found. Order query or Order not found
        "409":
          content:
            application/json:
              example:
                errors:
                  - description: Query 1234 cannot be responded to at this time
                    errorCode: Conflict
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Conflict. Query not in state to accept response
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Update late order compensation request with Restaurant response
      tags:
        - ConsumerQueries
        - publicly-accessible
      x-status: Unstable
  "/orders/{tenant}/{orderId}/restaurantqueries/compensation":
    post:
      description: When an order is cancelled the restaurant might be eligible for compensation, this endpoint allows a request for compensation to be created.
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Id for the order.
          in: path
          name: orderId
          required: true
          schema:
            type: string
        - description: Containing a partner issued API key e.g. `JE-API-KEY ABCDE123456789`
          in: header
          name: Authorization
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateRestaurantCompensationQuery"
        description: An object for providing the reason that the compensation is being created
        required: true
      responses:
        "201":
          description: Created
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: The value provided in the field ReasonCode is invalid
                    errorCode: InvalidReasonCode
                  - description: Comments field is too long, max 1000
                    errorCode: CommentsTooLong
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request - returned if providing invalid data such as an unacceptable reason code
        "401":
          content:
            application/json:
              example:
                errors:
                  - description: Invalid credentials
                    errorCode: Unauthorized
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized - consumer has not provided the necessary credentials
        "403":
          content:
            application/json:
              example:
                errors:
                  - description: The credentials provided doesn't have permissions to perform the request
                    errorCode: Forbidden
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Forbidden - credentials provided by consumer do not allow access to this resource
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Resource not found
                    errorCode: NotFound
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Resource not found
        "409":
          content:
            application/json:
              example:
                errors:
                  - description: This order is not eligible for compensation
                    errorCode: OrderNotEligible
                  - description: A compensation request has already been requested for this order
                    errorCode: CompensationAlreadyExists
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Conflict - returned if tried to claim compensation for an order that is not eligible
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Create Compensation requests
      tags:
        - RestaurantQueries
        - publicly-accessible
  /redelivery-requested:
    put:
      description: This webhook will be invoked whenever the customer responds to the attempted delivery notification.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/attempted-delivery-response-received"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: Customer Requested Redelivery
      tags:
        - Order Acceptance Webhooks
        - publicly-accessible
  /restaurant-offline-status:
    put:
      description: Callback to notify that a restaurant has been taken offline through an active Restaurant Event or there's been a change in whether the restaurant can override a previous offline status.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RestaurantOfflineStatus"
        required: true
      responses:
        "200":
          description: OK
      summary: Restaurant Offline Status
      tags:
        - Restaurant Events Webhooks
        - publicly-accessible
  /restaurant-online-status:
    put:
      description: Callback to notify that a restaurant is now able to come back online as there are no longer any active offline Restaurant Events
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RestaurantOfflineStatus"
        required: true
      responses:
        "200":
          description: OK
      summary: Restaurant Online Status
      tags:
        - Restaurant Events Webhooks
        - publicly-accessible
  /restaurants/bylatlong:
    get:
      description: Provides details of all restaurants that deliver to the specified location
      operationId: SearchByLocation
      parameters:
        - description: OAuth2 token issued for logged in consumer or API key issued to partner
          in: header
          name: Authorization
          required: true
          schema:
            type: string
        - description: A valid country code, e.g. "uk". Filter search results to only include restaurants for the specified country. Required when using OAuth for authentication.
          in: header
          name: Accept-Tenant
          required: false
          schema:
            type: string
        - description: Filter search results to only include restaurants that deliver to the specified location
          in: query
          name: latitude
          required: true
          schema:
            type: number
          x-position: 1
        - description: Filter search results to only include restaurants that deliver to the specified location
          in: query
          name: longitude
          required: true
          schema:
            type: number
          x-position: 2
        - description: Filter search results to only include restaurants that offer the specified cuisine
          in: query
          name: cuisine
          required: false
          schema:
            type: string
          x-position: 3
        - description: Filter search results to only include restaurants that have a name that matches the specified value
          in: query
          name: restaurantName
          required: false
          schema:
            type: string
          x-position: 4
        - description: Filter search results to only include restaurants of the specified brand
          in: query
          name: brandName
          required: false
          schema:
            type: string
          x-position: 5
      responses:
        "200":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/SearchResponse"
                  - $ref: "#/components/schemas/ExternalSearchResponse"
                  - $ref: "#/components/schemas/SearchWebResponse"
          description: OK
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                Message: The request is invalid.
                ModelState:
                  Longitude:
                    - The value 'nan' is not valid for Longitude.
              schema:
                type: object
          description: Bad Request
        "401":
          content:
            application/json:
              example:
                message: No API key found in request
              schema:
                type: object
          description: Unauthorized
        "500":
          content:
            application/json:
              example:
                ExceptionMessage: Object reference not set to an instance of an object.
                ExceptionType: System.NullReferenceException
                Message: An error has occurred.
                StackTrace: "   at JE.SearchOrchestrator.Controllers.Filters.CacheControlFilter.OnActionExecuted(HttpActionExecutedContext actionExecutedContext) in \\\\Mac\\Home\\Documents\\GitHub\\SearchOrchestrator\\src\\JE.SearchOrchestrator\\Controllers\\Filters\\CacheControlFilter.cs:line 18\r

                  \   at System.Web.Http.Filters.ActionFilterAttribute.OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)\r

                  --- End of stack"
              schema:
                type: object
          description: Server Error
      summary: Get restaurants by location
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Deprecated
  "/restaurants/bypostcode/{postcode}":
    get:
      description: Provides details of restaurants that deliver to the specified postcode
      operationId: SearchByPostcode
      parameters:
        - description: OAuth2 token issued for logged in consumer or API key issued to partner
          in: header
          name: Authorization
          required: false
          schema:
            type: string
        - description: A valid country code, e.g. "uk". Filter search results to only include restaurants for the specified country. Required when using OAuth for authentication.
          in: header
          name: Accept-Tenant
          required: false
          schema:
            type: string
        - description: Filter search results to only include restaurants that deliver to the specified postcode
          in: path
          name: postcode
          required: true
          schema:
            type: string
        - description: Filter search results to only include restaurants that offer the specified cuisine
          in: query
          name: cuisine
          required: false
          schema:
            type: string
          x-position: 1
        - description: Filter search results to only include restaurants that have a name that matches the specified value
          in: query
          name: restaurantName
          required: false
          schema:
            type: string
          x-position: 2
        - description: Filter search results to only include restaurants of the specified brand
          in: query
          name: brandName
          required: false
          schema:
            type: string
          x-position: 3
      responses:
        "200":
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/SearchResponse"
                  - $ref: "#/components/schemas/ExternalSearchResponse"
                  - $ref: "#/components/schemas/SearchWebResponse"
          description: OK
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                Message: The request is invalid.
                ModelState:
                  Postcode:
                    - Invalid Postcode.
              schema:
                type: object
          description: Bad Request
        "401":
          content:
            application/json:
              example:
                message: No API key found in request
              schema:
                type: object
          description: Unauthorized
        "500":
          content:
            application/json:
              example:
                ExceptionMessage: Object reference not set to an instance of an object.
                ExceptionType: System.NullReferenceException
                Message: An error has occurred.
                StackTrace: "   at JE.SearchOrchestrator.Controllers.Filters.CacheControlFilter.OnActionExecuted(HttpActionExecutedContext actionExecutedContext) in \\\\Mac\\Home\\Documents\\GitHub\\SearchOrchestrator\\src\\JE.SearchOrchestrator\\Controllers\\Filters\\CacheControlFilter.cs:line 18\r

                  \   at System.Web.Http.Filters.ActionFilterAttribute.OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)\r

                  --- End of stack"
              schema:
                type: object
          description: Server Error
      summary: Get restaurants by postcode
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Deprecated
  /restaurants/driver/eta:
    put:
      description: Set the average amount of time it will take a driver to collect a new order from a restaurant.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RestaurantETAs"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/IgnoredRestaurantIds"
          description: Update will take effect shortly
        "400":
          description: There was something invalid in your request - check response body for details
      summary: Set ETA for pickup
      tags:
        - Restaurants
        - publicly-accessible
  "/restaurants/{tenant}/{restaurantId}/catalogue":
    get:
      description: Get details of the restaurant's product catalogue
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant Id.
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MenuBase"
          description: Request succeeded.
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Resource with identifier restaurantId:95224345321 for tenant:uk not found.
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: No product catalogue found for given tenant and restaurantId.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Get product catalogue
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
  "/restaurants/{tenant}/{restaurantId}/catalogue/availabilities":
    get:
      description: Get all availabilities on the restaurant's menu
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant Id.
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: The maximum number of availabilities to fetch.
          in: query
          name: limit
          required: true
          schema:
            format: int32
            type: integer
        - description: Value representing a cursor - position to use when retrieving the next page of data. If provided, the value of this parameter must be URL encoded.
          in: query
          name: after
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedAvailabilitiesResponse"
          description: Request succeeded.
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Invalid value 0 for parameter limit.
                faultId: e21a9947-4352-449f-a4dc-5e69d57b0c5f
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request.
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Resource with identifier restaurantId:95224345321 for tenant:uk not found.
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: No availabilities found for given tenant and restaurantId.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Get all availabilities
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
  "/restaurants/{tenant}/{restaurantId}/catalogue/categories":
    get:
      description: Get all categories on the restaurant's menu
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant Id.
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: The maximum number of categories to fetch.
          in: query
          name: limit
          required: true
          schema:
            format: int32
            type: integer
        - description: Value representing a cursor - position to use when retrieving the next page of data. If provided, the value of this parameter must be URL encoded.
          in: query
          name: after
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedCategoriesResponse"
          description: Request succeeded.
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Invalid value 0 for parameter limit.
                faultId: e21a9947-4352-449f-a4dc-5e69d57b0c5f
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request.
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Resource with identifier restaurantId:95224345321 for tenant:uk not found.
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: No availabilities found for given tenant and restaurantId.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Get all categories
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
  "/restaurants/{tenant}/{restaurantId}/catalogue/categories/{categoryId}/items":
    get:
      description: Get all item IDs which are assigned to the specified category
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant ID.
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: The category ID.
          in: path
          name: categoryId
          required: true
          schema:
            type: string
        - description: The maximum number of item IDs to fetch.
          in: query
          name: limit
          required: true
          schema:
            format: int32
            type: integer
        - description: Value representing a cursor - position to use when retrieving the next page of data. If provided, the value of this parameter must be URL encoded.
          in: query
          name: after
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedCategoryItemsResponse"
          description: Request succeeded.
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Invalid value 0 for parameter limit.
                faultId: e21a9947-4352-449f-a4dc-5e69d57b0c5f
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request.
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Resource with identifier restaurantId:95224345321 for tenant:uk not found.
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: No availabilities found for given tenant and restaurantId.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Get all category item IDs
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
  "/restaurants/{tenant}/{restaurantId}/catalogue/items":
    get:
      description: Get all menu items on the restaurant's menu
      parameters:
        - description: Request tenant.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant Id.
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: The maximum number of menu items to fetch.
          in: query
          name: limit
          required: true
          schema:
            format: int32
            type: integer
        - description: Value representing a cursor - position to use when retrieving the next page of data. If provided, the value of this parameter must be URL encoded.
          in: query
          name: after
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedMenuItemsResponse"
          description: Request succeeded.
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Invalid value 0 for parameter limit.
                faultId: e21a9947-4352-449f-a4dc-5e69d57b0c5f
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request.
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Resource with identifier restaurantId:95224345321 for tenant:uk not found.
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: No menu items found for given tenant and restaurantId.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Get all menu items
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
  "/restaurants/{tenant}/{restaurantId}/catalogue/items/{itemId}/dealgroups":
    get:
      description: Get all deal groups for the menu item with the provided ID
      parameters:
        - description: Request tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant ID
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: The menu item ID
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - description: The maximum number of menu items to fetch.
          in: query
          name: limit
          required: true
          schema:
            format: int32
            type: integer
        - description: Value representing a cursor - position to use when retrieving the next page of data. If provided, the value of this parameter must be URL encoded.
          in: query
          name: after
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedMenuDealGroupsResponse"
          description: Request succeeded.
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Invalid value 0 for parameter limit.
                faultId: e21a9947-4352-449f-a4dc-5e69d57b0c5f
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request.
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Resource with identifier restaurantId:95224345321 for tenant:uk and itemId:534685 not found.
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: No deal groups found for given `tenant`, `restaurantId` and `itemId`.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Get all menu item deal groups
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
  "/restaurants/{tenant}/{restaurantId}/catalogue/items/{itemId}/dealgroups/{dealGroupId}/dealitemvariations":
    get:
      description: Get all deal item variations for the deal group with the specified ID, in the menu item with the specified ID
      parameters:
        - description: Request tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant ID
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: The menu item ID
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - description: The menu item ID
          in: path
          name: dealGroupId
          required: true
          schema:
            type: string
        - description: The maximum number of menu items to fetch.
          in: query
          name: limit
          required: true
          schema:
            format: int32
            type: integer
        - description: Value representing a cursor - position to use when retrieving the next page of data. If provided, the value of this parameter must be URL encoded.
          in: query
          name: after
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedDealItemVariationResponse"
          description: Request succeeded.
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Invalid value 0 for parameter limit.
                faultId: e21a9947-4352-449f-a4dc-5e69d57b0c5f
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request.
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Resource with identifier restaurantId:95224345321 for tenant:uk for itemId:534685 and dealGroupId:463847 not found.
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: No deal item variations found for given `tenant`, `restaurantId`, `itemId` and `dealGroupId`.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Get all deal item variations for a deal group
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
  "/restaurants/{tenant}/{restaurantId}/catalogue/items/{itemId}/modifiergroups":
    get:
      description: Get all modifier groups for the menu item with the provided ID
      parameters:
        - description: Request tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant ID
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: The menu item ID
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - description: The maximum number of menu items to fetch.
          in: query
          name: limit
          required: true
          schema:
            format: int32
            type: integer
        - description: Value representing a cursor - position to use when retrieving the next page of data. If provided, the value of this parameter must be URL encoded.
          in: query
          name: after
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedMenuModifierGroupsResponse"
          description: Request succeeded.
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Invalid value 0 for parameter limit.
                faultId: e21a9947-4352-449f-a4dc-5e69d57b0c5f
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request.
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Resource with identifier restaurantId:95224345321 for tenant:uk and itemId:534685 not found.
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: No modifier groups found for given `tenant`, `restaurantId` and `itemId`.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Get all menu item modifier groups
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
  "/restaurants/{tenant}/{restaurantId}/catalogue/items/{itemId}/variations":
    get:
      description: Get all variations for the menu item with the provided ID
      parameters:
        - description: Request tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant ID
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: The menu item ID
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - description: The maximum number of menu items to fetch.
          in: query
          name: limit
          required: true
          schema:
            format: int32
            type: integer
        - description: Value representing a cursor - position to use when retrieving the next page of data. If provided, the value of this parameter must be URL encoded.
          in: query
          name: after
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedVariationsResponse"
          description: Request succeeded.
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Invalid value 0 for parameter limit.
                faultId: e21a9947-4352-449f-a4dc-5e69d57b0c5f
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request.
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Resource with identifier restaurantId:95224345321 for tenant:uk and itemId:534685 not found.
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: No variations found for given `tenant`, `restaurantId` and `itemId`.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Get all menu item variations
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
  "/restaurants/{tenant}/{restaurantId}/customerclaims":
    get:
      description: Provides claims for a given restaurant with optional filtering
      parameters:
        - description: Two letter code indicating the tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Just Eat restaurant identifier
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: Start date limiter
          in: query
          name: fromDate
          required: false
          schema:
            format: date-time
            nullable: true
            type: string
        - description: End date limiter
          in: query
          name: toDate
          required: false
          schema:
            format: date-time
            nullable: true
            type: string
        - description: Pagination limit
          in: query
          name: limit
          required: false
          schema:
            default: 20
            format: int32
            maximum: 100
            minimum: 1
            nullable: true
            type: integer
        - description: Pagination offset
          in: query
          name: offset
          required: false
          schema:
            format: int32
            minimum: 0
            nullable: true
            type: integer
        - description: Indicates what type of response client understands and is also used for content type negotiation (if version is specified), otherwise tells the server to return the latest version
          example: application/json;v=1
          in: header
          name: Accept
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClaimsResponse"
          description: Request succeeded
          headers:
            Content-Type:
              description: Content type of document including version
              example: application/json;v=1
              schema:
                type: string
            cache-control:
              description: Information about how the response can be cached
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Bad Request. End date limiter should have date-time format.
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request. Returned if the request is invalid e.g. has incorrect date limiter format
        "401":
          $ref: "#/components/responses/401UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/403ForbiddenResponse"
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      security:
        - Bearer: []
      summary: Get claims
      tags:
        - Restaurant Claims
        - publicly-accessible
      x-status: Draft
  "/restaurants/{tenant}/{restaurantId}/customerclaims/{id}":
    get:
      description: Get information about a order claim
      parameters:
        - description: Two letter code indicating the tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Just Eat restaurant identifier
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: Claim identifier
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Indicates what type of response client understands and is also used for content type negotiation (if version is specified), otherwise tells the server to return the latest version
          example: application/json;v=1
          in: header
          name: Accept
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OrderClaim"
          description: Request succeeded
          headers:
            Content-Type:
              description: Content type of document including version
              example: application/json;v=1
              schema:
                type: string
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "401":
          $ref: "#/components/responses/401UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/403ForbiddenResponse"
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found. Claim could not be found
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      security:
        - Bearer: []
      summary: Get order claim
      tags:
        - Restaurant Claims
        - publicly-accessible
      x-status: Draft
  "/restaurants/{tenant}/{restaurantId}/customerclaims/{id}/restaurantresponse":
    post:
      description: Submit a restaurant response for the claim, where the restaurant can tell us if they accept or reject the claim
      parameters:
        - description: Two letter code indicating the tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Just Eat restaurant identifier
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: Claim identifier
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Indicates the representation of the request body the client is sending (including version)
          example: application/json;v=1
          in: header
          name: Content-Type
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OrderClaimRestaurantResponse"
        description: Payload containing the response of the restaurant on the order claim
      responses:
        "201":
          description: Request succeeded. Your response to the claim has been submitted
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Bad Request. Incorrect decision
                    errorCode: IncorrectDecision
                  - description: Bad Request. Missing decision
                    errorCode: MissingDecision
                  - description: Bad Request. The request you are sending is missing some items for the claim you are trying to resolve
                    errorCode: MissingItems
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request. Returned if the request is invalid e.g. decision value is incorrect
        "401":
          $ref: "#/components/responses/401UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/403ForbiddenResponse"
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found. Claim could not be found
        "409":
          content:
            application/json:
              example:
                errors:
                  - description: The claim you are attempting to resolve is has been resolved
                    errorCode: AlreadyResolved
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Conflict. The claim you are attempting to resolve is has been resolved
        "422":
          content:
            application/json:
              example:
                errors:
                  - description: The claim you are attempting to update does not contain the items from the request
                    errorCode: WrongItems
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unprocessable. The claim you are attempting to update does not contain the items from the request
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      security:
        - Bearer: []
      summary: Submit a restaurant response for the claim
      tags:
        - Restaurant Claims
        - publicly-accessible
      x-status: Draft
  "/restaurants/{tenant}/{restaurantId}/customerclaims/{id}/restaurantresponse/justification":
    put:
      description: Add reason and optional comments in case of rejection of order claim
      parameters:
        - description: Two letter code indicating the tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Just Eat restaurant identifier
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: Claim identifier
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Indicates the representation of the request body the client is sending (including version)
          example: application/json;v=1
          in: header
          name: Content-Type
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Justification"
        description: Payload containing the reason of rejection and optional comments
      responses:
        "204":
          description: Request succeeded. Justification was successfully submitted
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Bad Request. Reason doesn't match any of the predefined values
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request. Returned if the request is invalid e.g. reason doesn't match any of the predefined values
        "401":
          $ref: "#/components/responses/401UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/403ForbiddenResponse"
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found. Claim could not be found
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Conflict. The claim you are attempting to update is older than the current claim. Fetch the last copy of the entity and try the request again.
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      security:
        - Bearer: []
      summary: Add reason and comments to the response
      tags:
        - Restaurant Claims
        - publicly-accessible
      x-status: Draft
  "/restaurants/{tenant}/{restaurantId}/fees":
    get:
      description: Get the fees currently applied to a restaurant in a particular tenant
      parameters:
        - description: A two-character country code for which country the restaurant resides in.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: A unique identifier for a restaurant
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: Request header string that allows the server to identify the application making the request.
          in: header
          name: User-Agent
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              example:
                bagFee:
                  description: A charge for bags in delivery
                  serviceTypes:
                    collection:
                      amount: 5
                    default:
                      amount: 0
                    delivery:
                      amount: 10
              schema:
                $ref: "#/components/schemas/RestaurantFees"
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached. (No caching will be applied)
              schema:
                enum:
                  - no-store
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: The supplied tenant is not supported
                    errorCode: UnsupportedTenant
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request
        "401":
          content:
            application/json:
              example:
                errors:
                  - description: Authorization required
                    errorCode: Unauthorized
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized
        "403":
          content:
            application/json:
              example:
                errors:
                  - description: You do not have permission to access this resource
                    errorCode: Forbidden
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Forbidden
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: The requested resource does not exist on this server
                    errorCode: NotFound
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found
        "500":
          $ref: "#/components/responses/500ErrorResponse"
          description: Internal Server Error
      security:
        - Bearer: []
      summary: Get Restaurant Fees
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Draft
    put:
      description: Creates or Updates the fees for a restaurant in a particular tenant
      parameters:
        - description: A two-character country code for which country the restaurant resides in.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: A unique identifier for a restaurant
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: Request header string that allows the server to identify the application making the request.
          in: header
          name: User-Agent
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            example:
              bagFee:
                description: A charge for bags in delivery
                serviceTypes:
                  collection:
                    amount: 5
                  default:
                    amount: 0
                  delivery:
                    amount: 10
            schema:
              $ref: "#/components/schemas/RestaurantFees"
        description: Update Restaurant Fees
        required: true
      responses:
        "200":
          content:
            application/json:
              example:
                bagFee:
                  description: A charge for bags in delivery
                  serviceTypes:
                    collection:
                      amount: 5
                    default:
                      amount: 0
                    delivery:
                      amount: 10
              schema:
                $ref: "#/components/schemas/RestaurantFees"
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached. (No caching will be applied)
              schema:
                enum:
                  - no-store
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: The supplied tenant is not supported
                    errorCode: UnsupportedTenant
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request
        "401":
          content:
            application/json:
              example:
                errors:
                  - description: Authorization required
                    errorCode: Unauthorized
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized
        "403":
          content:
            application/json:
              example:
                errors:
                  - description: You do not have permission to access this resource
                    errorCode: Forbidden
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Forbidden
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: The requested resource does not exist on this server
                    errorCode: NotFound
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not Found
        "500":
          $ref: "#/components/responses/500ErrorResponse"
          description: Internal Server Error
      security:
        - Bearer: []
      summary: Create or Update Restaurant Fees
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Draft
  "/restaurants/{tenant}/{restaurantId}/menu":
    get:
      description: The endpoint will return a 301 redirect containing a URL that will grant access to the Menu file. The URL will only be available for a short period of time. The Menu file will be a single document containing the information that Just Eat has and uses to display the Menu on our customer clients. This will include a collection of items, a collection of Categories and a collection of Availabilities for when the items are available. Partners will be able to retrieve the Menu for any Restaurants that they currently manage.
      parameters:
        - description: The tenant of the restaurant in which to put a menu
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant identifier to associated with the menu
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: Containing a partner issued API key e.g. Bearer ABCDE123456789
          in: header
          name: Authorization
          required: true
          schema:
            type: string
      responses:
        "301":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Menu"
          description: Temporary Redirect. The redirect will contain the signed URL that the client needs to access the resource
        "400":
          description: Bad Request. We were unable to process the request due to data you sent us
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConsumerErrorResponse"
          description: Server Error
      summary: Get the latest version of the restaurant's full menu
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
    put:
      description: This will begin an asynchronous process that will lead to that menu becoming live on the Just Eat platform
      operationId: putMenuForIngestion
      parameters:
        - description: The tenant of the restaurant in which to put a menu
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant identifier to associated with the menu
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: Containing a partner issued API key e.g. `JE-API-KEY ABCDE123456789`
          in: header
          name: Authorization
          required: true
          schema:
            type: string
        - description: Used to denote the version of the menu payload within the body, will default to latest if not supplied e.g. application/=1.0
          in: header
          name: Content-Type
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Menu"
        description: "Specification of the menu. This must be valid according to the rules described here: https://developers.just-eat.com/docs/pos-how-the-integration-works#validation-rules"
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MenuIngestionResponse"
          description: Accepted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConsumerErrorResponse"
          description: Server Error
      summary: Create or update a menu
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Stable
  "/restaurants/{tenant}/{restaurantId}/ordertimes":
    get:
      description: Get list of the delivery and collection lead times supplied by the restaurant
      operationId: GetOrderTimes
      parameters:
        - description: A valid country code, e.g. "uk".
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant Id.
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: OAuth2 token issued for logged in restaurant
          in: header
          name: Authorization
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              example:
                - dayOfWeek: Sunday
                  lowerBoundMinutes: 35
                  serviceType: Delivery
                  upperBoundMinutes: 50
                - dayOfWeek: Monday
                  lowerBoundMinutes: 35
                  serviceType: Delivery
                  upperBoundMinutes: 50
                - dayOfWeek: Tuesday
                  lowerBoundMinutes: 35
                  serviceType: Delivery
                  upperBoundMinutes: 50
                - dayOfWeek: Wednesday
                  lowerBoundMinutes: 35
                  serviceType: Delivery
                  upperBoundMinutes: 50
                - dayOfWeek: Thursday
                  lowerBoundMinutes: 35
                  serviceType: Delivery
                  upperBoundMinutes: 50
                - dayOfWeek: Friday
                  lowerBoundMinutes: 35
                  serviceType: Delivery
                  upperBoundMinutes: 50
                - dayOfWeek: Saturday
                  lowerBoundMinutes: 35
                  serviceType: Delivery
                  upperBoundMinutes: 50
                - dayOfWeek: Sunday
                  lowerBoundMinutes: 35
                  serviceType: Collection
                  upperBoundMinutes: 50
                - dayOfWeek: Monday
                  lowerBoundMinutes: 35
                  serviceType: Collection
                  upperBoundMinutes: 50
                - dayOfWeek: Tuesday
                  lowerBoundMinutes: 35
                  serviceType: Collection
                  upperBoundMinutes: 50
                - dayOfWeek: Wednesday
                  lowerBoundMinutes: 35
                  serviceType: Collection
                  upperBoundMinutes: 50
                - dayOfWeek: Thursday
                  lowerBoundMinutes: 35
                  serviceType: Collection
                  upperBoundMinutes: 50
                - dayOfWeek: Friday
                  lowerBoundMinutes: 35
                  serviceType: Collection
                  upperBoundMinutes: 50
                - dayOfWeek: Saturday
                  lowerBoundMinutes: 35
                  serviceType: Collection
                  upperBoundMinutes: 50
              schema:
                items:
                  $ref: "#/components/schemas/orderTime"
                maxItems: 14
                type: array
                uniqueItems: true
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "401":
          $ref: "#/components/responses/401UnauthorizedResponse"
        "403":
          content:
            application/json:
              example:
                errors:
                  - description: The restaurant still uses deprecated approach of Lunch and Night menus
                    errorCode: Forbidden
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Forbidden - the restaurant still uses deprecated approach of Lunch and Night menus
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/500ErrorSchema"
          description: Internal Server Error
      summary: Get the restaurant's delivery and collection lead times
      tags:
        - publicly-accessible
        - Restaurant OrderTimes
  "/restaurants/{tenant}/{restaurantId}/ordertimes/{dayOfWeek}/{serviceType}":
    put:
      description: Update the restaurant's delivery and collection lead times
      operationId: UpdateOrderTime
      parameters:
        - description: A valid country code, e.g. "uk".
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant Id.
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
        - description: Day of week for order time
          in: path
          name: dayOfWeek
          required: true
          schema:
            enum:
              - Sunday
              - Monday
              - Tuesday
              - Wednesday
              - Thursday
              - Friday
              - Saturday
            type: string
        - description: Service type of the order time
          in: path
          name: serviceType
          required: true
          schema:
            enum:
              - Delivery
              - Collection
            type: string
        - description: OAuth2 token issued for logged in restaurant OR API token for third party, in the format `Bearer {api_key}`
          in: header
          name: Authorization
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/updateOrderTimeRequest"
        required: true
      responses:
        "204":
          description: Success
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Bad Request
                    errorCode: ERR400
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request
        "401":
          $ref: "#/components/responses/401UnauthorizedResponse"
        "403":
          $ref: "#/components/responses/403ForbiddenResponse"
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/500ErrorSchema"
          description: Internal Server Error
      summary: Update the restaurant's delivery and collection lead times
      tags:
        - publicly-accessible
        - Restaurant OrderTimes
  "/restaurants/{tenant}/{restaurantId}/servicetimes":
    get:
      description: Gets the service times (the weekly times at which a restaurant is in service for delivery or collection) for a restaurant
      operationId: getRestaurantServiceTimes
      parameters:
        - description: Two letter code of restaurant's tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant identifier
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceTimes"
          description: The restaurant's service times
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "403":
          description: Forbidden
        "404":
          content:
            application/json:
              example:
                errors:
                  - description: Order not found
                    errorCode: ERR1234
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Not found
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Get service times
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Draft
    put:
      description: Creates or updates the service times (the weekly times at which a restaurant is in service for delivery or collection) for a restaurant
      operationId: putRestaurantServiceTimes
      parameters:
        - description: Two letter code of restaurant's tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: The restaurant identifier
          in: path
          name: restaurantId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceTimes"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceTimes"
          description: The new service times
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: The value of "end" must be greater than "start", or "00:00:00"
                    errorCode: ERR1234
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad request
        "403":
          description: Forbidden
        "500":
          $ref: "#/components/responses/500ErrorResponse"
      summary: Create or update service times
      tags:
        - Restaurants
        - publicly-accessible
      x-status: Draft
  "/search/autocomplete/{tenant}":
    get:
      description: Provides auto-completed search terms for restaurants, cuisines and products available in a given location.
      parameters:
        - description: A valid country code, e.g. "uk".
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: User's search term - at least one character required
          in: query
          name: searchTerm
          required: true
          schema:
            type: string
        - description: "The latitude and longitude coordinates of the location in which to search.\r

            Specify the coordinates as latitude,longitude."
          example:
            - 51.501285
            - -0.1424422
          explode: false
          in: query
          name: latlong
          required: true
          schema:
            items:
              format: decimal
              type: number
            maxItems: 2
            minItems: 2
            type: array
          style: form
        - description: Limit the number of auto-completed terms returned by the API. Defaults to 7. Valid values 1 - 10
          in: query
          name: limit
          required: false
          schema:
            format: integer
            type: number
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AutoCompleteSearchResponse"
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Validation failed on one or more fields
                    errorCode: 400
                    fields:
                      - latlong
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                description: A HTTP 4xx error response
                properties:
                  fault:
                    properties:
                      errors:
                        items:
                          properties:
                            description:
                              description: Specific details about the error that may assist the you in resolving the issue
                              type: string
                            errorCode:
                              description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error
                              type: string
                            fields:
                              description: An array of invalid query fields
                              items:
                                type: string
                              type: array
                          type: object
                        type: array
                      faultId:
                        description: A value that helps identify this response back to logs, so we can easily find this specific fault
                        type: string
                      traceId:
                        description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated
                        type: string
                    required:
                      - faultId
                    type: object
                type: object
          description: Bad Request
        "401":
          content:
            application/json:
              example:
                errors:
                  - errorCode: "401"
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized
        "500":
          $ref: "#/components/responses/500ErrorResponse"
        "503":
          content:
            application/json:
              example:
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                description: Service Unavailable
                properties:
                  fault:
                    properties:
                      faultId:
                        description: A value that helps identify this response back to logs, so we can easily find this specific fault
                        type: string
                      traceId:
                        description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated
                        type: string
                    required:
                      - faultId
                    type: object
                type: object
          description: Service Unavailable
      summary: Get auto-completed search terms
      tags:
        - Search
        - publicly-accessible
      x-status: Stable
  "/search/restaurants/{tenant}":
    get:
      description: "Get restaurants available in a given lat-long which match a search term.\r

        Matches can be found against the name, a cuisine or a product."
      parameters:
        - description: A valid country code, e.g. "uk".
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: User's search term.
          in: query
          name: searchTerm
          required: true
          schema:
            type: string
        - description: "The latitude and longitude coordinates of the location in which to search.\r

            Specify the coordinates as latitude,longitude."
          example:
            - 51.501285
            - -0.1424422
          explode: false
          in: query
          name: latlong
          required: true
          schema:
            items:
              format: decimal
              type: number
            maxItems: 2
            minItems: 2
            type: array
          style: form
        - description: "Limit the number of restaurants returned by the API.\r

            Valid values are numbers between 1 and 500.\r

            If not provided, the limit defaults to 300."
          in: query
          name: limit
          required: false
          schema:
            format: integer
            type: number
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RestaurantSearchResponse"
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        "400":
          content:
            application/json:
              example:
                errors:
                  - description: Validation failed on one or more fields
                    errorCode: 400
                    fields:
                      - latlong
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Bad Request
        "401":
          content:
            application/json:
              example:
                errors:
                  - errorCode: "401"
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unauthorized
        "422":
          content:
            application/json:
              example:
                errors:
                  - errorCode: "422"
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                $ref: "#/components/schemas/4XXErrorSchema"
          description: Unprocessable Entity - search term rejected
        "500":
          $ref: "#/components/responses/500ErrorResponse"
        "503":
          content:
            application/json:
              example:
                faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
                traceId: 0HLOCKDKQPKIU
              schema:
                description: Service Unavailable
                properties:
                  fault:
                    properties:
                      faultId:
                        description: A value that helps identify this response back to logs, so we can easily find this specific fault
                        type: string
                      traceId:
                        description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated
                        type: string
                    required:
                      - faultId
                    type: object
                type: object
          description: Service Unavailable
      summary: Search restaurants
      tags:
        - Search
        - publicly-accessible
      x-status: Stable
  /send-to-pos-failed:
    post:
      description: "This webhook will be invoked if we experience an error or timeout in sending an order to the underlying POS / kitchen screen. When notified via this webhook, typically you will perform some form of alerting or backup flow (e.g. ask the operator to enter the order manually into the POS). NOTE: This message contains the `OrderId`, but not the full order. It is assumed that you have stored/cached the full order details earlier in the flow - e.g. via the [/order-ready-for-preparation](#/paths/~1order-ready-for-preparation-sync/post) webhook."
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/send-to-pos-failed"
        required: true
      responses:
        "200":
          description: Respond with a 200 status code to indicate that you have received the notification.
      summary: Send to POS failed
      tags:
        - Order Webhooks
        - publicly-accessible
  "/v1/{tenant}/restaurants/event/offline":
    post:
      description: Creates an event for the specified restaurants that indicates a reason for those restaurants to be offline.
      parameters:
        - description: The identifier for the tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
          x-position: 1
        - description: Name of the user or system creating the event. Used for auditing purposes
          in: header
          name: X-JE-Requester
          required: true
          schema:
            type: string
        - in: header
          name: X-JE-User-Role
          required: true
          schema:
            $ref: "#/components/schemas/UserRole"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OfflineRestaurantsRequestModel"
        required: true
        x-name: model
      responses:
        "201":
          content:
            application/json:
              schema:
                example:
                  restaurantEventId: 03bff206-d136-405f-b789-95190e9711a4
                  restaurantIds: "12345"
                properties:
                  restaurantEventId:
                    description: The ID of the offline event created
                    type: string
                  restaurantIds:
                    description: A CSV of the restaurant IDs added to the offline event
                    type: string
                type: object
          description: Created
        "400":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/ValidationError"
                type: array
          description: Bad Request
        "500":
          description: Server Error
      summary: Create Offline Event
      tags:
        - Restaurant Events
        - publicly-accessible
      x-status: Stable
  "/v1/{tenant}/restaurants/{id}/event/offline":
    delete:
      description: Removes specified restaurant from offline events. If role header is `System` or `Operations` only events created by the specified role will be affected. If role header is `Restaurant` then all events that have `allowRestaurantOverride=true` will be affected.
      parameters:
        - description: The identifier for the tenant
          in: path
          name: tenant
          required: true
          schema:
            type: string
          x-position: 1
        - description: The identifier for the restaurant
          in: path
          name: id
          required: true
          schema:
            type: string
          x-position: 2
        - description: Name of the user or system creating the event. Used for auditing purposes
          in: header
          name: X-JE-Requester
          required: true
          schema:
            type: string
        - description: The role the user or system creating the event has assumed.
          in: header
          name: X-JE-User-Role
          required: true
          schema:
            $ref: "#/components/schemas/UserRole"
      responses:
        "200":
          description: No Events to Delete
        "202":
          description: Request Succeeded
        "400":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/ValidationError"
                type: array
          description: Bad Request
        "500":
          description: Server Error
      summary: Delete Offline Event
      tags:
        - Restaurant Events
        - publicly-accessible
      x-status: Stable
  "/{tenant}/orders/{orderId}/queries/attempteddelivery":
    post:
      description: If the customer hasn't answered the door to collect the order, then an attempted delivery event can be created using this endpoint.
      parameters:
        - description: Request tenant e.g. uk.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Id for the order.
          in: path
          name: orderId
          required: true
          schema:
            type: string
        - description: Containing a partner issued API key e.g. `JE-API-KEY ABCDE123456789`
          in: header
          name: Authorization
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/create-attempted-delivery"
        description: An object for providing the reason that the attempted delivery event is being created
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request - returned if providing invalid data such as an unacceptable reason code
        "401":
          description: Unauthorized - consumer has not provided the necessary credentials
        "404":
          description: Resource not found
        "500":
          description: Internal server error
      summary: Delivery Attempt Failed
      tags:
        - Attempted Delivery API
        - publicly-accessible
      x-status: Stable
  "/{tenant}/orders/{orderId}/queries/attempteddelivery/resolution/redeliverorder":
    post:
      description: If the customer responds, then you can trigger the redelivery of an order through this endpoint
      parameters:
        - description: Request tenant e.g. uk.
          in: path
          name: tenant
          required: true
          schema:
            type: string
        - description: Id for the order.
          in: path
          name: orderId
          required: true
          schema:
            type: string
        - description: Containing a partner issued API key e.g. `JE-API-KEY ABCDE123456789`
          in: header
          name: Authorization
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/resolve-attempted-delivery-redeliver"
        description: An object for providing the new status of the order and the updated due date
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request - returned if providing invalid data such as an unacceptable reason code
        "401":
          description: Unauthorized - consumer has not provided the necessary credentials
        "404":
          description: Resource not found
        "500":
          description: Internal server error
      summary: Request Redelivery of the Order
      tags:
        - Attempted Delivery API
        - publicly-accessible
      x-status: Stable
components:
  headers:
    ExpiresAfter:
      description: date in UTC when token expires
      schema:
        format: date-time
        type: string
    Retry-After:
      description: The Retry-After HTTP response header indicates how long the User Agent should wait before making a follow-up request
      required: false
      schema:
        type: string
  responses:
    401UnauthorizedResponse:
      content:
        application/json:
          example:
            errors:
              - description: Unauthorized. The client did not provide an authentication token or the token was invalid.
                errorCode: ERR401
            faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
            traceId: H3TKh4QSJUSwVBCBqEtkKw==
          schema:
            $ref: "#/components/schemas/4XXErrorSchema"
      description: Unauthorized. The client did not provide an authentication token or the token was invalid
    403ForbiddenResponse:
      content:
        application/json:
          example:
            errors:
              - description: Forbidden
            faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
            traceId: H3TKh4QSJUSwVBCBqEtkKw==
          schema:
            $ref: "#/components/schemas/4XXErrorSchema"
      description: Forbidden. The client is not allowed to perform this action
    500ErrorResponse:
      content:
        application/json:
          example:
            errors:
              - description: Internal Server Error
            faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
            traceId: H3TKh4QSJUSwVBCBqEtkKw==
          schema:
            $ref: "#/components/schemas/500ErrorSchema"
      description: Internal Server Error
    503ServiceUnavailableResponse:
      content:
        application/json:
          example:
            errors:
              - description: Service Unavailable
            faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
            traceId: H3TKh4QSJUSwVBCBqEtkKw==
          schema:
            $ref: "#/components/schemas/5XXErrorSchema"
      description: Service Unavailable
      headers:
        Retry-After:
          $ref: "#/components/headers/Retry-After"
  schemas:
    400ConnectTokenResponse:
      properties:
        error:
          description: A description of the error that occurred.
          type: string
      type: object
    400CourierSyncErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Invalid Request
          type: string
        message:
          description: Error Message Text
          example: Invalid Request
          type: string
      type: object
    400LiveMetricsErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Invalid Request
          type: string
        message:
          description: Error Message Text
          example: Invalid Request
          type: string
      type: object
    400MarketplaceRankingErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Invalid Request
          type: string
        message:
          description: Error Message Text
          example: Invalid Request
          type: string
      type: object
    400ZoneProfileErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Invalid Request
          type: string
        message:
          description: Error Message Text
          example: Invalid Request
          type: string
      type: object
    401CourierSyncErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Unauthorized Request
          type: string
        message:
          description: Error Message Text
          example: Unauthorized Request
          type: string
      type: object
    401LiveMetricsErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Unauthorized Request
          type: string
        message:
          description: Error Message Text
          example: Unauthorized Request
          type: string
      type: object
    401MarketplaceRankingErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Unauthorized Request
          type: string
        message:
          description: Error Message Text
          example: Unauthorized Request
          type: string
      type: object
    401ZoneProfileErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Unauthorized Request
          type: string
        message:
          description: Error Message Text
          example: Unauthorized Request
          type: string
      type: object
    404CourierSyncErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Courier Sync not found
          type: string
        message:
          description: Error Message Text
          example: Courier Sync not found
          type: string
      type: object
    404LiveMetricsErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Live Metrics not found for delivery zone
          type: string
        message:
          description: Error Message Text
          example: Live Metrics not found for delivery zone
          type: string
      type: object
    404MarketplaceRankingErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Marketplace Ranking Settings not found
          type: string
        message:
          description: Error Message Text
          example: Marketplace Ranking Settings not found
          type: string
      type: object
    404ZoneProfileErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Zone Profile Settings not found
          type: string
        message:
          description: Error Message Text
          example: Zone Profile Settings not found
          type: string
      type: object
    4XXErrorSchema:
      description: A HTTP 4xx error response
      properties:
        fault:
          properties:
            errors:
              items:
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue
                    type: string
                  errorCode:
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error
                    type: string
                type: object
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated
              type: string
          required:
            - faultId
          type: object
      type: object
    500CourierSyncErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Internal Server Error
          type: string
        message:
          description: Error Message Text
          example: Internal Server Error
          type: string
      type: object
    500ErrorSchema:
      description: A HTTP 500 error response
      properties:
        fault:
          properties:
            errors:
              items:
                properties:
                  description:
                    description: If returned, the only value returned will be Internal Server Error"
                    enum:
                      - Internal Server Error
                    type: string
                type: object
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated
              type: string
          required:
            - faultId
          type: object
      type: object
    500LiveMetricsErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Internal Server Error
          type: string
        message:
          description: Error Message Text
          example: Internal Server Error
          type: string
      type: object
    500MarketplaceRankingErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Internal Server Error
          type: string
        message:
          description: Error Message Text
          example: Internal Server Error
          type: string
      type: object
    500ZoneProfileErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          example: Internal Server Error
          type: string
        message:
          description: Error Message Text
          example: Internal Server Error
          type: string
      type: object
    5XXErrorSchema:
      description: A HTTP 5xx error response
      properties:
        fault:
          description: An object representing the nature of the failure.
          properties:
            errors:
              description: The list of errors.
              items:
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue
                    type: string
                  errorCode:
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error
                    type: string
                type: object
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated
              type: string
          required:
            - faultId
          type: object
      type: object
    AccountBalanceResponse:
      properties:
        value:
          format: int32
          type: integer
      type: object
    ActiveConsumerOffer:
      additionalProperties: false
      properties:
        Type:
          description: Contains the offer data type name
          type: string
        offerId:
          description: Unique Identifier for Offer
          nullable: false
          type: string
      required:
        - Type
        - offerId
      type: object
    ActiveConsumerOffersByRestaurant:
      additionalProperties: false
      example:
        offers:
          - Type: Percent
            amount: 20
            maxQualifyingValue: 45000
            offerId: 12345sd
            qualifyingValue: 15000
          - Type: Percent
            amount: 15
            maxQualifyingValue: 70000
            offerId: 45sd345
            qualifyingValue: 35000
        restaurantId: 1234sd
      properties:
        offers:
          description: A Collection of Active Offers for `RestaurantId`
          items:
            discriminator:
              mapping:
                Percent: "#/components/schemas/Percent"
              propertyName: Type
            oneOf:
              - $ref: "#/components/schemas/ActiveConsumerOffer"
              - $ref: "#/components/schemas/Percent"
          nullable: true
          type: array
        restaurantId:
          description: The `RestaurantId` applicable to the Offer
          example: 1234567ds
          nullable: true
          type: string
      type: object
    ActiveConsumerOffersRequest:
      additionalProperties: false
      example:
        applicableDateTimeUtc: 2021-01-20T19:35:13.643Z
        consumerId: "1050450174"
        restaurantIds:
          - "12879"
          - "450174"
      properties:
        applicableDateTimeUtc:
          description: |-
            This is to support the basket use case, where
            an Offer may be active and displayed in Search or Menu
            but could become inactive by the time the consumer
            completes the order.
          format: date-time
          nullable: true
          type: string
        consumerId:
          description: Global Consumer Id
          nullable: true
          type: string
        restaurantIds:
          description: The identifiers of the restaurants. Allows offers to be returned for many restaurants.
          items:
            type: string
          minItems: 1
          type: array
      required:
        - restaurantIds
      type: object
    ActiveConsumerOffersResponse:
      additionalProperties: false
      properties:
        activeConsumerOffersByRestaurants:
          description: A Collection of Active Offers by Restaurant
          items:
            $ref: "#/components/schemas/ActiveConsumerOffersByRestaurant"
          nullable: true
          type: array
      type: object
    AddCommentToTicketModel:
      description: Used when Scoober sends a reply about a support incident, to add to a Just Eat Zendesk ticket
      properties:
        description:
          description: Comment to add to the ticket.
          example: Happy to help!
          type: string
        externalId:
          description: Scoober job reference, or similar ID used by Scoober to identify this ticket.
          example: slack:1
          type: string
        requesterEmail:
          description: E-Mail address of the ticket requester.
          example: requester@scoober.com
          nullable: true
          type: string
        responseUrl:
          description: Where should we respond to with progress on this request?
          example: https://zenbox-api.bob.external.tkwy-staging.io/ticket/reply/response
          type: string
        status:
          description: "What status should we set the ticket to: Open, pending or solved."
          example: pending
          nullable: true
          type: string
        ticketId:
          description: The ticket ID to add the comment to.
          example: 1234
          format: int64
          type: integer
      required:
        - description
        - externalId
        - responseUrl
        - ticketId
      type: object
    AddMenuView:
      properties:
        anonymousUserId:
          type: string
        app:
          type: string
        gaUserId:
          type: string
        globalUserId:
          type: string
        isSponsored:
          type: boolean
        latitude:
          format: double
          nullable: true
          type: number
        longitude:
          format: double
          nullable: true
          type: number
        menuDisplayedTimestampUtc:
          format: date-time
          nullable: true
          type: string
        outcode:
          type: string
        searchDisplayedTimestampUtc:
          format: date-time
          nullable: true
          type: string
      type: object
    AddReplyMessageModel:
      description: Information sent when a Just Eat agent sends a follow up message about a Scoober support ticket to Scoober
      properties:
        city:
          deprecated: true
          description: City this order is located in.
          example: london
          nullable: true
          type: string
        countryCode:
          description: 2 letter ISO code this ticket is about.
          example: gb
          nullable: true
          type: string
        description:
          description: "Description, i.e.: main body, of the message."
          example: Happy to help!
          type: string
        externalId:
          description: External ID for this ticket, e.g. Scoober job ID (assigned by them).
          example: slack:1
          type: string
        reason:
          description: Scoober contact reason for this ticket.
          example: front_line_reason_food_quality_cold_crushed_spilled
          type: string
        restaurantId:
          description: Restaurant Id of the order.
          example: "1234567"
          nullable: true
          type: string
        scooberJobId:
          description: Scoober job ID for this order.
          example: "1234"
          nullable: true
          type: string
        status:
          description: "Status of the ticket. Can be: New, pending, solved."
          example: pending
          type: string
        subject:
          description: Subject of the message.
          example: Scoober Test
          type: string
        ticketId:
          description: Zendesk ticket ID this message is about.
          example: 1234
          format: int64
          type: integer
      required:
        - description
        - externalId
        - reason
        - status
        - subject
        - ticketId
      type: object
    Additive:
      additionalProperties: false
      description: List of Additives
      example:
        code: "10.2"
      properties:
        code:
          description: Additive code of Takeaway Standard from TMS
          nullable: false
          type: string
      type: object
    Address:
      description: Address information.
      properties:
        address1:
          description: Site's complete street address
          example: "121 17 Ave SW #405"
          type: string
        city:
          description: City's name
          example: Calgary
          type: string
        latitude:
          description: The address latitude coordinate.
          example: 51.048615
          format: double
          type: number
        longitude:
          description: The address longitude coordinate.
          example: -114.070847
          format: double
          type: number
        name:
          description: Site's institution name or commercial name.
          example: Clinic Hospital
          type: string
        phone:
          description: Customer's phone number
          example: +1 (222) 2222-2222
          type: string
        postalCode:
          description: Postal code.
          example: T0R 0X1
          type: string
        province:
          description: Province's name
          example: Alberta
          type: string
        specialInstructions:
          description: Special instructions for delivery
          example: Contactless Delivery Please
          type: string
        useLatLongAddress:
          description: When enabled use latitude and longitude address.
          type: boolean
      type: object
    AddressGeocodingRequest:
      example:
        addressLines:
          - 2 Fleet Place
          - Fleet Place
          - London
          - EC4M 7RF
      properties:
        addressLines:
          description: Lines of the consumers address, a minimum of 3 is preferred but only 1 is required.
          items:
            type: string
          minItems: 1
          type: array
      required:
        - addressLines
      type: object
    Allergen:
      additionalProperties: false
      description: List of  Allergens
      example:
        code: A
      properties:
        code:
          description: Allergen code of Takeaway Standard from TMS
          nullable: false
          type: string
      type: object
    AppType:
      description: Application type
      enum:
        - Orderpad
        - OrdertrackerDroid
        - OrdertrackerTouch
        - Orderbox
        - OrderDeliveryService
        - OrderpadDroid
        - OrderpadTouch
        - None
      type: string
    ApproveCancellationQuery:
      additionalProperties: false
      properties:
        fee:
          description: Approved fee
          format: decimal
          nullable: true
          type: number
        notes:
          description: Notes about this cancellation
          nullable: true
          type: string
      type: object
    AttemptedDeliveryQuery:
      additionalProperties: false
      properties:
        requestType:
          description: Type of attempted delivery request
          enum:
            - problem_with_address
            - no_answer
          nullable: true
          type: string
        resolution:
          $ref: "#/components/schemas/AttemptedDeliveryResolution"
          description: The restaurants resolution to the query
          nullable: true
        response:
          $ref: "#/components/schemas/AttemptedDeliveryResponse"
          description: The customers reponse to the query
          nullable: true
        timeStamp:
          description: DateTime that the query was created in ISO 8601 format
          format: date-time
          type: string
      type: object
    AttemptedDeliveryRequest:
      additionalProperties: false
      properties:
        reasonCode:
          description: Reason for requesting attempted delivery
          enum:
            - problem_with_address
            - no_answer
          type: string
      type: object
    AttemptedDeliveryResolution:
      additionalProperties: false
      properties:
        cancellationReason:
          description: Reason for cancelling order
          enum:
            - new_address_not_within_area
            - unable_to_reprepare
            - driver_not_available
            - area_unsafe
            - customer_doesnt_want_anymore
          nullable: true
          type: string
        hasBeenMarkedAsOnItsWay:
          description: Flag to indicate whether redelivery is on it's way
          type: boolean
        redeliveryStatus:
          description: Status of the redelivery request
          enum:
            - driver_at_address
            - repreparing
          nullable: true
          type: string
        redeliveryTime:
          description: Estimated redelivery time in ISO 8601 format
          format: date-time
          nullable: true
          type: string
      type: object
    AttemptedDeliveryResolutionCancellationRequest:
      additionalProperties: false
      properties:
        reasonCode:
          description: The reason the order has been cancelled
          enum:
            - new_address_not_within_area
            - unable_to_reprepare
            - driver_not_available
            - area_unsafe
            - customer_doesnt_want_anymore
          type: string
      type: object
    AttemptedDeliveryResolutionRedeliveryRequest:
      additionalProperties: false
      properties:
        newDueDate:
          description: New date and time in ISO 8601 format the order is due to be delivered
          format: date-time
          nullable: true
          type: string
        status:
          description: New status of attempted delivery
          enum:
            - driver_at_address
            - repreparing
          nullable: true
          type: string
      type: object
    AttemptedDeliveryResponse:
      additionalProperties: false
      properties:
        isViewed:
          description: Has the response been viewed
          type: boolean
        message:
          description: Response message from customer
          nullable: true
          type: string
        responseType:
          description: Response code from the customer for attempted delivery
          enum:
            - response
            - already_delivered
          nullable: true
          type: string
      type: object
    AuthorizeResponse:
      description: The response object for the `authorize` endpoint.
      type: object
    AutoCompleteSearchResponse:
      example:
        terms:
          - classification: Restaurant
            term: Pizza Palace
          - classification: Cuisine
            term: Pizza
          - classification: Dish
            term: Large Hawaiian
      properties:
        terms:
          description: Ordered list of suggested term completions
          items:
            $ref: "#/components/schemas/AutoCompleteSearchResponseItem"
          maxItems: 10
          type: array
          uniqueItems: false
      type: object
    AutoCompleteSearchResponseItem:
      example:
        classification: Restaurant
        term: Pizza Palace
      properties:
        classification:
          description: Grouping to which term belongs
          enum:
            - Restaurant
            - Cuisine
            - Dish
          type: string
        term:
          description: Auto-completed search term
          type: string
      type: object
    Availability:
      example:
        description: Menu items available for delivery during weekdays for lunch.
        id: 1-lunch-delivery
        name: Delivery Lunch
        serviceTypes:
          - delivery
        times:
          - daysOfTheWeek:
              - monday
              - tuesday
              - wednesday
              - thursday
              - friday
              - saturday
              - sunday
            fromDateTime: 11:30:00
            toDateTime: 14:30:00
      properties:
        description:
          description: The description of the availability.
          type: string
        id:
          description: A unique identifier at menu level for a given availability.
          type: string
        name:
          description: The name for the availability.
          type: string
        serviceTypes:
          description: Values can be "collection" or "delivery" and are used to denote what types of service apply to the availability.
          items:
            enum:
              - collection
              - delivery
            type: string
          type: array
        times:
          description: An array of times when the availability is active.
          items:
            $ref: "#/components/schemas/Time"
          type: array
      type: object
    AvailableFulfilmentTimes409Error:
      description: An HTTP 409 error response
      properties:
        fault:
          additionalProperties: false
          description: A list of values that helps identify this response back to logs, so we can easily find faults.
          nullable: true
          properties:
            errors:
              description: List of errors that may assist you in resolving the issues.
              items:
                additionalProperties: false
                description: Details about the error that may assist you in resolving the issue.
                nullable: false
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue.
                    nullable: false
                    type: string
                  errorCode:
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error.
                    enum:
                      - FULFILMENT_TIME_BANDS_INVALID
                      - FULFILMENT_TIME_BANDS_NOT_FOUND
                    nullable: false
                    type: string
                required:
                  - description
                  - errorCode
                type: object
              nullable: false
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              nullable: false
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated.
              nullable: false
              type: string
          required:
            - faultId
            - traceId
            - errors
          type: object
      type: object
    AvailableTimeSlotsResponse:
      additionalProperties: false
      example:
        available:
          - from: 12:00:00
            to: 12:30:00
          - from: 12:30:00
            to: 13:00:00
        overlappingOfferIds:
          - "1"
          - "2"
      properties:
        available:
          description: The collection of available time slots in restaurant local time
          items:
            description: Pair of start and end time of available period to create offer
            properties:
              from:
                description: The available offer start time
                format: time
                nullable: false
                type: string
              to:
                description: The available offer end time
                format: time
                nullable: false
                type: string
            type: object
          nullable: false
          type: array
        overlappingOfferIds:
          description: The collection of overlapped offer ids for same date
          items:
            type: string
          nullable: false
          type: array
      type: object
    BadItem:
      additionalProperties: false
      properties:
        name:
          description: Name of the item
          nullable: true
          type: string
        quantity:
          description: Quantity of bad items
          format: int32
          type: integer
        totalCost:
          description: Total cost of all bad items
          format: decimal
          type: number
        unitPrice:
          description: Price of a single item in local currency
          format: decimal
          type: number
      type: object
    BadItemClaim:
      additionalProperties: false
      properties:
        id:
          description: Id of the claim
          nullable: true
          type: string
        issues:
          description: Bad item issues
          items:
            $ref: "#/components/schemas/BadItemsGroupedByIssue"
          nullable: true
          type: array
        refundRefusedReasonCode:
          description: If claim is refused, the reason for refusal
          nullable: true
          type: string
        status:
          $ref: "#/components/schemas/BadItemClaimStatus"
          description: Current status of the claim
        totalCost:
          description: Total cost of the claim in local currency
          format: decimal
          type: number
      type: object
    BadItemClaimStatus:
      description: Current status of a bad item claim
      enum:
        - Pending
        - Viewed
        - RefundAccepted
        - RefundRefused
      type: string
    BadItemClaimUpdate:
      additionalProperties: false
      properties:
        comment:
          description: Additional comment
          nullable: true
          type: string
        newStatus:
          $ref: "#/components/schemas/BadItemClaimStatus"
          description: New status of claim
        refundRejectedReasonCode:
          description: If claim is refused, the reason for refusal
          enum:
            - AlreadyRefunded
            - ItemReplaced
            - PartialRefundRequired
            - WasNotMissing
            - WillRedeliver
            - OrderWasHot
            - OrderWasOnTime
            - OrderWasPacked
            - FoodWasIntact
            - AddExtraItem
            - Other
          type: string
      type: object
    BadItemIssueSelectionStep:
      allOf:
        - $ref: "#/components/schemas/FlowStepBase"
        - properties:
            actions:
              description: Array of actions (i.e. buttons)
              items:
                $ref: "#/components/schemas/HelpAction"
              type: array
            body:
              description: Array of paragraphs for body text
              items:
                type: string
              type: array
            foodSafetyAction:
              $ref: "#/components/schemas/HelpAction"
              description: Action that opens Food Safety info
            header:
              description: Display header
              type: string
            issueOptionActions:
              description: Array of actions that select the issue
              items:
                $ref: "#/components/schemas/HelpAction"
                description: Array of items to choose
              type: array
            leaveReviewAction:
              $ref: "#/components/schemas/HelpAction"
              description: Action to leave a review
          type: object
      description: Flow step used for selecting the issue (e.g. missing / cold) when complaining about order items
      type: object
    BadItemsGroupedByIssue:
      additionalProperties: false
      properties:
        issue:
          description: Bad item issue type
          enum:
            - Missing
            - Cold
            - Damaged
          nullable: true
          type: string
        items:
          description: Group of items which have the same issue type
          items:
            $ref: "#/components/schemas/BadItem"
          nullable: true
          type: array
      type: object
    BadRequestMarketingResponse:
      description: 400 Bad Request Returned
      example:
        errors:
          - description: Bad Request
            errorCode: "400"
        faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
        message: Unable to process the request.
    BasketErrorResponse:
      description: The error object returned when an operation fails
      properties:
        ErrorType:
          $ref: "#/components/schemas/BasketErrorType"
        InnerErrors:
          items:
            properties:
              ErrorType:
                $ref: "#/components/schemas/BasketErrorType"
              Message:
                type: string
            type: object
          type: array
        Message:
          type: string
      type: object
    BasketErrorType:
      enum:
        - Unknown
        - MenuNotFound
        - BasketNotRetrieved
        - BasketNotMapped
        - BasketNotDeserialised
        - BasketErrorsNotDeserialised
        - InvalidBasketItems
        - BasketNotCreated
        - InvalidBasketUpdateRequest
        - ProductNotFound
        - ProductNotUpdated
        - ZipcodeNotUpdated
        - ServiceTypeNotUpdated
        - ProductNotAdded
        - ProductsNotAdded
        - MaximumBasketSizeReached
        - MinimumBasketSizeReached
        - OrderItemNotRemoved
        - NoAvailableMenu
        - RestaurantDoesNotDeliverToLocation
        - InvalidLocation
        - OrderItemNotFound
        - PartialProductsUpdate
        - AllProductsUpdateFailed
        - ProductsNotRemoved
        - InvalidCreateBasketRequest
        - BasketNotFound
      type: string
    BasketGeoLocation:
      properties:
        Latitude:
          format: decimal
          type: number
        Longitude:
          format: decimal
          type: number
      type: object
    BasketLocation:
      properties:
        GeoLocation:
          allOf:
            - $ref: "#/components/schemas/BasketGeoLocation"
          description: Not available across platform yet, but applied for future proofing.
          nullable: true
        ZipCode:
          type: string
      type: object
    BasketProductsRequest:
      description: Describes a request for product recommendations based on products in a user's basket.
      properties:
        productIds:
          description: An array of product ids that are in the user's basket.
          items:
            type: string
          type: array
        restaurantId:
          description: The id of the restaurant that the recommendations are for.
          type: string
        userExperimentValues:
          description: "An array of experiment name/variant values that the user is part of.\r

            If none of these match the experiment names that the Cross Sell API\r

            knows about, an error will be thrown."
          items:
            $ref: "#/components/schemas/ExperimentValue"
          type: array
      required:
        - productIds
        - restaurantId
        - userExperimentValues
      type: object
    BasketResponse:
      description: The response object for all basket endpoints.
      properties:
        BasketId:
          type: string
        BasketSummary:
          allOf:
            - $ref: "#/components/schemas/BasketSummary"
          description: Information for displaying the basket to the user.
        CreateDate:
          description: "`YYYY-MM-DDThh:mm:ssZ (UTC)`"
          nullable: true
          type: string
        IsOrderable:
          type: boolean
        MenuGroupId:
          type: string
        RestaurantSeoName:
          description: A unique per tenant identifier for a restaurant used for external operations.
          nullable: true
          type: string
        ServiceType:
          type: string
      type: object
    BasketSummary:
      properties:
        BasketTotals:
          items:
            $ref: "#/components/schemas/BasketTotals"
          type: object
        CategoryOffers:
          items:
            $ref: "#/components/schemas/CategoryOffer"
          type: array
        Deals:
          items:
            $ref: "#/components/schemas/Deal"
          type: array
        DeliveryCharge:
          format: decimal
          type: number
        MaximumAdditionalOrderItems:
          format: integer
          type: number
        PaymentDirectives:
          $ref: "#/components/schemas/PaymentDirectives"
          description: The directives to payment component
          example:
            DisableCashPayment: true
        Products:
          items:
            $ref: "#/components/schemas/Product"
          type: array
        Prompts:
          $ref: "#/components/schemas/Prompts"
          nullable: true
          type: object
        RestaurantOffers:
          description: The list of restaurant offers
          example:
            - ConsumerSegment: NewToRestaurant
              DiscountApplied: 8.37
              DiscountValue: 20
              OfferId: ftcOfferId75
              OfferType: Percent
            - ConsumerSegment: All
              DiscountApplied: 28.37
              DiscountCode: mgt36rtp8VoucherCode
              DiscountValue: 0
              OfferId: stampCardLoyaltyCampaignOfferId287
              OfferType: StampCard
          items:
            $ref: "#/components/schemas/RestaurantOffer"
          type: array
      required:
        - MaximumAdditionalOrderItems
      type: object
    BasketTotals:
      properties:
        SubTotal:
          format: decimal
          type: number
        Total:
          format: decimal
          type: number
      type: object
    BenderErrorResponse:
      description: The error object returned when an operation fails
      properties:
        error:
          description: Error Title
          type: string
        message:
          description: Error Message Text
          type: string
      type: object
    BenderFlexStateType:
      description: <p>The flex state type changes according to the exponential moving average and is used as a reference to bring more couriers to suffice the demand in a given delivery zone.</p> <p>If the flex state type is "Off", it means no shifts will be offered for the delivery zone.</p> <p>If the state is "CLOSED", only scheduled shifts will be allowed for the delivery zone.</p> <p>If the state is "SEEKING", the shift offers are going to be made across the courier network in order to suffice the current demand.</p> <p>If the state is "OPEN", it means demand is high and couriers from all over the courier network are allowed to create shifts for themselves to suffice the current demand.</p> <p>If the state is "CODE_RED", it means not only can everyone create shifts for themselves for the delivery zone but also couriers from other delivery zones might reallocate to help suffice the demand of that particular delivery zone.</p>
      enum:
        - CODE_RED
        - OPEN
        - SEEKING
        - CLOSED
        - Off
      type: string
    BenderSettings:
      description: The bender settings object for all endpoints.
      properties:
        benderStatus:
          description: Bender On/Off Status
          type: boolean
        deliveryZoneId:
          description: Bender Settings Delivery Zone Id
          type: string
        protectionThreshold:
          description: Number of hours of Threshold protection
          format: integer
          type: number
        settingsFlexStates:
          allOf:
            - $ref: "#/components/schemas/SettingsFlexStates"
          description: Flex states information for given Delivery Zone Id
        targetUsage:
          description: Minimum target Usage Percentage
          format: double
          nullable: true
          type: number
      type: object
    BenderSettingsList:
      description: Bender Settings List
      properties:
        benderSettingsList:
          description: List of Bender Settings
          items:
            $ref: "#/components/schemas/BenderSettings"
          type: array
      type: object
    BonusSummary:
      description: The zone profile object for a given delivery zone.
      properties:
        type:
          $ref: "#/components/schemas/BonusType"
          description: Types of bonuses that may be granted to the courier.
        value:
          description: Bonus value
          format: integer
          type: number
      type: object
    BonusType:
      description: Types of bonuses that may be granted to the courier. <p>TOP_UP_PROMOTION - In order to calculate top up promotion skip has a database table containing required acceptance rate and top up value for each existing delivery zone, when the courier's order acceptance rate is greater than the required acceptance rate and the total value is lower than top up value for that given delivery zone, the courier will be granted the difference between the top up value and total order value, know as top up promotion.</p>
      enum:
        - TOP_UP_PROMOTION
      type: string
    BringOnlineRequest:
      additionalProperties: false
      properties:
        comment:
          description: Any additional information
          nullable: true
          type: string
      type: object
    CallReceivedOrUpdatedModel:
      properties:
        callSid:
          description: UID used by Twilio, identifying a phone call
          type: string
        callStep:
          description: CallStep
          type: string
        callerId:
          description: Caller's phone number
          type: string
        orderId:
          description: Legacy/friendly Order ID
          type: string
        queryType:
          description: QueryType
          type: string
        resolution:
          description: Resolution
          type: string
        status:
          description: Contains the status of the order, if known
          type: string
        tags:
          description: Open-ended tag collection, for on-the-fly adjustment of data slicing; comma separated.
          type: string
      type: object
    CallerInformationCallRequest:
      properties:
        accountSid:
          description: The SID of the Twilio Account that created the Call resource
          type: string
        apiVersion:
          description: The Twilio API version used to start a new TwiML session
          type: string
        callSid:
          description: A unique identifier for the call, generated by Twilio
          type: string
        callStatus:
          description: A descriptive status for the call
          type: string
        called:
          description: The caller identifier
          type: string
        calledCountry:
          description: The country of the called sender
          type: string
        calledState:
          description: The state of the called sender
          type: string
        caller:
          description: The name or phone number of the caller
          type: string
        callerCountry:
          description: The country of the called sender
          type: string
        digits:
          description: The digits that caller entered on their keypad
          type: string
        direction:
          description: A string describing the direction of the call
          type: string
        finishedOnKey:
          description: Gets or sets a value that caller pressed to submit their digits input
          type: string
        from:
          description: The phone number or client identifier to use as the caller id
          type: string
        fromCountry:
          description: The country of the called sender
          type: string
        to:
          description: The phone number, SIP address, or client identifier to call
          type: string
        toCountry:
          description: The country of the recipient
          type: string
      type: object
    CancelOrderResolution:
      properties:
        ReasonCode:
          description: The reason the order has been cancelled
          enum:
            - NewAddressNotWithinDeliveryArea
            - UnableToReprepare
            - DriverNoLongerAvailable
            - AreaIsUnsafe
            - CustomerDoesnotWantOrderAnymore
          type: string
      type: object
    CancellationInfo:
      additionalProperties: false
      properties:
        canRequestCompensation:
          description: Can the restaurant claim compensation for this cancellation
          type: boolean
        hasRequestedCompensation:
          description: Has the restaurant claimed compensation for this cancellation
          type: boolean
        initiatedBy:
          $ref: "#/components/schemas/CancellationInitiatedBy"
          description: Whether cancellation has been initiated by restaurant or consumer
        reason:
          $ref: "#/components/schemas/CancellationReason"
          description: Reason for cancellation
          nullable: true
        restaurantAware:
          description: Is restaurant already aware of the cancellation
          type: boolean
        restaurantTransaction:
          $ref: "#/components/schemas/CancellationRestaurantTransaction"
          description: Potential compensation or fee applied to the restaurant for the cancellation
          nullable: true
      type: object
    CancellationInitiatedBy:
      description: Who initiated the cancellation
      enum:
        - Unknown
        - Restaurant
        - Customer
        - System
      type: string
    CancellationQueryResponse:
      additionalProperties: false
      properties:
        comments:
          description: Additional comments
          nullable: true
          type: string
        createdAt:
          description: Cancellation query creation date and time in ISO 8601 format
          format: date-time
          type: string
        orderId:
          description: The id of the order
          nullable: true
          type: string
        policyResult:
          $ref: "#/components/schemas/PolicyResult"
          description: Result of the policy run
        reasonCode:
          description: Reason for order cancellation
          enum:
            - rest_cancelled_customer_requested
            - rest_cancelled_customer_absent
            - rest_cancelled_out_of_stock
            - rest_cancelled_drivers_unavailable
            - rest_cancelled_fake_order
            - rest_cancelled_too_busy
            - rest_cancelled_other
          nullable: true
          type: string
        resolution:
          $ref: "#/components/schemas/CancellationResolution"
          description: Resolution of this cancellation querry
        state:
          description: Cancellation query outcome
          enum:
            - New
            - Offered
            - Declined
            - Approved
          nullable: true
          type: string
      type: object
    CancellationReason:
      additionalProperties: false
      properties:
        code:
          description: Reason for order cancellation
          enum:
            - rest_cancelled_out_of_stock
            - rest_cancelled_drivers_unavailable
            - rest_cancelled_customer_requested
            - rest_cancelled_customer_absent
            - rest_cancelled_fake_order
            - rest_cancelled_other
            - cust_cancelled_delivery_too_long
            - cust_cancelled_made_mistake
            - cust_cancelled_other
            - cust_cancelled_changed_mind
            - deleted_system_error
            - deleted_test_order
            - deleted_rejected_by_restaurant
          nullable: true
          type: string
        description:
          description: Any additional comments
          nullable: true
          type: string
      type: object
    CancellationResolution:
      additionalProperties: false
      properties:
        at:
          description: Creation date and time of the cancellation in ISO 8601 format
          format: date-time
          type: string
        by:
          description: Role of cancellation requester
          enum:
            - Agent
            - Restaurant
            - System
          nullable: true
          type: string
        feeApplied:
          description: Approved amount
          format: decimal
          type: number
        notes:
          description: Additional notes
          nullable: true
          type: string
        state:
          description: State of the cancellation resolution
          enum:
            - Approved
          nullable: true
          type: string
        userName:
          description: User name who created this cancellation
          nullable: true
          type: string
      type: object
    CancellationRestaurantTransaction:
      additionalProperties: false
      properties:
        amount:
          description: The total amount of the transaction
          format: decimal
          type: number
        percentage:
          description: The percentage of the order value of the transaction
          format: decimal
          type: number
        type:
          $ref: "#/components/schemas/CancellationRestaurantTransactionType"
          description: The type of cancellation transaction
      type: object
    CancellationRestaurantTransactionType:
      description: The transaction type
      enum:
        - Unknown
        - Compensation
        - Fee
      type: string
    CategoriesResponse:
      description: Categories of products for given restaurant.
      items:
        properties:
          Description:
            description: Category description.
            type: string
          Id:
            description: Category identifier.
            type: string
          Name:
            description: Category name.
            type: string
        type: object
      type: array
    Category:
      allOf:
        - $ref: "#/components/schemas/CategoryBase"
        - properties:
            itemIds:
              description: The ids of the menu items that are within the category. Each id must be unique within the category.
              items:
                type: string
              type: array
          type: object
      example:
        description: ""
        id: "3"
        itemIds:
          - "65143901"
          - "65143902"
          - "65143903"
          - "65143904"
          - "65143905"
        name: Starters
    CategoryBase:
      example:
        description: ""
        id: "3"
        name: Starters
      properties:
        description:
          description: The description of the category.
          type: string
        id:
          description: A unique identifier at menu level for a given category.
          type: string
        name:
          description: The name of the category.
          type: string
      type: object
    CategoryOffer:
      properties:
        CategoryId:
          type: string
        DiscountType:
          description: The type of discount
          type: string
        DiscountValue:
          format: decimal
          type: number
        OfferId:
          description: The unique identifier of underlying consumer offers, if applicable
          nullable: true
          type: string
        ProductId:
          description: The unique identifier of product qualified for discount
          type: string
      type: object
    CategoryRequest:
      example:
        Id: "21"
        Name: Pizzas
      properties:
        Id:
          description: Id of the Category
          type: string
        Name:
          description: Name of the Category
          type: string
      type: object
    CategoryResponse:
      example:
        Id: "21"
        Name: Pizzas
      properties:
        Id:
          description: Id of the Category
          type: string
        Name:
          description: Name of the Category
          type: string
      type: object
    ChangeRestaurantContactsRequest:
      description: Request containing new restaurant and owner contact details
      example:
        ownerMobileNumber: "+14151231234"
        restaurantEmailAddress: super-kebab@gmail.com
        restaurantPhoneNumber: "+14151231234"
      properties:
        ownerMobileNumber:
          description: Restaurant owner mobile phone number in E.164 format.
          type: string
        restaurantEmailAddress:
          description: Restaurant email address
          type: string
        restaurantPhoneNumber:
          description: Restaurant phone number in E.164 format.
          type: string
      type: object
    ChangeRestaurantLogoRequest:
      description: Request containing path to new logo file that was  uploaded to AWS S3 bucket
      example:
        fileKey: ASIASJNB7IVSWQWRLQEQ_logo.jpeg
      properties:
        fileKey:
          description: Path to the file that was uploaded to the AWS S3 bucket
          type: string
      type: object
    ChangeRestaurantMenuItemsRequest:
      description: Request containing information about what to change in the restaurant menu (item/section/category)
      example:
        containsAllergensInfomation: true
        message: Change name from "Meat burger" to "Vegan burger"
      properties:
        containsAllergensInfomation:
          description: The value indicating whether request has changes of allergen information
          type: boolean
        message:
          description: The message with the details of what needs to be changed in the menu (item/section/category)
          type: string
      type: object
    ChangeRestaurantMenuPricesRequest:
      description: Request containing information about restaurant menu price changes
      example:
        fileKeys:
          - 3c81dq0k9bhj1bn_menu_1.pdf
          - 1rhj7qhr6fhjgbm_menu_2.pdf
        message: Change the price of "Meat burger" from 5$ to 7$
      properties:
        fileKeys:
          description: Array of paths to the updated menu files that Were uploaded to the AWS S3 bucket
          items:
            description: Path to the file that was uploaded to the certain AWS S3 bucket
            type: string
          maxLength: 10
          type: array
        message:
          description: The message with the details of what prices need to be changed
          type: string
      type: object
    ChannelSubscriptions:
      properties:
        subscribedChannels:
          description: The list of channels that the consumer should only be subscribed to.
          items:
            $ref: "#/components/schemas/CommunicationChannels"
          type: array
      type: object
    ChannelSubscriptionsWithDerivedField:
      properties:
        isDefault:
          description: Are these channel subscriptions the default or have they been set elsewhere. This is a read-only derived field.
          type: boolean
        subscribedChannels:
          description: The list of channels that are subscribed
          items:
            $ref: "#/components/schemas/CommunicationChannels"
          type: array
      type: object
    CheckedInState:
      description: The state of a courier on a shift. A courier might be checked in or not.
      enum:
        - CHECKED_IN
        - NOT_CHECKED_IN
      type: string
    Checkout404Error:
      description: An HTTP 404 error response
      properties:
        fault:
          additionalProperties: false
          description: A list of values that helps identify this response back to logs, so we can easily find faults.
          nullable: true
          properties:
            errors:
              description: List of errors that may assist you in resolving the issues.
              items:
                additionalProperties: false
                description: Details about the error that may assist you in resolving the issue.
                nullable: false
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue.
                    nullable: false
                    type: string
                  errorCode:
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error.
                    enum:
                      - TENANT_NOT_SUPPORTED
                      - CHECKOUT_NOT_FOUND
                    nullable: false
                    type: string
                required:
                  - description
                  - errorCode
                type: object
              nullable: false
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              nullable: false
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated.
              nullable: false
              type: string
          required:
            - faultId
            - traceId
            - errors
          type: object
      type: object
    Checkout409Error:
      description: An HTTP 409 error response
      properties:
        fault:
          additionalProperties: false
          description: A list of values that helps identify this response back to logs, so we can easily find faults .
          nullable: true
          properties:
            errors:
              description: List of errors that may assist you in resolving the issues.
              items:
                additionalProperties: false
                description: Details about the error that may assist you in resolving the issue.
                nullable: false
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue.
                    nullable: false
                    type: string
                  errorCode:
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error.
                    enum:
                      - CHECKOUT_INVALID
                    nullable: false
                    type: string
                required:
                  - description
                  - errorCode
                type: object
              nullable: false
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              nullable: false
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated.
              nullable: false
              type: string
          required:
            - faultId
            - traceId
            - errors
          type: object
      type: object
    CheckoutAction:
      description: Action data needed to make payment for payment method in use. This data is dependant on the Payment Service Provider and payment method. When used for checkout where fraud-check is required, device-id, payer email and payer identifier should be provided.
      properties:
        data:
          additionalProperties:
            type: string
          description: Action data dictionary. Key value pairs required to make payment.
          example:
            braintreeDeviceData: someescapedjson
            deviceId: somedeviceid
            nonce: acbd2334
            payerEmail: someemail@paypal.com
            payerId: somepaypalpayerid12345
          type: object
        type:
          description: Identifier for the type of action data for the payment method dependant on paymentOptionType.
          type: string
      required:
        - type
        - data
      type: object
    CheckoutDefaultError:
      description: A default HTTP error response
      properties:
        fault:
          additionalProperties: false
          description: A list of values that helps identify this response back to logs, so we can easily find faults.
          nullable: true
          properties:
            errors:
              description: List of errors that may assist you in resolving the issues.
              items:
                additionalProperties: false
                nullable: false
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue.
                    nullable: false
                    type: string
                required:
                  - description
                type: object
              nullable: false
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              nullable: false
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated.
              nullable: false
              type: string
          required:
            - faultId
            - traceId
            - errors
          type: object
      type: object
    CheckoutGet400Error:
      description: An HTTP 400 error response
      properties:
        fault:
          additionalProperties: false
          description: A list of values that helps identify this response back to logs, so we can easily find faults.
          nullable: true
          properties:
            errors:
              description: List of errors that may assist you in resolving the issues.
              items:
                additionalProperties: false
                description: Details about the error that may assist you in resolving the issue.
                nullable: false
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue.
                    nullable: false
                    type: string
                  errorCode:
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error.
                    enum:
                      - TENANT_INVALID
                      - CHECKOUT_ID_INVALID
                    nullable: false
                    type: string
                required:
                  - description
                  - errorCode
                type: object
              nullable: false
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              nullable: false
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated.
              nullable: false
              type: string
          required:
            - faultId
            - traceId
            - errors
          type: object
      type: object
    CheckoutGetResponse:
      description: Properties apply to all supported country codes, except where specified.
      properties:
        customer:
          description: |
            Details of the customer making the purchase.

            Details of the customer will need to be submitted to the service. No default values will be set.
          nullable: false
          properties:
            firstName:
              description: |
                Customer's first name. 

                Also known as Given Name(s).
              maxLength: 100
              minLength: 1
              nullable: true
              type: string
            lastName:
              description: |
                Customer's last name (Optional).

                Also known as Family Name.
              maxLength: 100
              minLength: 0
              nullable: true
              type: string
            phoneNumber:
              description: |
                Customer's phone number.

                A phone number can be represented in:
                  - E.164 format e.g. +447777111111 or;
                  - Local format of submitted tenant e.g. 07777111111.

                E.164 formatted phone numbers are preferred.
              maxLength: 16
              minLength: 3
              nullable: true
              type: string
          type: object
        fulfilment:
          description: How and when the items will be received by the customer.
          nullable: false
          properties:
            location:
              description: |
                The destination the customer wants to receive the order.

                This only applies to purchases with a delivery service type.
              nullable: true
              properties:
                address:
                  description: The postal address where the customer wants to receive the order.
                  nullable: true
                  properties:
                    administrativeArea:
                      description: |
                        Geographical region of this address. 

                        Also known as County or State.

                        Required in Australia (AU) only for an order to be fulfilled.
                      maxLength: 50
                      minLength: 1
                      nullable: true
                      type: string
                    lines:
                      description: One or more lines representing the street address.
                      items:
                        description: Represents part of a street address.
                        maxLength: 100
                        minLength: 1
                        nullable: false
                        type: string
                      maxItems: 4
                      minItems: 0
                      nullable: false
                      type: array
                    locality:
                      description: |
                        The locality of this address.

                        Also known as Town or City.
                      maxLength: 50
                      minLength: 1
                      nullable: true
                      type: string
                    postalCode:
                      description: Postal code of this address.
                      maxLength: 50
                      minLength: 1
                      nullable: true
                      type: string
                  type: object
                geolocation:
                  description: |
                    The coordinates of a geographical location where the customer wants to receive the order.

                    Required in Australia (AU) and New Zealand (NZ) only for an order to be fulfilled.
                  nullable: true
                  properties:
                    latitude:
                      description: The latitude of the geographical location.
                      format: decimal
                      nullable: false
                      type: number
                    longitude:
                      description: The longitude of the geographical location.
                      format: decimal
                      nullable: false
                      type: number
                  required:
                    - latitude
                    - longitude
                  type: object
              type: object
            time:
              description: Time the customer wants to receive the order i.e. when order is fulfilled.
              nullable: true
              properties:
                asap:
                  description: |
                    If the order should be fulfilled as soon as possible (ASAP).

                    ASAP may not be fulfillable.

                    Default is false.
                  nullable: false
                  type: boolean
                scheduled:
                  description: |
                    Scheduled time the customer wants the order to be fulfilled.

                    If ASAP is selected and fulfillable, this will be set to the next available fulfilment time.
                  nullable: true
                  properties:
                    from:
                      description: Earliest time the customer wants the order to be fulfilled represented in ISO 8601 UTC (Zulu Time).
                      nullable: false
                      type: string
                    to:
                      description: |
                        Latest time the customer wants the order to be fulfilled represented in ISO 8601 UTC (Zulu Time). 

                        This time must be greater than or equal to the from time.
                      nullable: false
                      type: string
                  required:
                    - from
                    - to
                  type: object
              required:
                - asap
              type: object
          type: object
        isFulfillable:
          description: Whether the proposed order can be placed.
          nullable: false
          type: boolean
        issues:
          description: One or more issues associated the proposed order, that may impact whether it can be placed.
          items:
            $ref: "#/components/schemas/CheckoutIssue"
            description: Represents a single issue associated with the proposed order.
            nullable: false
          maxItems: 18
          minItems: 0
          nullable: false
          type: array
        restaurant:
          description: The restaurant selling the items to be purchased.
          nullable: false
          properties:
            availabilityId:
              deprecated: true
              description: |
                Unique identifier to identify when item(s) are available for ordering.
              nullable: false
              type: string
            id:
              description: Unique identifier for the restaurant.
              nullable: false
              type: string
          required:
            - id
            - availabilityId
          type: object
        serviceType:
          description: How the order will be dispatched.
          enum:
            - delivery
            - collection
          nullable: false
          type: string
      required:
        - restaurant
        - serviceType
        - customer
        - fulfilment
        - isFulfillable
        - issues
      type: object
    CheckoutIssue:
      discriminator:
        mapping:
          ADDITIONAL_ITEMS_REQUIRED: "#/components/schemas/CheckoutIssue_AdditionalItemsRequired"
          ADDRESS_LINES_REQUIRED: "#/components/schemas/CheckoutIssue_AddressLinesRequired"
          ADMINISTRATIVE_AREA_REQUIRED: "#/components/schemas/CheckoutIssue_AdministrativeAreaRequired"
          AGE_VERIFICATION_FAILED: "#/components/schemas/CheckoutIssue_AgeVerificationFailed"
          DATE_OF_BIRTH_REQUIRED: "#/components/schemas/CheckoutIssue_DateOfBirthRequired"
          FIRST_NAME_REQUIRED: "#/components/schemas/CheckoutIssue_FirstNameRequired"
          FULFILMENT_TIME_REQUIRED: "#/components/schemas/CheckoutIssue_FulfilmentTimeRequired"
          FULFILMENT_TIME_UNAVAILABLE: "#/components/schemas/CheckoutIssue_FulfilmentTimeUnavailable"
          GEOLOCATION_REQUIRED: "#/components/schemas/CheckoutIssue_GeolocationRequired"
          ITEMS_UNORDERABLE: "#/components/schemas/CheckoutIssue_ItemsUnorderable"
          LOCALITY_REQUIRED: "#/components/schemas/CheckoutIssue_LocalityRequired"
          LOCATION_UNDELIVERABLE: "#/components/schemas/CheckoutIssue_LocationUndeliverable"
          MINIMUM_ORDER_VALUE_NOT_MET: "#/components/schemas/CheckoutIssue_MinimumOrderValueNotMet"
          PHONE_NUMBER_REQUIRED: "#/components/schemas/CheckoutIssue_PhoneNumberRequired"
          POSTAL_CODE_REQUIRED: "#/components/schemas/CheckoutIssue_PostalCodeRequired"
          RESTAURANT_NOT_TAKING_ORDERS: "#/components/schemas/CheckoutIssue_RestaurantNotTakingOrders"
          SERVICE_TYPE_UNAVAILABLE: "#/components/schemas/CheckoutIssue_ServiceTypeUnavailable"
        propertyName: code
      properties:
        code:
          description: The issue code
          enum:
            - RESTAURANT_NOT_TAKING_ORDERS
            - SERVICE_TYPE_UNAVAILABLE
            - ITEMS_UNORDERABLE
            - ADDITIONAL_ITEMS_REQUIRED
            - MINIMUM_ORDER_VALUE_NOT_MET
            - FULFILMENT_TIME_UNAVAILABLE
            - LOCATION_UNDELIVERABLE
            - AGE_VERIFICATION_FAILED
            - FIRST_NAME_REQUIRED
            - PHONE_NUMBER_REQUIRED
            - DATE_OF_BIRTH_REQUIRED
            - FULFILMENT_TIME_REQUIRED
            - ADDRESS_LINES_REQUIRED
            - LOCALITY_REQUIRED
            - ADMINISTRATIVE_AREA_REQUIRED
            - POSTAL_CODE_REQUIRED
            - GEOLOCATION_REQUIRED
          nullable: false
          type: string
      required:
        - code
      type: object
    CheckoutIssue_AdditionalItemsRequired:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: The collection of items are not orderable in their current state. Items need to be added.
    CheckoutIssue_AddressLinesRequired:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: Indicates that the fulfilment address lines is required to fulfil an order.
    CheckoutIssue_AdministrativeAreaRequired:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: |
            Indicates that the fulfilment address administrative area is required to fulfil an order.

            Occurs in Australia (AU) only.
    CheckoutIssue_AgeVerificationFailed:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: |
            The order cannot proceed because the customer has failed the required age verification check.

            Occurs in Australia (AU) and New Zealand (NZ) only.
    CheckoutIssue_DateOfBirthRequired:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: |
            Indicates that the customer's date of birth is required to fulfil an order.

            Occurs in Australia (AU) and New Zealand (NZ) only.
    CheckoutIssue_FirstNameRequired:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: Indicates that the customer's first name is required to fulfil an order.
    CheckoutIssue_FulfilmentTimeRequired:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: Indicates that a fulfilment time is required to fulfil an order.
    CheckoutIssue_FulfilmentTimeUnavailable:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: The selected fulfilment time is no longer available. A new fulfilment time may be available for selection.
    CheckoutIssue_GeolocationRequired:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: |
            Indicates that the fulfilment geolocation is required to fulfil an order.

            Occurs in Australia (AU) and New Zealand (NZ) only.
    CheckoutIssue_ItemsUnorderable:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: The collection of items are not orderable.
    CheckoutIssue_LocalityRequired:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: Indicates that the fulfilment address locality is required to fulfil an order.
    CheckoutIssue_LocationUndeliverable:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: The restaurant is unable to deliver to this location.
    CheckoutIssue_MinimumOrderValueNotMet:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          properties:
            additionalSpendRequired:
              description: The amount the customer needs to spend to meet minimum order value. This is in the smallest unit of local currency e.g. pence.
              format: integer
              nullable: false
              type: number
            currency:
              description: The currency in which the value amounts are returned represented in ISO 4217 format.
              nullable: false
              type: string
            minimumOrderValue:
              description: The minimum order value required to complete an order. This is in the smallest unit of local currency e.g. pence.
              format: integer
              nullable: false
              type: number
          required:
            - currency
            - minimumOrderValue
            - additionalSpendRequired
          type: object
      properties:
        code:
          description: The checkout does not meet the minimum order value.
    CheckoutIssue_PhoneNumberRequired:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: Indicates that the customer's phone number is required to fulfil an order.
    CheckoutIssue_PostalCodeRequired:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: Indicates that the fulfilment postal code is required to fulfil an order.
    CheckoutIssue_RestaurantNotTakingOrders:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: The restaurant being ordered from is no longer taking orders. Either the restaurant is not offline or is no longer available on the platform.
    CheckoutIssue_ServiceTypeUnavailable:
      allOf:
        - $ref: "#/components/schemas/CheckoutIssue"
        - additionalProperties: false
          type: object
      properties:
        code:
          description: The selected service type is not available. The restaurant may still be available to order from with a different service type.
    CheckoutRequest:
      description: Details needed to make a payment.
      properties:
        action:
          $ref: "#/components/schemas/CheckoutAction"
          description: Action data needed to make payment for payment method in use. This data is dependant on the Payment Service Provider and payment method. When used for checkout where fraud-check is required, device-id, payer email and payer identifier should be provided.
          type: object
        paymentOptionId:
          description: Token to use for saved card payment. Tokens retrieved from order payment options or basket payment options calls on Public API.
          type: string
        paymentOptionType:
          description: Identifier used to determine method of payment.
          enum:
            - AccountCredit
            - AndroidPay
            - ApplePay
            - Card
            - Cash
            - GooglePay
            - PayPal
            - SavedCard
            - VCO
          type: string
        voucherCode:
          description: Voucher code to apply to order.
          type: string
      required:
        - paymentOptionType
      type: object
    CheckoutResponse:
      description: The result of a payment attempt.
      properties:
        orderId:
          description: The Id of the order.
          type: string
        result:
          description: The result of payment attempt. 2xxxx = successful payment. 4xxxxx = validation error, 5xxxx = server error
          enum:
            - "20000"
            - "40000"
            - "50000"
          type: string
        tenant:
          description: The tenant associated with the consumer.
          type: string
        timestamp:
          description: The UTC timestamp of the date and time that the response was generated at.
          format: date-time
          type: string
          x-api-version-from: 2019-04
      type: object
    CheckoutUpdate400Error:
      description: An HTTP 400 error response
      properties:
        fault:
          additionalProperties: false
          description: A list of values that helps identify this response back to logs, so we can easily find faults.
          nullable: true
          properties:
            errors:
              description: List of errors that may assist you in resolving the issues.
              items:
                additionalProperties: false
                description: Details about the error that may assist you in resolving the issue.
                nullable: false
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue.
                    nullable: false
                    type: string
                  errorCode:
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error.
                    enum:
                      - TENANT_INVALID
                      - CHECKOUT_ID_INVALID
                      - INVALID_REQUEST
                      - FIRST_NAME_INVALID
                      - LAST_NAME_INVALID
                      - PHONE_NUMBER_INVALID
                      - DATE_OF_BIRTH_INVALID
                      - FULFILMENT_TIME_INVALID
                      - ADDRESS_LINES_INVALID
                      - LOCALITY_INVALID
                      - ADMINISTRATIVE_AREA_INVALID
                      - POSTAL_CODE_INVALID
                      - GEOLOCATION_INVALID
                      - DELIVERY_NOTE_INVALID
                    nullable: false
                    type: string
                required:
                  - description
                  - errorCode
                type: object
              nullable: false
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              nullable: false
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated.
              nullable: false
              type: string
          required:
            - faultId
            - traceId
            - errors
          type: object
      type: object
    CheckoutUpdateRequest:
      description: |
        Properties apply to all supported country codes, except where specified.

        We do not support a PATCH request on the root path and a 400 status code will be returned.
      properties:
        customer:
          description: Details of the customer making the purchase.
          nullable: true
          properties:
            dateOfBirth:
              description: |
                Customer's date of birth represented in ISO 8601 format. If a time is submitted, it will be ignored.

                Required in Australia (AU) and New Zealand (NZ) only for fulfilling an order that contain items being purchased that require age verification.
              nullable: true
              type: string
            firstName:
              description: |
                Customer's first name. 

                Also known as Given Name(s).
              maxLength: 100
              minLength: 1
              nullable: true
              type: string
            lastName:
              description: |
                Customer's last name (Optional). 

                Also known as Family Name.
              maxLength: 100
              minLength: 0
              nullable: true
              type: string
            phoneNumber:
              description: |
                Customer's phone number.

                A phone number can be represented in:
                  - E.164 format e.g. +447777111111 or;
                  - Local format of submitted tenant e.g. 07777111111.

                E.164 formatted phone numbers are preferred.
              maxLength: 16
              minLength: 3
              nullable: true
              type: string
          type: object
        fulfilment:
          description: How and when the items will be received by the customer.
          nullable: true
          properties:
            location:
              description: |
                The destination the customer wants to receive the order.

                This only applies to purchases with a delivery service type.
              nullable: true
              properties:
                address:
                  description: The postal address where the customer wants to receive the order.
                  nullable: true
                  properties:
                    administrativeArea:
                      description: |
                        Geographical region of this address. 

                        Also known as County or State.

                        Required in Australia (AU) only for an order to be fulfilled.
                      maxLength: 50
                      minLength: 1
                      nullable: true
                      type: string
                    lines:
                      description: One or more lines representing the street address.
                      items:
                        description: Represents part of a street address.
                        maxLength: 100
                        minLength: 1
                        nullable: false
                        type: string
                      maxItems: 4
                      minItems: 1
                      nullable: true
                      type: array
                    locality:
                      description: |
                        The locality of this address.

                        Also known as Town or City.
                      maxLength: 50
                      minLength: 1
                      nullable: true
                      type: string
                    postalCode:
                      description: Postal code of this address.
                      maxLength: 50
                      minLength: 1
                      nullable: true
                      type: string
                  type: object
                geolocation:
                  description: |
                    The coordinates of a geographical location where the customer wants to receive the order.

                    Required in Australia (AU) and New Zealand (NZ) only for an order to be fulfilled.
                  nullable: true
                  properties:
                    latitude:
                      description: The latitude of the geographical location.
                      format: decimal
                      nullable: false
                      type: number
                    longitude:
                      description: The longitude of the geographical location.
                      format: decimal
                      nullable: false
                      type: number
                  required:
                    - latitude
                    - longitude
                  type: object
              type: object
            time:
              description: Time the customer wants to receive the order i.e. when order is fulfilled.
              nullable: true
              properties:
                asap:
                  description: |
                    If the order should be fulfilled as soon as possible (ASAP).

                    ASAP may not be fulfillable.

                    Default is false.
                  nullable: false
                  type: boolean
                scheduled:
                  description: |
                    Scheduled time the customer wants the order to be fulfilled.

                    The scheduled time will be ignored if ASAP is selected.
                  nullable: true
                  properties:
                    from:
                      description: Earliest time the customer wants the order to be fulfilled represented in ISO 8601 UTC (Zulu Time).
                      nullable: false
                      type: string
                    to:
                      description: |
                        Latest time the customer wants the order to be fulfilled represented in ISO 8601 UTC (Zulu Time). 

                        This time must be greater than or equal to the from time.
                      nullable: false
                      type: string
                  required:
                    - from
                    - to
                  type: object
              type: object
          type: object
        notes:
          description: Instructions about the order that the customer wants to submit.
          items:
            description: Instructions about the order that the customer wants to submit.
            nullable: false
            properties:
              note:
                description: The contents of the note.
                maxLength: 250
                minLength: 0
                nullable: false
                type: string
              type:
                description: The type of note.
                enum:
                  - delivery
                nullable: false
                type: string
            required:
              - type
              - note
            type: object
          maxItems: 1
          minItems: 0
          nullable: true
          type: array
      type: object
    CheckoutUpdateResponse:
      properties:
        isFulfillable:
          description: Whether the proposed order can be placed.
          nullable: false
          type: boolean
        issues:
          description: One or more issues associated the proposed order, that may impact whether it can be placed.
          items:
            $ref: "#/components/schemas/CheckoutIssue"
            description: Represents a single issue associated with the proposed order.
            nullable: false
          maxItems: 18
          minItems: 0
          nullable: false
          type: array
      required:
        - isFulfillable
        - issues
      type: object
    ClaimResolution:
      description: Representation of the decision made about a claim
      example:
        decision: Accepted
        resolvedChannel: PartnerCentre
        resolvedDate: 2020-05-28T06:40:48.1053368+00:00
        totalClaimedAccepted: 1900
      nullable: true
      properties:
        decision:
          description: Indicates whether the claim is accepted, partially accepted or rejected - claim is partially accepted if at least one of the claimed items is accepted
          enum:
            - Accepted
            - PartiallyAccepted
            - Rejected
          type: string
        resolvedChannel:
          description: Channel which was used to resolved the claim
          type: string
        resolvedDate:
          description: Date when decision on the claim was submitted
          format: date-time
          type: string
        totalClaimedAccepted:
          description: Total claimed money accepted by the restaurant in smallest unit of relevant currency
          type: number
      type: object
    ClaimResponse:
      $ref: "#/components/schemas/OrderClaim"
      description: Response containing a single claim
      example:
        affectedItems:
          - additionalContext: Potato skin was damaged
            decision: Rejected
            id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
            name: Potato skin
            quantity: 1
            reference: productid%4t56574596
            totalClaimed: 1900
            unitPrice: 2000
          - additionalContext: Pizza was damaged too
            decision: Accepted
            id: 123iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
            name: Pizza
            quantity: 1
            reference: productid%t5y6574596
            totalClaimed: 1900
            unitPrice: 2000
        currency: GBP
        expirationDate: 2020-05-22T14:22:11.1053368+00:00
        friendlyOrderReference: "451226580"
        id: 2f749442-a62a-abcd-8623-04202878e034
        issueType: Damaged
        orderId: r23tqoxdoeupdx9w8evorw
        resolution:
          decision: PartiallyAccepted
          resolvedChannel: PartnerCentre
          resolvedDate: 2020-05-28T06:40:48.1053368+00:00
          totalClaimedAccepted: 1900
        restaurantResponse:
          items:
            - decision: Rejected
              id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
            - decision: Accepted
              id: 123iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
          justification:
            comments: Not our fault at all
            reason: Other
        state: Closed
        submittedDate: 2020-05-20T14:22:11.1053368+00:00
        totalClaimed: 3800
      type: object
    ClaimsResponse:
      description: Response containing claims for a restaurant which match the given filter
      example:
        claims:
          - currency: GBP
            expirationDate: 2020-05-22T14:22:11.1053368+00:00
            friendlyOrderReference: "954226580"
            id: z2749442-a62a-abcd-8623-04202878e034
            issueType: LateOrder
            orderId: z27tqoxdoeupdx9w8evorw
            resolution:
              decision: Accepted
              resolvedChannel: OrderPad
              resolvedDate: 2020-05-28T06:40:48.1053368+00:00
              totalClaimedAccepted: 4000
            restaurantResponse:
              decision: Accepted
              justification: null
            state: Closed
            submittedDate: 2020-05-20T14:22:11.1053368+00:00
            totalClaimed: 4000
          - affectedItems:
              - additionalContext: null
                decision: NotDecided
                id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                name: Potato skin
                quantity: 1
                reference: productid%4t56574596
                totalClaimed: 1900
                unitPrice: 2000
              - additionalContext: null
                decision: NotDecided
                id: 123iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                name: Pizza
                quantity: 1
                reference: productid%t5y6574596
                totalClaimed: 1900
                unitPrice: 2000
            currency: GBP
            expirationDate: 2020-05-22T14:22:11.1053368+00:00
            friendlyOrderReference: "451226580"
            id: 2f749442-a62a-abcd-8623-04202878e034
            issueType: Damaged
            orderId: r23tqoxdoeupdx9w8evorw
            resolution: null
            restaurantResponse: null
            state: Open
            submittedDate: 2020-05-20T14:22:11.1053368+00:00
            totalClaimed: 3800
          - affectedItems:
              - additionalContext: Potato skin was cold
                decision: Rejected
                id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                name: Potato skin
                quantity: 1
                reference: productid%4t56574596
                totalClaimed: 1900
                unitPrice: 2000
            currency: GBP
            expirationDate: 2020-05-22T14:22:11.1053368+00:00
            friendlyOrderReference: "151226580"
            id: 1f749442-a62a-abcd-8623-04202878e034
            issueType: Cold
            orderId: a23tqoxdoeupdx9w8evorw
            resolution:
              decision: Rejected
              resolvedChannel: PartnerCentre
              resolvedDate: 2020-05-28T06:40:48.1053368+00:00
              totalClaimedAccepted: 0
            restaurantResponse:
              items:
                - decision: Rejected
                  id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
              justification:
                comments: null
                reason: OrderWasHot
            state: Closed
            submittedDate: 2020-05-20T14:22:11.1053368+00:00
            totalClaimed: 1900
          - affectedItems:
              - additionalContext: Potato skin was cold
                decision: Accepted
                id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                name: Potato skin
                quantity: 1
                reference: productid%4t56574596
                totalClaimed: 1900
                unitPrice: 2000
            currency: GBP
            expirationDate: 2020-05-22T14:22:11.1053368+00:00
            friendlyOrderReference: "951226580"
            id: zf749442-a62a-abcd-8623-04202878e034
            issueType: Cold
            orderId: z23tqoxdoeupdx9w8evorw
            resolution:
              decision: Accepted
              resolvedChannel: OrderPad
              resolvedDate: 2020-05-28T06:40:48.1053368+00:00
              totalClaimedAccepted: 1900
            restaurantResponse:
              items:
                - decision: Accepted
                  id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
              justification: null
            state: Closed
            submittedDate: 2020-05-20T14:22:11.1053368+00:00
            totalClaimed: 1900
          - affectedItems:
              - additionalContext: Potato skin was cold
                decision: Accepted
                id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                name: Potato skin
                quantity: 1
                reference: productid%4t56574596
                totalClaimed: 1900
                unitPrice: 2000
              - additionalContext: Meat was terribly cold
                decision: Rejected
                id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc3
                name: Meat
                quantity: 1
                reference: productid%4t56574593
                totalClaimed: 2900
                unitPrice: 3000
            currency: GBP
            expirationDate: 2020-05-22T14:22:11.1053368+00:00
            friendlyOrderReference: "951226588"
            id: zf749442-a62a-abcd-8623-04202878e038
            issueType: Cold
            orderId: z23tqoxdoeupdx9w8evorz
            resolution:
              decision: PartiallyAccepted
              resolvedChannel: OrderPad
              resolvedDate: 2020-05-28T06:40:48.1053368+00:00
              totalClaimedAccepted: 1900
            restaurantResponse:
              items:
                - decision: Accepted
                  id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                - decision: Rejected
                  id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc3
              justification: null
            state: Closed
            submittedDate: 2020-05-20T14:22:11.1053368+00:00
            totalClaimed: 1900
      properties:
        claims:
          description: Array with claims
          items:
            $ref: "#/components/schemas/OrderClaim"
          type: array
      type: object
    ClientOrderState:
      description: The state of the client order
      enum:
        - AtCounter
        - InKitchen
        - Ready
        - Collected
        - WithDriver
        - Delivered
        - RejectedTooBusy
        - RejectedTooFar
        - Cancelled
        - Received
        - RejectedNoDriverAvailable
        - RejectedMenuItemsOutOfStock
        - RejectedOther
        - TestOrderDelete
        - CancelledAcknowledged
        - CancelledUnacknowledged
        - CancelledDismissed
        - Complete
      type: string
    CodeType:
      description: ""
      enum:
        - 0
        - 1
        - 2
      type: integer
      x-enumNames:
        - Unknown
        - DynamicSingleUse
        - StaticMultipleUse
    CollectionActionType:
      enum:
        - REPLACE
        - APPEND
        - PREPEND
        - REMOVE
      type: string
    CommunicationChannels:
      enum:
        - email
        - sms
        - push
      type: string
    CommunicationPreferences:
      properties:
        marketing:
          $ref: "#/components/schemas/ChannelSubscriptionsWithDerivedField"
          description: The marketing communication preferences.
          type: object
      type: object
    CommunicationTypes:
      enum:
        - marketing
      type: string
    CompensationReason:
      additionalProperties: false
      properties:
        code:
          $ref: "#/components/schemas/CompensationReasonCode"
          description: Compensation reason code
        comments:
          description: Additional comments
          nullable: true
          type: string
        description:
          description: Additional description
          nullable: true
          type: string
      type: object
    CompensationReasonCode:
      description: Compensation reason code
      enum:
        - Unknown
        - NotSet
        - BeingPrepared
        - OnItsWay
        - Delivered
      type: string
    ConflictMarketingResponse:
      $ref: "#/components/schemas/MarketingErrorResponse"
      additionalProperties: false
      description: 409 Conflict Returned
      example:
        faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
        message: A marketing campaign already exists with this configuration
    ConnectTokenRequest:
      properties:
        acr_values:
          description: |-
            Allows passing in additional authentication related information for the `password` grant type - the following  are special proprietary `acr_values`:
            - `idp:name_of_idp` bypasses the login/home realm screen and forwards the user directly to the selected identity provider (if allowed per client configuration)
            - `tenant:name_of_tenant` can be used to pass a tenant name to the token endpoint
          type: string
        client_id:
          description: client identifier
          type: string
        client_secret:
          description: The client secret - either in the post body, or as a basic authentication header.
          type: string
        code:
          description: The authorization code (required for `authorization_code` grant type)
          type: string
        code_verifier:
          description: PKCE proof key
          type: string
        device_code:
          description: The device code (required for `urn:ietf:params:oauth:grant-type:device_code` grant type)
          type: string
        grant_type:
          description: The grant type which determines the type of flow. A custom value is also allowed.
          enum:
            - authorization_code
            - client_credentials
            - password
            - refresh_token
            - urn:ietf:params:oauth:grant-type:device_code
          type: string
        password:
          description: Resource owner password (required for `password` grant type)
          type: string
        redirect_uri:
          description: Required for the `authorization_code` grant type
          type: string
        refresh_token:
          description: The refresh token (required for `refresh_token` grant type)
          type: string
        scope:
          description: One or more registered scopes. If not specified, a token for all explicitly  allowed scopes will be issued.
          type: string
        username:
          description: Resource owner username (required for `password` grant type)
          type: string
      required:
        - client_id
        - grant_type
    ConnectTokenResponse:
      properties:
        access_token:
          description: The access token. This is a JSON web token (JWT) encoded as Base64 URL-encoding. This is returned if the `response_type` included `token`.
          type: string
        expires_in:
          description: The number of seconds until the access token expires.
          type: integer
        id_token:
          description: |-
            An ID token. This is a JSON web token (JWT) encoded as Base64 URL-encoding. 
            This is returned if the `response_type` included `id_token`.
          type: string
        scope:
          description: The original scopes you provided.
          type: string
        token_type:
          description: This is always `bearer`, and is returned only  when `token` is specified as a `response_type`.
          type: string
      type: object
    ConsumerCreate:
      example:
        emailAddress: consumer@just-eat.com
        firstName: Bob
        lastName: Smith
        password: Pa55word
        registrationSource: Native
      properties:
        emailAddress:
          description: The consumer's email address
          format: email
          maxLength: 160
          type: string
        firstName:
          description: The consumer's first name
          maxLength: 160
          type: string
        lastName:
          description: The consumer's last name
          maxLength: 160
          type: string
        marketingPreferences:
          $ref: "#/components/schemas/consumerMarketingPreference"
          description: The selected marketing preferences for the consumer
        password:
          description: The consumer's password
          maxLength: 160
          minLength: 4
          type: string
        registrationSource:
          default: Native
          description: The registration source of the consumer. Australia and New Zealand only support Guest
          enum:
            - Native
            - Guest
          type: string
      required:
        - emailAddress
        - firstName
        - lastName
      type: object
    ConsumerCreateResponse:
      example:
        token: SKgaDl0wZxnwjNgLxBnU646PDTquWLHOyPuyzidIZIg=
        type: otac
      properties:
        token:
          description: The One Time Access Code (OTAC)
          type: string
        type:
          description: |
            The type of token. At the moment, this will only ever be a One Time Access Code (OTAC)
          enum:
            - otac
          type: string
      required:
        - type
        - token
      type: object
    ConsumerErrorResponse:
      properties:
        code:
          format: int32
          type: integer
        codeText:
          type: string
      type: object
    ConsumerOffer:
      additionalProperties: false
      properties:
        campaignId:
          description: The unique identifier of the offer campaign.
          nullable: true
          type: string
        consumerSegment:
          $ref: "#/components/schemas/ConsumerSegment"
          description: Consumer Segment to which offer applies
          nullable: false
        offerId:
          description: The unique identifier of the offer.
          nullable: false
          type: string
        offerType:
          $ref: "#/components/schemas/ConsumerOfferType"
          description: The type of the offer.
          nullable: false
        priority:
          $ref: "#/components/schemas/ConsumerOffersPriority"
          description: The offers priority dictates the order and combination approach when multiple offers are executed together.
          nullable: false
        qualifyingConditions:
          $ref: "#/components/schemas/ConsumerOfferQualifyingConditions"
          description: Conditions that must be met in order to get the offer.
          nullable: true
        restaurantId:
          description: The unique identifier of the restaurant providing the offers.
          nullable: false
          type: string
      required:
        - offerId
        - restaurantId
        - offerType
        - consumerSegment
        - priority
      title: ConsumerOffer
      type: object
    ConsumerOfferNotification:
      example:
        campaignId: CheekyTuesday
        consumerSegment: All
        description: Get one free
        offerId: 12345c
        offerType: Percent
        restaurantId: 1234567ds
      properties:
        campaignId:
          description: The unique identifier of the offer campaign.
          nullable: true
          type: string
        consumerSegment:
          $ref: "#/components/schemas/ConsumerSegment"
          description: Consumer Segment to which offer applies
          nullable: false
        description:
          description: The description of the offer.
          nullable: true
          type: string
        offerId:
          description: The unique identifier of the offer.
          nullable: false
          type: string
        offerType:
          $ref: "#/components/schemas/ConsumerOfferType"
          description: The type of the offer.
          nullable: false
        restaurantId:
          description: The unique identifier of the restaurant providing the offers.
          nullable: false
          type: string
      required:
        - offerId
        - restaurantId
        - offerType
        - consumerSegment
      title: ConsumerOfferNotification
      type: object
    ConsumerOfferPrompt:
      allOf:
        - additionalProperties: false
          properties:
            description:
              description: The description of offer to show in prompt for customer
              type: string
            header:
              description: The header to show in prompt for customer
              nullable: true
              type: string
            title:
              description: The title to show in prompt for customer
              type: string
          type: object
      example:
        description: We�ll apply the discount at checkout
        header: Free item
        title: Nice! You get this free with your order
    ConsumerOfferQualifyingConditions:
      additionalProperties: false
      example:
        minimumOrderValue: 1000
        qualifyingProductCategories:
          - categoryId: Sides111
        qualifyingProducts:
          - id: FrenchFriesBig1
      properties:
        minimumOrderValue:
          description: The minimum order value required to be eligible for the Offer in smallest unit of relevant currency.
          format: integer
          nullable: true
          type: number
        qualifyingProductCategories:
          description: One of the products from category needed to be included in the basket to make offer applicable
          items:
            $ref: "#/components/schemas/ConsumerOffersProductCategory"
          minItems: 1
          nullable: true
          type: array
        qualifyingProducts:
          description: One of those products needed to be included in the basket to make offer applicable
          items:
            $ref: "#/components/schemas/ConsumerOffersProduct"
          minItems: 1
          nullable: true
          type: array
      title: ConsumerOfferQualifyingConditions
      type: object
    ConsumerOfferStampCardDiscount:
      additionalProperties: false
      properties:
        discountCode:
          description: The unique code of the discount, acts as a lock object at payment stage
          nullable: false
          type: string
        discountValue:
          description: The discount value in smallest unit of relevant currency.
          format: integer
          nullable: false
          type: number
      required:
        - discountValue
        - discountCode
      type: object
    ConsumerOfferType:
      enum:
        - Percent
        - FreeItem
        - Bogof
        - StampCard
      type: string
    ConsumerOffer_Bogof:
      allOf:
        - $ref: "#/components/schemas/ConsumerOffer"
        - additionalProperties: false
          properties:
            productCategories:
              description: |-
                One of the products from category needed to be included in the basket to make offer applicable.
                The second occurrence of such product gets 100% discount
              items:
                $ref: "#/components/schemas/ConsumerOffersProductCategory"
              minItems: 1
              nullable: true
              type: array
            products:
              description: |-
                One of those products needed to be included in the basket to make offer applicable.
                The second occurrence of such product gets 100% discount
              items:
                $ref: "#/components/schemas/ConsumerOffersProduct"
              minItems: 1
              nullable: false
              type: array
            prompt:
              $ref: "#/components/schemas/ConsumerOfferPrompt"
              description: A prompt displayed to consumer
              nullable: false
          required:
            - products
            - prompt
          type: object
      example:
        campaignId: freeIceCream
        consumerSegment: All
        offerId: 12345sd
        offerType: Bogof
        products:
          - id: iceCreamA
          - id: iceCreamB
          - id: iceCreamC
        prompt:
          description: Ice Cream for free when you order Ice Cream
          title: Nice! You get this free with your order
        restaurantId: 1234sd
    ConsumerOffer_FreeItem:
      allOf:
        - $ref: "#/components/schemas/ConsumerOffer"
        - additionalProperties: false
          properties:
            freeProduct:
              $ref: "#/components/schemas/ConsumerOffersProduct"
              deprecated: true
              description: The product that gets 100% discount applied [Deprecated - use freeProducts instead]
              nullable: false
            freeProducts:
              description: One or more of those products gets 100% discount applied
              items:
                $ref: "#/components/schemas/ConsumerOffersProduct"
              minItems: 1
              nullable: false
              type: array
            maximumRedemptions:
              description: The maximum number of discounted items for this offer
              format: integer
              minimum: 1
              nullable: false
              type: number
            prompt:
              $ref: "#/components/schemas/ConsumerOfferPrompt"
              description: A prompt displayed to consumer
              nullable: false
            qualifyingProducts:
              deprecated: true
              description: One of those products needed to be included in the collection of products to make offer applicable [Deprecated - use `qualifyingConditions` instead]
              items:
                $ref: "#/components/schemas/ConsumerOffersProduct"
              minItems: 1
              nullable: false
              type: array
          required:
            - qualifyingProducts
            - freeProduct
            - prompt
          type: object
      example:
        campaignId: freePotato
        consumerSegment: All
        freeProducts:
          - id: PotatoId
            preferableModifierIds:
              - ketchupModifierId
        maximumRedemptions: 1
        offerId: 12345sd
        offerType: FreeItem
        prompt:
          description: Potato for free when you order Ice Cream
          title: Nice! You get this free with your order
        qualifyingConditions:
          qualifyingProducts:
            - id: BigMacId
            - id: DoubleBigMacId
            - id: BigMacMenuId
        restaurantId: 1234sd
    ConsumerOffer_Percent:
      allOf:
        - $ref: "#/components/schemas/ConsumerOffer"
        - additionalProperties: false
          properties:
            amount:
              description: The percentage value discount
              format: decimal
              nullable: false
              type: number
            qualifyingValue:
              deprecated: true
              description: The minimum order value required to be eligible for the Offer in smallest unit of relevant currency. [Deprecated - use `qualifyingConditions` instead]
              format: integer
              nullable: true
              type: number
          required:
            - amount
          type: object
      example:
        amount: 10
        qualifyingConditions:
          minimumOrderValue: 1500
    ConsumerOffer_StampCard:
      allOf:
        - $ref: "#/components/schemas/ConsumerOffer"
        - additionalProperties: false
          properties:
            discounts:
              description: The list of completed stamp card discounts
              items:
                $ref: "#/components/schemas/ConsumerOfferStampCardDiscount"
              type: array
          required:
            - discounts
          type: object
    ConsumerOffersBasket:
      additionalProperties: false
      properties:
        basketItems:
          description: The collection of the basket items.
          items:
            $ref: "#/components/schemas/ConsumerOffersBasketItem"
          nullable: true
          type: array
      title: ConsumerOffersBasket
      type: object
    ConsumerOffersBasketItem:
      additionalProperties: false
      example:
        productId: BRGR123
        quantity: 1
      properties:
        productId:
          description: The `ProductId` of basket item.
          nullable: true
          type: string
        quantity:
          description: The quantity of basket item.
          format: int32
          nullable: true
          type: integer
      title: ConsumerOffersBasketItem
      type: object
    ConsumerOffersNotificationsRequest:
      additionalProperties: false
      example:
        applicableDateTimeUtc: 2020-04-20T16:20:00.000Z
        restaurantIds:
          - 123456cc
          - 123456aa
          - 12335bb
          - 12335dd
          - 12335ee
          - 12335ff
          - 12335gg
          - 12335hh
          - 12335ii
          - 12335jj
          - 12335kk
      properties:
        applicableDateTimeUtc:
          description: |-
            Overrides the current time for determining whether offers are active.
            Enables offers to be returned that have become
            inactive after the order was added to a consumer's basket.
          example: 2021-01-20T19:35:13.643Z
          format: date-time
          nullable: true
          type: string
        restaurantIds:
          description: The identifiers of the restaurants. Allows offers to be returned for many restaurants.
          items:
            type: string
          maxItems: 150
          minItems: 11
          type: array
      required:
        - restaurantIds
      title: ConsumerOffersNotificationsRequest
      type: object
    ConsumerOffersNotificationsResponse:
      description: Holder of Consumer Offer Notifications
      properties:
        offerNotifications:
          description: Provide consumer offer notifications for given restaurants, containing offer description but not exact details like discount etc.
          items:
            $ref: "#/components/schemas/ConsumerOfferNotification"
          type: array
      title: ConsumerOffersNotificationsResponse
      type: object
    ConsumerOffersPriority:
      additionalProperties: false
      example:
        type: Stackable
        value: 1
      properties:
        type:
          description: |-
            All offers are evaluated based on type and priority value in descending order.
            Universal offers are always executed. Exclusive offers are evaluated after Universal offers, the first Exclusive offer triggered will return effects
            If an Exclusive offer is triggered, the Stackable offers will be skipped.
          enum:
            - Exclusive
            - Stackable
            - Universal
          type: string
        value:
          description: The offers are evaluated based on priority in descending order. The first triggered will return effects
          format: integer
          type: number
      required:
        - value
        - type
      title: ConsumerOffersPriority
      type: object
    ConsumerOffersProduct:
      additionalProperties: false
      example:
        id: 6 Chicken Nuggets
        preferableModifierIds:
          - ketchupModifierId
      properties:
        id:
          description: The unique identifier of the product.
          type: string
        preferableModifierIds:
          description: The collection of preselected modifiers for the item.
          items:
            type: string
          nullable: true
          type: array
        showModifiersSelectionDialog:
          description: Determinate if modifiers selection dialogue will be shown to customer.
          type: boolean
      required:
        - id
      title: ConsumerOffersProduct
      type: object
    ConsumerOffersProductCategory:
      additionalProperties: false
      example:
        categoryId: Pizza1234
        categoryName: Pizza
      properties:
        categoryId:
          description: The unique identifier of the product category.
          type: string
        categoryName:
          description: The name of the product category.
          type: string
        preferableModifierIds:
          description: The collection of preselected modifiers for the items in category.
          items:
            type: string
          nullable: true
          type: array
      required:
        - categoryId
      title: ConsumerOffersProductCategory
      type: object
    ConsumerOffersRequest:
      additionalProperties: false
      example:
        applicableDateTimeUtc: 2020-04-20T16:20:00.000Z
        consumerOffersBasket:
          basketItems:
            - productId: BRGR123
              quantity: 1
        restaurantId: asd12345
      properties:
        applicableDateTimeUtc:
          description: |-
            Overrides the current time for determining whether offers are active.
            Enables offers to be returned that for the time in future (e.g. Pre-order)
          example: 2021-01-20T19:35:13.643Z
          format: date-time
          type: string
        consumerId:
          description: Global Consumer Id
          nullable: true
          type: string
        consumerOffersBasket:
          $ref: "#/components/schemas/ConsumerOffersBasket"
          description: The consumer basket content
        restaurantId:
          description: The identifier of the restaurant.
          minLength: 1
          type: string
      required:
        - restaurantId
        - consumerOffersBasket
      title: ConsumerOffersRequest
      type: object
    ConsumerOffersResponse:
      description: Holder of consumer offers
      example:
        offers:
          - campaignId: CheekyTuesday
            consumerSegment: All
            offerId: 12345sd
            offerType: Percent
            priority:
              type: Stackable
              value: 1
            qualifyingConditions:
              minimumOrderValue: 15000
            restaurantId: 1234sd
          - consumerSegment: All
            freeProducts:
              - id: 6 Chicken Nuggets
                preferableModifierIds:
                  - ketchupModifierId
            offerId: 345sd
            offerType: FreeItem
            priority:
              type: Stackable
              value: 1
            prompt:
              description: 6 Nuggets for free when you order Big Mac
              title: Nice! You get this free with your order
            qualifyingConditions:
              qualifyingProducts:
                - id: BigMacId
                - id: DoubleBigMacId
                - id: BigMacMenuId
            restaurantId: 1234sd
          - campaignId: freeIceCream
            consumerSegment: All
            offerId: 345345sd
            offerType: Bogof
            priority:
              type: Stackable
              value: 1
            products:
              - id: CookieDoughId
              - id: FishFoodId
              - id: ChocFudgeBrownieId
            prompt:
              description: Get 2 for 1 on Any Ice Cream Company's 465ml
              title: Nice! You get this free with your order
            restaurantId: 1234sd
      properties:
        offers:
          description: Provide applicable consumer offers based on provided `restaurantId` and basket content.
          items:
            discriminator:
              mapping:
                Bogof: "#/components/schemas/ConsumerOffer_Bogof"
                FreeItem: "#/components/schemas/ConsumerOffer_FreeItem"
                Percent: "#/components/schemas/ConsumerOffer_Percent"
                StampCard: "#/components/schemas/ConsumerOffer_StampCard"
              propertyName: offerType
            oneOf:
              - $ref: "#/components/schemas/ConsumerOffer_FreeItem"
              - $ref: "#/components/schemas/ConsumerOffer_Percent"
              - $ref: "#/components/schemas/ConsumerOffer_StampCard"
              - $ref: "#/components/schemas/ConsumerOffer_Bogof"
          type: array
      title: ConsumerOffersResponse
      type: object
    ConsumerOrderAddress:
      description: A postal address.
      properties:
        addressLines:
          description: The lines of the address.
          items:
            type: string
          type: array
        city:
          description: The city or town.
          type: string
        countryCode:
          description: The ISO 3166-1 alpha-2 country code.
          type: string
        locality:
          description: The locality, such as a district or suburb, if any.
          type: string
        location:
          $ref: "#/components/schemas/ConsumerOrderGeoposition"
        postalCode:
          description: The postal code.
          type: string
        region:
          description: The region, such as a county, province or state.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderApplicationInfo:
      description: Information about an application used to place an order.
      properties:
        clientIdentifier:
          description: The client identifier associated with the order, if any, such as a device Id or IP address.
          type: string
        feature:
          description: The name of the Just Eat feature that placed the order.
          type: string
        name:
          description: The name of the application that placed the order.
          type: string
        userAgent:
          description: The User Agent of the client that placed the order.
          type: string
        version:
          description: The version of the application that placed the order.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderBasketInfo:
      description: Information about the items in the basket for an order.
      properties:
        currencyCode:
          description: The ISO-4217 currency code associated with the basket.
          type: string
        discounts:
          additionalProperties:
            format: double
            type: number
          description: The discounts applied to the basket, if any.
          type: object
        fees:
          additionalProperties:
            format: double
            type: number
          description: The fees applied to the basket, if any.
          type: object
        items:
          description: The items in the basket.
          items:
            $ref: "#/components/schemas/ConsumerOrderBasketItem"
          type: array
        metadata:
          additionalProperties:
            type: string
          description: Arbitrary metadata about the basket.
          type: object
        offers:
          description: The offer discounts applied to the basket.
          items:
            $ref: "#/components/schemas/ConsumerOrderOffer"
          type: array
        subtotal:
          description: The subtotal for the basket before any discounts or fees.
          format: double
          type: number
        summary:
          $ref: "#/components/schemas/ConsumerOrderBasketSummary"
        tips:
          additionalProperties:
            $ref: "#/components/schemas/ConsumerOrderTipItem"
          description: The tips associated with the basket.
          type: object
        total:
          description: The total value of the basket.
          format: double
          type: number
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderBasketItem:
      description: An item in a basket.
      properties:
        bulkDiscounts:
          description: The bulk discounts, if any.
          items:
            $ref: "#/components/schemas/ConsumerOrderBulkDiscount"
          type: array
        combinedPrice:
          description: The combined price for the item, including any accessories and/or discounts.
          format: double
          type: number
        description:
          description: The description for the item.
          type: string
        discounts:
          description: The discounts, if any.
          items:
            $ref: "#/components/schemas/ConsumerOrderDiscount"
          type: array
        name:
          description: The name of the item.
          type: string
        optionalAccessories:
          description: The optional meal part accessories, if any.
          items:
            $ref: "#/components/schemas/ConsumerOrderMealAccessory"
          type: array
        parts:
          description: The parts of the meal, if any.
          items:
            $ref: "#/components/schemas/ConsumerOrderMealPart"
          type: array
        productId:
          description: The product Id.
          type: string
        requiredAccessories:
          description: The required meal part accessories, if any.
          items:
            $ref: "#/components/schemas/ConsumerOrderMealAccessory"
          type: array
        synonym:
          description: The synonym of the item.
          type: string
        unitPrice:
          description: The unit price for the item.
          format: double
          type: number
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderBasketSummary:
      description: A summary of the items in the basket for an order.
      properties:
        items:
          description: The items in the basket summary.
          items:
            $ref: "#/components/schemas/ConsumerOrderBasketSummaryItem"
          type: array
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderBasketSummaryItem:
      description: A summarised item in a basket.
      properties:
        accessories:
          description: The accessories in the basket summary item.
          items:
            $ref: "#/components/schemas/ConsumerOrderMealAccessory"
          type: array
        id:
          description: The Id of the item, such as a product Id or meal part Id.
          type: string
        items:
          description: The items in the basket summary item.
          items:
            $ref: "#/components/schemas/ConsumerOrderBasketSummaryItem"
          type: array
        name:
          description: The name of the item.
          type: string
        price:
          description: The price of the item for the associated quantity.
          format: double
          type: number
        quantity:
          description: The quantity of the item.
          format: int32
          type: integer
        synonym:
          description: The synonym of the item.
          type: string
        unitPrice:
          description: The unit price of the item.
          format: double
          type: number
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderBulkDiscount:
      description: A bulk discount.
      properties:
        amount:
          description: The amount of the bulk discount.
          format: double
          type: number
        name:
          description: The name of the bulk discount.
          type: string
        productTypeId:
          description: The Id of the product type the discount applies to.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderConsumerInfo:
      description: Information about a consumer.
      properties:
        contactNumber:
          description: The consumer's contact number.
          type: string
        deliveryAddress:
          $ref: "#/components/schemas/ConsumerOrderAddress"
        email:
          description: The consumer's email address.
          type: string
        id:
          description: The consumer Id.
          type: string
        name:
          description: The consumer's name.
          type: string
        timeZone:
          description: The IANA time zone Id the consumer is located in.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderConsumerReview:
      description: A consumer's review of an order.
      properties:
        comments:
          description: Any comments left by the consumer in the review.
          type: string
        scores:
          additionalProperties:
            format: double
            type: number
          description: The scores given for the scored attributes of the review by the consumer.
          type: object
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderCuisineInfo:
      description: Information about a restaurant cuisine.
      properties:
        id:
          description: The Id of the cuisine.
          type: string
        name:
          description: The name of the cuisine.
          type: string
        rank:
          description: The ranking for the cuisine.
          format: int32
          type: integer
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderDateTimeRange:
      description: A range of date and time values.
      properties:
        end:
          description: The end of the range.
          format: date-time
          type: string
        start:
          description: The start of the range.
          format: date-time
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderDiscount:
      description: A discount.
      properties:
        amount:
          description: The amount of the discount.
          format: double
          type: number
        name:
          description: The name of the discount.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderErrorResponse:
      description: An error response.
      properties:
        _links:
          additionalProperties:
            $ref: "#/components/schemas/ConsumerOrderLink"
          description: The links information, if any.
          type: object
        detail:
          description: The optional error detail.
          type: object
        errorCode:
          description: The API error code, if any.
          type: string
        errorId:
          description: The error Id.
          type: string
        fingerprint:
          description: The error fingerprint, if available.
          type: string
        message:
          description: The error message.
          type: string
        requestId:
          description: The request Id, if available.
          type: string
        statusCode:
          description: The HTTP status code.
          format: int32
          type: integer
        timestamp:
          description: The timestamp of the error.
          format: date-time
          type: string
        version:
          description: The version of the API that generated the error.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderGeoposition:
      description: A geoposition.
      properties:
        latitude:
          description: The latitude.
          format: double
          type: number
        longitude:
          description: The longitude.
          format: double
          type: number
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderImage:
      description: An image.
      properties:
        height:
          description: The optional height of the image, in pixels.
          format: int32
          nullable: true
          type: integer
        imageType:
          description: The type of the image, such as a logo.
          type: string
        uri:
          description: The URI of the image.
          type: string
        width:
          description: The optional width of the image, in pixels.
          format: int32
          nullable: true
          type: integer
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderLink:
      description: A link to an API resource.
      properties:
        href:
          description: The URL of the link.
          type: string
        templated:
          description: A value indicating whether the URL is templated.
          type: boolean
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderMealAccessory:
      description: An accessory for a meal.
      properties:
        accessoryId:
          description: The accessory Id.
          type: string
        name:
          description: The name of the accessory.
          type: string
        quantity:
          description: The quantity of the accessory.
          format: int32
          type: integer
        unitPrice:
          description: The unit price of the accessory.
          format: double
          type: number
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderMealPart:
      description: A part of a meal.
      properties:
        groupId:
          description: The group Id.
          type: string
        mealPartId:
          description: The meal part Id.
          type: string
        name:
          description: The name of the meal part.
          type: string
        optionalAccessories:
          description: The optional meal part accessories, if any.
          items:
            $ref: "#/components/schemas/ConsumerOrderMealAccessory"
          type: array
        requiredAccessories:
          description: The required meal part accessories, if any.
          items:
            $ref: "#/components/schemas/ConsumerOrderMealAccessory"
          type: array
        synonym:
          description: The synonym of the meal part.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderOffer:
      description: An offer applied to a basket.
      properties:
        id:
          description: The offer Id.
          type: string
        offerAmount:
          description: The value of the offer.
          format: double
          type: number
        offerType:
          description: The type of the offer.
          type: string
        qualifyingValue:
          description: The qualifying value for the offer.
          format: double
          type: number
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderOrder:
      description: An order.
      properties:
        _links:
          additionalProperties:
            $ref: "#/components/schemas/ConsumerOrderLink"
          description: The links information, if any.
          type: object
        application:
          $ref: "#/components/schemas/ConsumerOrderApplicationInfo"
        basket:
          $ref: "#/components/schemas/ConsumerOrderBasketInfo"
        consumer:
          $ref: "#/components/schemas/ConsumerOrderConsumerInfo"
        friendlyId:
          description: The friendly order Id.
          type: string
        id:
          description: The Id of the order.
          type: string
        information:
          $ref: "#/components/schemas/ConsumerOrderOrderInfo"
        metadata:
          additionalProperties:
            type: string
          description: Arbitrary metadata about the order.
          type: object
        payment:
          $ref: "#/components/schemas/ConsumerOrderPaymentInfo"
        restaurant:
          $ref: "#/components/schemas/ConsumerOrderRestaurantInfo"
        review:
          $ref: "#/components/schemas/ConsumerOrderReviewInfo"
        status:
          $ref: "#/components/schemas/ConsumerOrderStatusInfo"
        tenant:
          description: The tenant associated with the order.
          type: string
        timestamp:
          description: The UTC timestamp of the date and time that the response was generated at.
          format: date-time
          type: string
          x-api-version-from: 2019-04
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderOrderHistory:
      description: The order history of a consumer.
      properties:
        _links:
          additionalProperties:
            $ref: "#/components/schemas/ConsumerOrderLink"
          description: The links information, if any.
          type: object
        _pagination:
          $ref: "#/components/schemas/ConsumerOrderPaginationInfo"
        consumerId:
          description: The Id of the consumer.
          type: string
        orders:
          description: The consumer's orders.
          items:
            $ref: "#/components/schemas/ConsumerOrderOrder"
          type: array
        tenant:
          description: The tenant associated with the consumer.
          type: string
        timestamp:
          description: The UTC timestamp of the date and time that the response was generated at.
          format: date-time
          type: string
          x-api-version-from: 2019-04
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderOrderInfo:
      description: Additional information about an order.
      properties:
        canReorder:
          description: A value indicating whether the order can be re-ordered.
          type: boolean
        createdAt:
          description: The date and time the order was created.
          format: date-time
          type: string
        isAsap:
          description: A value indicating whether the order should be fulfilled as soon as possible.
          type: boolean
        isForDelivery:
          description: A value indicating whether the order is for delivery.
          type: boolean
        notes:
          additionalProperties:
            type: string
          description: Any notes associated with the order given by the consumer.
          type: object
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderOrderStatus:
      description: The status of an order.
      properties:
        consumerId:
          description: The Id of consumer associated with the order.
          type: string
        id:
          description: The Id of the order.
          type: string
        isForDelivery:
          description: A value indicating whether the order is for delivery.
          type: boolean
        restaurantName:
          description: The name of the restaurant associated with the order.
          type: string
        status:
          $ref: "#/components/schemas/ConsumerOrderStatusInfo"
        tenant:
          description: The tenant associated with the order.
          type: string
        timestamp:
          description: The UTC timestamp of the date and time that the response was generated at.
          format: date-time
          type: string
          x-api-version-from: 2019-04
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderPaginationInfo:
      description: Pagination information for a request.
      properties:
        count:
          description: The current number of results.
          format: int64
          type: integer
        links:
          additionalProperties:
            $ref: "#/components/schemas/ConsumerOrderLink"
          description: The pagination links.
          type: object
        token:
          description: The pagination token for the next page of results, if any.
          type: string
        total:
          description: The total number of results, if known.
          format: int64
          nullable: true
          type: integer
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderPaymentInfo:
      description: Information about a payment.
      properties:
        currencyCode:
          description: The ISO-4217 currency code associated with the payment.
          type: string
        fees:
          additionalProperties:
            format: double
            type: number
          description: The amount of fees applied to the order.
          type: object
        paidAt:
          description: The date and time the order was paid for, if known.
          format: date-time
          nullable: true
          type: string
        payments:
          description: The individual payment(s).
          items:
            $ref: "#/components/schemas/ConsumerOrderPaymentItem"
          type: array
        taxes:
          additionalProperties:
            $ref: "#/components/schemas/ConsumerOrderTaxItem"
          description: The taxes applied to the order.
          type: object
        totals:
          $ref: "#/components/schemas/ConsumerOrderTotals"
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderPaymentItem:
      description: An individual payment.
      properties:
        cardType:
          description: The card type, such as VISA, if used.
          type: string
        deferredFee:
          description: The deferred fee value, if any.
          format: double
          type: number
          x-api-version-from: 2019-05
        fee:
          description: The payment fee, if any.
          format: double
          type: number
        lastCardDigits:
          description: The last digits of a payment card, if used.
          type: string
        paymentMethod:
          description: The payment method, such as cash or card.
          enum:
            - None
            - Cash
            - Card
            - AccountCredit
            - Voucher
            - PayPal
            - Interac
            - ApplePay
          type: string
          x-api-version-from: 2017-10
        pspName:
          description: The name of the Payment Service Provider, if any.
          type: string
        transactionReference:
          description: The transaction reference, if any.
          type: string
        value:
          description: The payment value.
          format: double
          type: number
        voucherCode:
          description: The voucher code used, if any.
          type: string
          x-api-version-from: 2019-05
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderReorderResponse:
      additionalProperties: false
      description: A reorder response.
      properties:
        basketId:
          description: The basket Id.
          type: string
        menuId:
          description: The menu Id.
          type: string
        restaurantId:
          description: The restaurant Id.
          type: string
        restaurantSeoName:
          description: The restaurant SEO name.
          type: string
        serviceType:
          description: The service type, such as collection or delivery.
          type: string
        tenant:
          description: The tenant.
          type: string
        unavailableProductIds:
          description: The unavailable product Ids.
          items:
            type: string
          type: array
      type: object
      x-api-version-from: 2020-06
    ConsumerOrderRestaurantCapability:
      description: A capability of a restaurant.
      properties:
        isCapable:
          description: A value indicating whether the restaurant is capable of fulfilling the capability.
          type: boolean
        metadata:
          additionalProperties:
            type: string
          description: Arbitrary metadata about the capability.
          type: object
        name:
          description: The name of the capability.
          type: string
      type: object
      x-api-version-from: 2018-09
    ConsumerOrderRestaurantInfo:
      description: Information about a restaurant.
      properties:
        capabilities:
          additionalProperties:
            $ref: "#/components/schemas/ConsumerOrderRestaurantCapability"
          description: The capabilities of the restaurant.
          type: object
          x-api-version-from: 2018-09
        contactNumber:
          description: The contact telephone number for the restaurant.
          type: string
        cuisines:
          description: The cuisines associated with the restaurant.
          items:
            $ref: "#/components/schemas/ConsumerOrderCuisineInfo"
          type: array
        displayName:
          description: The display name of the restaurant.
          type: string
        id:
          description: The Id of the restaurant.
          type: string
        images:
          additionalProperties:
            $ref: "#/components/schemas/ConsumerOrderImage"
          description: The images associated with the restaurant.
          type: object
        isClosed:
          description: A value indicating whether the restaurant is currently closed.
          type: boolean
        isOffline:
          description: A value indicating whether the restaurant is currently offline.
          type: boolean
        metadata:
          additionalProperties:
            type: string
          description: Arbitrary metadata about the restaurant.
          type: object
        nextClosesAt:
          description: The date and time the restaurant next closes, if open.
          format: date-time
          nullable: true
          type: string
        nextOpensAt:
          description: The date and time the restaurant next opens, if closed.
          format: date-time
          nullable: true
          type: string
        postalAddress:
          $ref: "#/components/schemas/ConsumerOrderAddress"
        seoName:
          description: The SEO name of the restaurant.
          type: string
        timeZone:
          description: IANA time zone Id the restaurant is located in.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderReviewInfo:
      description: Information about the review for an order.
      properties:
        averageScore:
          description: The average score for the attributes of the review.
          format: double
          nullable: true
          type: number
        canReview:
          description: A value indicating whether the order can be reviewed.
          type: boolean
        comments:
          description: Any comments left by the consumer in the review.
          type: string
        isReviewed:
          description: A value indicating whether the order has been reviewed.
          type: boolean
        maximumScore:
          description: The maximum score that can be given to an attribute of the review.
          format: double
          type: number
        ratingCode:
          description: The rating code for the review.
          type: string
        scores:
          additionalProperties:
            format: double
            type: number
          description: The scores given for the scored attributes of the review.
          type: object
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderStatusHistoryItem:
      description: Information about the status of an order at a specific point in time.
      properties:
        confidence:
          description: The confidence level of the status.
          type: string
        dueDate:
          description: The due date at the date and time associated with the timestamp, if any.
          format: date-time
          nullable: true
          type: string
        reason:
          description: |-
            The reason for the order's status, if known.
            If your client does not understand this reason, assume that it has no value.
          type: string
          x-api-version-from: 2019-05
        timestamp:
          description: The timestamp associated with this order status.
          format: date-time
          type: string
        value:
          description: The order status at the date and time associated with the timestamp.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderStatusInfo:
      description: Information about the status of an order.
      properties:
        confidence:
          description: The confidence level of the order's status.
          type: string
        currentDueDate:
          description: The current due date of the order, if any.
          format: date-time
          nullable: true
          type: string
        delay:
          description: How delayed the order is.
          type: string
        estimatedCompletion:
          $ref: "#/components/schemas/ConsumerOrderDateTimeRange"
        expectPreorderNotificationAt:
          description: The date and time the restaurant is expected to accept a preorder, if any.
          format: date-time
          nullable: true
          type: string
        finishedAt:
          description: The date and time the order was finished, if completed successfully.
          format: date-time
          nullable: true
          type: string
        history:
          description: The history of the order's statuses, if available.
          items:
            $ref: "#/components/schemas/ConsumerOrderStatusHistoryItem"
          type: array
        initialDueDate:
          description: The initial due date of the order, if any.
          format: date-time
          nullable: true
          type: string
        isActive:
          description: A value indicating whether the status of the order may change further.
          type: boolean
        isDelayed:
          description: A value indicating whether the order is delayed.
          type: boolean
        isDueDateDynamic:
          description: |-
            A value indicating whether the current due date was determined
            dynamically, for example from the current location of a delivery driver.
          type: boolean
          x-api-version-from: 2019-04
        isRecent:
          description: A value indicating whether the order is a recent order.
          type: boolean
        notifications:
          $ref: "#/components/schemas/ConsumerOrderStatusNotificationsInfo"
        statusReason:
          description: |-
            The reason for the status of the order, if known.
            If your client does not understand this status reason, assume that it has no value.
          type: string
          x-api-version-from: 2019-05
        timeZone:
          description: IANA time zone Id associated with the order.
          type: string
        tracking:
          $ref: "#/components/schemas/ConsumerOrderTrackingInfo"
        upcoming:
          description: The expected upcoming order statuses for the order, if known.
          items:
            $ref: "#/components/schemas/ConsumerOrderUpcomingStatusItem"
          type: array
        value:
          description: The current status of the order.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderStatusNotificationsInfo:
      description: Status updates notification information for an order.
      properties:
        channelKey:
          description: The key for the status updates notification channel, if any.
          type: string
        channelName:
          description: The name of the status updates notification channel.
          type: string
        providerName:
          description: The name of the status updates notification provider, such as PubNub.
          type: string
      type: object
      x-api-version-from: 2018-09
    ConsumerOrderTaxItem:
      description: A tax item.
      properties:
        name:
          description: The name of the tax.
          type: string
        rate:
          description: The tax rate.
          format: double
          type: number
        value:
          description: The value of the tax due.
          format: double
          type: number
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderTipItem:
      description: A tip.
      properties:
        amount:
          description: The cash value of the tip.
          format: double
          type: number
        name:
          description: The name of the type of the tip.
          type: string
        value:
          description: The value of the tip relative to its type, such as the percentage.
          format: double
          type: number
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderTotals:
      description: A class containing payment totals.
      properties:
        accountCredits:
          description: The total amount of account credit(s) applied to the order.
          format: double
          type: number
        complimentary:
          description: The total amount of promotional credit(s) applied to the order.
          format: double
          type: number
        discounts:
          description: The total amount of discount(s) applied to the order.
          format: double
          type: number
        fees:
          description: The total amount of fees applied to the order.
          format: double
          type: number
        subtotal:
          description: The subtotal for the order.
          format: double
          type: number
        taxes:
          description: The total amount of taxes applied to the order.
          format: double
          type: number
        tips:
          description: The total amount of tips applied to the order.
          format: double
          type: number
        totalPaid:
          description: The total paid for the order, after taking into account credit, vouchers etc.
          format: double
          type: number
        totalToPay:
          description: The total to pay for the order.
          format: double
          type: number
        vouchers:
          description: The total amount of any voucher(s) applied to the order.
          format: double
          type: number
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderTrackingInfo:
      description: Tracking information for an order.
      properties:
        channelKey:
          description: The key for the tracking channel, if any.
          type: string
        channelName:
          description: The name of the tracking channel.
          type: string
        providerName:
          description: The name of the tracking provider, such as PubNub.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrderUpcomingStatusItem:
      description: Information about an upcoming status an order is expected to reach.
      properties:
        sortOrder:
          description: The sort order of the upcoming status.
          format: int32
          type: integer
        value:
          description: The upcoming status for the order.
          type: string
      type: object
      x-api-version-from: 2017-10
    ConsumerOrdersPlacementErrorResponse:
      additionalProperties: false
      description: An error response.
      example:
        _links: {}
        errorCode: ErrorCode
        errorId: c9e62582-4dbe-4eac-a982-b3fa2cb04fa0
        message: An error occurred.
        requestId: 8000024c-0002-fe00-b63f-84710c7967bb
        statusCode: 500
        timestamp: 2019-04-16T17:52:50.000Z
        version: 1.0.1012 (377c04c)
      properties:
        _links:
          additionalProperties:
            $ref: "#/components/schemas/ConsumerOrdersPlacementLink"
          description: The links information, if any.
          nullable: false
          type: object
        detail:
          additionalProperties: true
          description: The optional error detail.
          nullable: true
          type: object
        errorCode:
          description: The API error code.
          nullable: false
          type: string
        errorId:
          description: The API error Id.
          nullable: false
          type: string
        fingerprint:
          description: The error fingerprint, if available.
          nullable: true
          type: string
        message:
          description: The error message.
          nullable: true
          type: string
        requestId:
          description: The request Id, if available.
          nullable: true
          type: string
        statusCode:
          description: The HTTP status code.
          format: int32
          type: integer
        timestamp:
          description: The timestamp of the error.
          format: date-time
          type: string
        version:
          description: The version of the API that generated the error.
          nullable: true
          type: string
      type: object
      x-api-version-from: 1
    ConsumerOrdersPlacementLink:
      additionalProperties: false
      description: A link to an API resource.
      properties:
        href:
          description: The URL of the link.
          nullable: false
          type: string
        templated:
          description: A value indicating whether the URL is templated.
          type: boolean
      type: object
      x-api-version-from: 1
    ConsumerOrdersPlacementReferralState:
      description: Order referral source
      enum:
        - None
        - ReferredByWeb
      type: string
      x-api-version-from: 1
    ConsumerOrdersPlacementRequestV1:
      additionalProperties: false
      description: An object representing the request to place an order for a given basket Id.
      example:
        applicationId: 4
        applicationVersion: android-test-version
        basketId: basket_gh23i_PS4_
        customerNotes:
          NoteForDriver: Call me when you get here
          NoteForRestaurant: No mayonnaise
        deviceId: Swagger-DeviceId
        deviceName: Swagger-DeviceName
        referralState: ReferredByWeb
        removedIngredientsEnabled: false
      properties:
        applicationId:
          description: The Id of application that is placing the order.
          format: int32
          type: integer
        applicationName:
          description: The name of application that is placing the order.
          nullable: true
          type: string
        applicationVersion:
          description: The version of application that is placing the order.
          nullable: false
          type: string
        basketId:
          description: The basket Id.
          type: string
        customerNotes:
          additionalProperties:
            type: string
          description: Dictionary of the customer notes to add to the order. The keys of the dictionary are the notes capabilities that the restaurant has.
          nullable: true
          type: object
        deviceId:
          description: The identifier/ip of the device that is placing the order.
          type: string
        deviceName:
          description: The name of the device that is placing the order.
          type: string
        referralState:
          allOf:
            - $ref: "#/components/schemas/ConsumerOrdersPlacementReferralState"
          description: Order referral source
        removedIngredientsEnabled:
          description: A value indicating whether the basket contains removed ingredients.
          type: boolean
      required:
        - basketId
        - applicationId
        - applicationVersion
        - deviceId
        - deviceName
      type: object
      x-api-version-from: 1
      x-api-version-to: 1
    ConsumerOrdersPlacementRequestV2:
      additionalProperties: false
      description: An object representing the request to place an order for a given basket Id.
      example:
        basketId: basket_gh23i_PS4_
        customerNotes:
          NoteForDriver: Call me when you get here
          NoteForRestaurant: No mayonnaise
        referralState: ReferredByWeb
      properties:
        basketId:
          description: The basket Id.
          type: string
        customerNotes:
          additionalProperties:
            type: string
          description: Dictionary of the customer notes to add to the order. The keys of the dictionary are the notes capabilities that the restaurant has.
          nullable: true
          type: object
        referralState:
          allOf:
            - $ref: "#/components/schemas/ConsumerOrdersPlacementReferralState"
          description: Order referral source
      required:
        - basketId
      type: object
      x-api-version-from: 2
    ConsumerOrdersPlacementResponse:
      additionalProperties: false
      description: An order placement response.
      properties:
        friendlyOrderId:
          description: The friendly order Id.
          nullable: false
          type: string
        orderId:
          description: The id of the order.
          nullable: false
          type: string
      type: object
      x-api-version-from: 1
    ConsumerSegment:
      enum:
        - All
        - NewToRestaurant
      type: string
    ConsumerStatus:
      description: ""
      enum:
        - 0
        - 1
        - 2
      type: integer
      x-enumNames:
        - Undefined
        - NewConsumer
        - ReturnConsumer
    CourierFeedbackRequest:
      example:
        additionalComment: Went above and beyond
        isPositiveFeedback: true
        reasons:
          - had thermal bag
          - friendly
      properties:
        additionalComment:
          description: An additional free form comment accompanying the feedback
          maxLength: 210
          nullable: true
          type: string
        isPositiveFeedback:
          description: A flag to determine if the feedback is overall positive
          type: boolean
        reasons:
          description: A list of reasons describing the feedback
          items:
            type: string
          nullable: false
          type: array
      required:
        - isPositiveFeedback
      type: object
    CourierStatus:
      description: The courier application status. A courier could have one of these status associated with their application, here is a brief example of each status. <p>`ON-BOARDING` - Courier is actively trying to be on-boarded and will progress through the courier on-boarding program</p><p>`STALLED` - Courier has not proceeded with a step inside the courier on-boarding program for 14 days and will not to proceed further</p><p>`SURPLUS` - Zone has been closed for On-boarding; courier cannot proceed until zone on-boarding re-opens</p><p>`ACTIVE` - Courier has interacted with the app within the last two weeks and will be automatically scheduled based on their availability, receive notifications and may complete orders</p><p>`INACTIVE` - Courier has not interacted with the app for at least two weeks, and will not be scheduled for shifts. May interact with the app to convert their status to active, and be eligible for shifts and deliveries</p><p>`RELIABILITY_ISSUES` - No longer in use, historically account was suspended due to frequent flakes or rejected orders</p><p>`VEHICLE_ISSUES` - Account suspended due to reported vehicle problems, but may reactivate by contacting courier support</p><p>`INCIDENT_ISSUES` - Account suspended indefinitely due to significant concern (used exclusively by Incidents team)</p><p>`OTHER_ACCOUNT_ISSUES` - General account suspension, usually in connection with problems not categorised under regular courier status</p><p>`EXPIRED_DOCUMENTS` - General account suspension, typically for expired right to work documentation</p><p>`REJECTED` - Applicant did not meet minimum requirements for access to the network</p><p>`WITHDRAWN` - Applicant decided not to proceed with onboarding</p><p>`BANNED` - Courier’s access to the network was revoked following escalation</p><p>`LEFT_NETWORK` - Courier voluntarily left the network</p>
      enum:
        - ONBOARDING
        - STALLED
        - SURPLUS
        - ACTIVE
        - INACTIVE
        - RELIABILITY_ISSUES
        - VEHICLE_ISSUES
        - INCIDENT_ISSUES
        - OTHER_ACCOUNT_ISSUES
        - EXPIRED_DOCUMENTS
        - REJECTED
        - WITHDRAWN
        - BANNED
        - LEFT_NETWORK
      type: string
    CourierSync:
      description: The courier sync payload holds the updated values for deliveries, personal information, location and shifts associated with a particular courier.
      properties:
        cancelledOrderSummaries:
          description: List with a summary of all the cancelled orders associated with the courier.
          items:
            $ref: "#/components/schemas/OrderCancelled"
          maxItems: 1
          minItems: 1
          type: array
        checkedInState:
          $ref: "#/components/schemas/CheckedInState"
          description: The state of a courier on a shift. A courier might be checked in or not.
        doNotUseStatus:
          $ref: "#/components/schemas/DoNotUseStatus"
          description: The courier usability status.
        earlyCheckoutAvailable:
          description: The possibility of an early checkout of the shift is available when true.
          type: boolean
        firstName:
          description: First name of the courier in which the updated sync payload was requested for.
          example: John
          type: string
        flexStateForAssignedZones:
          description: List of flex state types for each delivery zone the courier is currently on a delivery process or have already delivered orders.
          items:
            $ref: "#/components/schemas/CourierZoneFlexState"
          maxItems: 2
          minItems: 2
          type: array
        isLiveFlexStatesAvailable:
          description: The live flex states are enabled when true.
          type: boolean
        jobs:
          description: The list of jobs assigned to the courier.
          items:
            $ref: "#/components/schemas/JobDetails"
          maxItems: 2
          minItems: 2
          type: array
        lastName:
          description: Last name of the courier in which the updated sync payload was requested for.
          example: Doe
          type: string
        localSaveSeconds:
          description: Static value with the amount of seconds the application is supposed to save a fresh courier location. The logic implemented expects the application to save a new location when the elapsed seconds is greater equal than local send seconds.
          example: 5
          format: integer
          type: number
        name:
          description: Name of the courier in which the updated sync payload was requested for.
          example: John Doe
          type: string
        orderAcceptanceTimes:
          $ref: "#/components/schemas/OrderAcceptanceTimes"
          description: The acceptance times used to present the offer to the courier.
        remainingJobs:
          description: Amount of remaining jobs assignable to the courier.
          example: 2
          format: integer
          type: number
        serverGateMeters:
          description: Static value with the distance in meters the application is supposed to send a fresh location to the server. The logic implemented expects the application to send a new location to the server when the distance to the previous location is greater equal than server gate meters.
          example: 0
          format: integer
          type: number
        serverSendSeconds:
          description: Static value with the amount of seconds the application is supposed to send a fresh location to the server. The logic implemented expects the application to send a new location to the server when the elapsed seconds is greater equal than server send seconds.
          example: 60
          format: integer
          type: number
        shift:
          $ref: "#/components/schemas/Shift"
          description: The shift details in which the courier is signed up for.
        status:
          $ref: "#/components/schemas/CourierStatus"
          description: The courier application status.
        timestamp:
          description: Current timestamp for the courier sync updated payload.
          example: 1593444834
          format: long
          type: number
        timezone:
          description: Time zone in which the courier shift was started.
          example: GMT-6
          type: string
        topUpPromotion:
          $ref: "#/components/schemas/TopUpPromotion"
          description: Calculated top up promotion settings for the courier.
        totalDeliveries:
          description: Number of deliveries completed by the courier.
          example: 11
          format: integer
          type: number
      type: object
    CourierZoneFlexState:
      description: The courier zone flex state object, contains the flex state type and the flex availability status for a given delivery zone.
      properties:
        deliveryZoneId:
          description: Delivery zone identifier for flex state.
          example: 53c3afb5-fcs5-4941-be6d-2179f812sc8d
          type: string
        deliveryZoneName:
          description: Delivery zone name for flex state.
          example: Winnipeg SW
          type: string
        flexAvailable:
          description: Flex states are enabled when true
          type: boolean
        flexStateType:
          $ref: "#/components/schemas/SyncFlexStateType"
          description: <p>The flex state type changes according to the exponential moving average and is used as a reference to bring more couriers to suffice the demand in a given delivery zone.</p> <p>If the flex state type is "Off", it means no shifts will be offered for the delivery zone.</p> <p>If the state is "CLOSED", only scheduled shifts will be allowed for the delivery zone.</p> <p>If the state is "SEEKING", the shift offers are going to be made across the courier network in order to suffice the current demand.</p> <p>If the state is "OPEN", it means demand is high and couriers from all over the courier network are allowed to create shifts for themselves to suffice the current demand.</p> <p>If the state is "CODE_RED", it means not only can everyone create shifts for themselves for the delivery zone but also couriers from other delivery zones might reallocate to help suffice the demand of that particular delivery zone.</p>
      type: object
    CreateAttemptedDeliveryQuery:
      example:
        ReasonCode: ProblemWithAddress
      properties:
        ReasonCode:
          description: The reason the attempted delivery event was created
          enum:
            - ProblemWithAddress
            - NoAnswer
          type: string
      type: object
    CreateCancellationQuery:
      additionalProperties: false
      properties:
        comments:
          description: Additional comments
          nullable: true
          type: string
        reasonCode:
          description: Reason for order cancellation
          enum:
            - rest_cancelled_customer_requested
            - rest_cancelled_customer_absent
            - rest_cancelled_out_of_stock
            - rest_cancelled_drivers_unavailable
            - rest_cancelled_fake_order
            - rest_cancelled_too_busy
            - rest_cancelled_other
          nullable: true
          type: string
      type: object
    CreateDeal:
      properties:
        Date:
          description: "`YYYY-MM-DDThh:mm:ssZ (UTC)`"
          type: string
        DealGroups:
          items:
            $ref: "#/components/schemas/CreateDealGroup"
          type: array
        ProductId:
          type: string
        Quantity:
          format: integer
          type: number
      type: object
    CreateDealGroup:
      properties:
        DealGroupId:
          type: string
        Products:
          items:
            $ref: "#/components/schemas/CreateProduct"
          type: array
      type: object
    CreateGeoLocation:
      properties:
        Latitude:
          format: decimal
          type: number
        Longitude:
          format: decimal
          type: number
      type: object
    CreateLocation:
      properties:
        GeoLocation:
          allOf:
            - $ref: "#/components/schemas/CreateGeoLocation"
          description: Not available across platform yet, but applied for future proofing.
          nullable: true
        ZipCode:
          type: string
      type: object
    CreateMenuItemRequest:
      example:
        Category:
          Id: "12"
          Name: Pizzas
        Description: A cheesy pizza, covered in cheese, with extra cheesy bits
        HasAllergens: false
        Labels:
          - Vegetarian
        Name: Cheese Pizza
        OptionGroups:
          - Id: "1"
            Modifiers:
              - AdditionPrice: 0.51
                Id: "123"
                Name: Garlic
                Variations:
                  - AdditionalPrice: 0.12
                    ModifierGroupId: "123"
                    Selected: true
                    VariationId: "1"
                    VariationName: Small
                  - AdditionalPrice: 0.23
                    ModifierGroupId: "123"
                    Selected: true
                    VariationId: "2"
                    VariationName: Large
            Name: Crusts
        PreferenceGroups:
          - Id: "1"
            Modifiers:
              - AdditionPrice: 0.51
                Id: "123"
                Name: More cheese
                Variations:
                  - AdditionalPrice: 0.12
                    ModifierGroupId: "123"
                    Selected: true
                    VariationId: "1"
                    VariationName: Small
                  - AdditionalPrice: 0.23
                    ModifierGroupId: "123"
                    Selected: true
                    VariationId: "2"
                    VariationName: Large
            Name: Toppings
        ReceiptNumber: 123a
        Variations:
          - Id: "1"
            Name: Small
            Price: 1
          - Id: "2"
            Name: Large
            Price: 2.5
      properties:
        Category:
          $ref: "#/components/schemas/CategoryRequest"
          description: Category of the Menu Item
        Description:
          description: Description of the Menu Item
          type: string
        HasAllergens:
          description: Whether the menu item has any allergens
          type: boolean
        Labels:
          description: Labels of the Menu Item
          items:
            type: string
          type: array
          uniqueItems: false
        Name:
          description: Name of the Menu Item
          type: string
        OptionGroups:
          description: A list of options groups of the Menu Item
          items:
            $ref: "#/components/schemas/UpdateModifierGroupRequest"
          maxLength: 100
          type: array
          uniqueItems: false
        PreferenceGroups:
          description: A list of preference groups of the Menu Item
          items:
            $ref: "#/components/schemas/UpdateModifierGroupRequest"
          maxLength: 100
          type: array
          uniqueItems: false
        ReceiptNumber:
          description: The Receipt number or kitchen number of the Menu Item
          type: string
        Variations:
          description: Any variations of the Menu Item
          items:
            $ref: "#/components/schemas/UpdateMenuItemVariationRequest"
          maxLength: 75
          type: array
          uniqueItems: false
      required:
        - Name
      type: object
    CreateMessageModel:
      description: Information needed to create a message for the Scoober ops team
      properties:
        city:
          deprecated: true
          description: City this order is located in.
          example: london
          nullable: true
          type: string
        countryCode:
          description: 2 letter ISO code for the country this ticket is about.
          example: gb
          nullable: true
          type: string
        description:
          description: Description, main body, of the message to send.
          example: Scoober Test
          type: string
        reason:
          description: Scoober contact reason for this ticket.
          example: front_line_reason_food_quality_cold_crushed_spilled
          type: string
        restaurantId:
          description: Restaurant Id of the order.
          example: "1234567"
          nullable: true
          type: string
        scooberJobId:
          description: Scoober job ID, if known.
          example: en
          nullable: true
          type: string
        status:
          description: Status of the Zendesk ticket.
          example: new
          type: string
        subject:
          description: Subject of the message to send.
          example: Scoober Test
          type: string
        ticketId:
          description: Zendesk ticket ID this message is about.
          example: 1234
          format: int64
          type: integer
      required:
        - description
        - reason
        - status
        - subject
        - ticketId
      type: object
    CreateModifier:
      properties:
        ModifierId:
          type: string
        Quantity:
          format: integer
          type: number
      type: object
    CreateModifierGroup:
      properties:
        ModifierGroupId:
          type: string
        Modifiers:
          items:
            $ref: "#/components/schemas/CreateModifier"
          type: array
      type: object
    CreateOffersRequest:
      description: The request object for creating of new offer group.
      example:
        daysOfWeek:
          - Monday
          - Friday
        endDate: 2019-09-03
        endTime: 13:00:00
        offerDescription: This is offer description
        offerTemplateId: 333
        qualifyingValue:
          currency: GBP
          value: 1000
        startDate: 2019-08-06
        startTime: 12:00:00
      properties:
        daysOfWeek:
          description: Days of week to run the offer
          items:
            enum:
              - Sunday
              - Monday
              - Tuesday
              - Wednesday
              - Thursday
              - Friday
              - Saturday
            type: string
          type: array
          uniqueItems: true
        endDate:
          description: The date when offer ends
          format: date
          nullable: true
          type: string
        endTime:
          description: Timestamp when offer ends during the day
          format: time
          nullable: true
          type: string
        freeProducts:
          description: The product that gets 100% discount applied
          items:
            properties:
              id:
                description: The unique identifier of the product.
                nullable: false
                type: string
              modifiers:
                description: The collection of preselected modifiers for the item.
                items:
                  properties:
                    modifierId:
                      description: The unique identifier of the modifier.
                      nullable: false
                      type: string
                    quantity:
                      description: The required quantity of the modifier.
                      format: int32
                      nullable: false
                      type: integer
                  type: object
                nullable: true
                type: array
            type: object
          nullable: true
          type: array
        offerDescription:
          description: The description of the offer.
          nullable: true
          type: string
        offerTemplateId:
          description: Internal id of offer template
          format: int32
          nullable: false
          type: integer
        qualifyingProductIds:
          description: One of those products needed to be included in the collection of products to make offer applicable
          items:
            type: string
          nullable: true
          type: array
        qualifyingValue:
          description: Minimum qualifying value for offer to be applied
          nullable: true
          properties:
            currency:
              description: Currency code in ISO 4217 format
              nullable: false
              type: string
            value:
              description: Smallest unit of local currency
              format: int32
              nullable: false
              type: integer
          type: object
        startDate:
          description: The date when offer starts
          format: date
          nullable: true
          type: string
        startTime:
          description: Timestamp when offer starts during the day
          format: time
          nullable: true
          type: string
      type: object
    CreateOrderDetails:
      properties:
        Location:
          $ref: "#/components/schemas/CreateLocation"
      type: object
    CreateProduct:
      properties:
        Date:
          description: "`YYYY-MM-DDThh:mm:ssZ (UTC)`"
          type: string
        ModifierGroups:
          items:
            $ref: "#/components/schemas/CreateModifierGroup"
          nullable: true
          type: array
        ProductId:
          type: string
        Quantity:
          format: integer
          type: number
        RemovedIngredients:
          items:
            $ref: "#/components/schemas/CreateRemovedIngredient"
          nullable: true
          type: array
      type: object
    CreateRemovedIngredient:
      properties:
        Details:
          type: string
      type: object
    CreateRequest:
      description: The request object for creating a basket.
      properties:
        Deals:
          description: All deals to added to new basket.
          items:
            allOf:
              - $ref: "#/components/schemas/CreateDeal"
            description: Individual deal to added to new basket.
          nullable: true
          type: array
        MenuGroupId:
          type: string
        OrderDetails:
          allOf:
            - $ref: "#/components/schemas/CreateOrderDetails"
          description: Information needed to allow an order to be placed on a basket.
        Products:
          description: All products to added to new basket.
          items:
            allOf:
              - $ref: "#/components/schemas/CreateProduct"
            description: Individual product to added to new basket.
          nullable: true
          type: array
        RestaurantSeoName:
          description: A unique per tenant identifier for a restaurant used for external operations.
          nullable: true
          type: string
      type: object
    CreateRestaurantCompensationQuery:
      example:
        Comments: Driver had just left the restaurant
        ReasonCode: OnItsWay
      properties:
        Comments:
          description: Any other comments to add to the request
          type: string
        ReasonCode:
          description: The reason why compensation is due
          enum:
            - NotSet
            - BeingPrepared
            - OnItsWay
            - Delivered
            - Unknown
          type: string
      type: object
    CreateSupportTicketRequest:
      description: Request containing support ticket information
      example:
        message: Change weekly budget
        subject: Top Placement - Interest
        type: top_placement__interest
      properties:
        message:
          description: The message with the support details
          type: string
        subject:
          description: Subject of the ticket
          type: string
        type:
          description: Type the ticket belongs to
          type: string
      type: object
    CreateTicketModel:
      description: Information needed to create a ticket on the Just Eat Zendesk instance for a Scoober delivery support incident
      properties:
        city:
          description: City of the delivery in question of this ticket.
          example: london
          nullable: true
          type: string
        country:
          description: 2 letter ISO code of the country this pertains to. Will be inferred from queried API.
          example: gb
          nullable: true
          type: string
        courier:
          description: Courier who created this query.
          example: scoober
          nullable: true
          type: string
        description:
          description: Description (main body) of the ticket.
          example: Scoober Test
          type: string
        externalId:
          description: We will note this as incident/ticket/query ID used by the calling party and include it for their future reference.
          example: slack:1
          type: string
        language:
          description: 2 letter ISO code of the language for the ticket. Will be inferred from queried API.
          example: en
          nullable: true
          type: string
        reason:
          description: Scoober reason code for the creation of this ticket.
          example: delivery__spilled_food
          type: string
        requesterEmail:
          description: Ticket requester e-mail address.
          example: requester@scoober.com
          nullable: true
          type: string
        requesterName:
          description: Ticket requester name.
          example: scoober
          nullable: true
          type: string
        responseUrl:
          description: Where should we respond to with progress on this request?
          example: https://zenbox-api.bob.external.tkwy-staging.io/ticket/response
          type: string
        scooberJobId:
          description: Scoober job ID for this order.
          example: "1234"
          nullable: true
          type: string
        senderType:
          description: Scoober transmits a sender type value.
          example:
            - internal
          items:
            type: string
          nullable: true
          type: array
        status:
          description: "Ticket status to set on creation of this ticket. Possible values: New, pending, solved."
          example: new
          nullable: true
          type: string
        subject:
          description: Subject of the ticket.
          example: Scoober Test
          type: string
      required:
        - description
        - externalId
        - reason
        - responseUrl
        - subject
      type: object
    CurrentUserResponse:
      example:
        accountType: Registered
        email: example@just-eat.com
        firstName: Bob
        globalUserId: 8It2lEaJjG82nJtxO00Iab0CoF0=
        lastName: Smith
      properties:
        accountType:
          description: The account type of the consumer.
          enum:
            - Registered
            - Guest
          type: string
        email:
          description: The consumer's email address.
          format: email
          nullable: true
          type: string
        firstName:
          description: The consumer's first name.
          nullable: true
          type: string
        globalUserId:
          description: Global identifier for consumer and tenant.
          nullable: true
          type: string
        lastName:
          description: The consumer's last name.
          nullable: true
          type: string
      type: object
    CustomerOrderDetailsErrorResponse:
      description: The error object returned when an operation fails
      example:
        ErrorType: OrderTimeNotFound
        Exceptions: []
        Message: Order Time not found for Basket example-basket-id
      properties:
        ErrorType:
          $ref: "#/components/schemas/CustomerOrderDetailsErrorType"
          description: Value of the error thrown
        Exceptions:
          description: List of exceptions thrown during the request
          items:
            type: string
          type: array
        Message:
          description: Detailed message on the error thrown
          type: string
      type: object
    CustomerOrderDetailsErrorType:
      enum:
        - None
        - Unknown
        - OrderTimeNotFound
        - OrderAddressNotFound
        - BasketNotFound
        - AvailabilityNotFound
        - Unauthorized
        - UpdateOrderAddressError
        - UpdateOrderTimeError
        - DependencyError
        - InvalidZipcode
        - InvalidMenuId
      type: string
    CustomisationResponse:
      description: Information about initial options to show to user
      example:
        config:
          liveChatEnabled: true
          personalisedHelpEnabled: true
        dataLayer:
          helpData_features: o:cancel_order|o:bad_item|o:call_restaurant|t:open_chatbot|t:email_justeat|t:call_justeat
          helpData_helpSessionId: helpsessionid
          helpData_isPilot: 32
          trData_menuType: collection
          trData_trId: null
          transactionData_dateDiff: -1800
          transactionData_nTotalItems: 0
          transactionData_newTransactionId: orderid
          transactionData_orderDelay: null
          transactionData_orderStatus: Accepted
        experimentEvents:
          - id: EX-1742
            name: bandit_exp_new_carousels_2
            parentId: "1234567890"
            platform: optimizely_fullstack
            variantName: variant_d
            version: "1"
        helpSessionId: helpsessionid
        personalisation:
          callRestaurantAction:
            action: "01234567890"
            buttonEvent:
              action: click_call_restaurant
              category: engagement
              label: call restaurant
              value: 0
            buttonType: Primary
            data: {}
            department: LiveChat
            id: CallRestaurant
            notes: note
            postText: []
            preText: []
            title: Call the restaurant
            type: Call
          orderActions:
            - action: /applications/consumerhelp/flows/cancellation/uk/orderid/start
              buttonEvent:
                action: click_cancel_order
                category: engagement
                label: helpflow
                value: 0
              buttonType: Secondary
              data: {}
              department: LiveChat
              id: Cancel
              notes: note
              postText: []
              preText: []
              title: I want to cancel my order
              type: ChapiGet
            - action: /applications/consumerhelp/flows/baditems/uk/orderid/start
              buttonEvent:
                action: click_bad_item
                category: engagement
                label: helpflow
                value: 0
              buttonType: Secondary
              data: {}
              department: LiveChat
              id: BadItem
              notes: note
              postText: []
              preText: []
              title: I'm unhappy with my order
              type: ChapiGet
        topLevelActions:
          - action: null
            buttonEvent:
              action: click_open_chatbot
              category: engagement
              label: open chatbot
              value: 0
            buttonType: Primary
            data: {}
            department: LiveChat
            id: StartChatBot
            notes: note
            postText: []
            preText: []
            title: Chat to us
            type: Chatbot
          - action: info@just-eat.co.uk
            buttonEvent:
              action: click_email_justeat
              category: engagement
              label: email justeat
              value: 0
            buttonType: Secondary
            data: {}
            department: LiveChat
            id: EmailJustEat
            notes: note
            postText: []
            preText: []
            title: Email our happy helpers
            type: Email
          - action: 0344 243 7777
            buttonEvent:
              action: click_call_justeat
              category: engagement
              label: call justeat
              value: 0
            buttonType: Secondary
            data: {}
            department: LiveChat
            id: PhoneJustEat
            notes: note
            postText: []
            preText: []
            title: Phone a human
            type: Call
      properties:
        config:
          properties:
            liveChatEnabled:
              description: Should we enable Live Chat
              type: boolean
            personalisedHelpEnabled:
              description: Should we show Personalised Help
              type: boolean
          type: object
        experimentEvents:
          description: list of experiments running for this client
          items:
            $ref: "#/components/schemas/ExperimentEvent"
          type: array
        helpSessionId:
          description: Unique id for this help session
          type: string
        personalisation:
          properties:
            callRestaurantAction:
              $ref: "#/components/schemas/HelpAction"
            dataLayer:
              additionalProperties: true
              description: Key/values to be passed to analytics
              type: object
            orderActions:
              description: Actions pertaining to the order
              items:
                $ref: "#/components/schemas/HelpAction"
              type: array
            topLevelActions:
              description: Top-level actions not necessarily pertaining to the order
              items:
                $ref: "#/components/schemas/HelpAction"
              type: array
          type: object
      type: object
    CustomisationResponseWeb:
      description: Information about initial options to show to user
      example:
        config:
          liveChatEnabled: true
          personalisedHelpEnabled: true
        dataLayer:
          helpData_features: o:cancel_order|o:bad_item|o:call_restaurant|t:open_chatbot|t:email_justeat|t:call_justeat
          helpData_helpSessionId: helpsessionid
          helpData_isPilot: 32
          trData_menuType: collection
          trData_trId: null
          transactionData_dateDiff: -1800
          transactionData_nTotalItems: 0
          transactionData_newTransactionId: orderid
          transactionData_orderDelay: null
          transactionData_orderStatus: Accepted
        helpSessionId: helpsessionid
        order:
          friendlyReference: "1234567890"
          id: alphanumericid
          status:
            dateText: 11:48
            isActive: true
            isFinishedWithNegativeOutcome: false
            isFinishedWithPositiveOutcome: false
            isForDelivery: true
            preAcceptance: false
            preamble: Delivering around
            statusText: The restaurant has confirmed the delivery time. The countdown to your first bite has begun...
            value: Accepted
        personalisation:
          callRestaurantAction:
            action: "01234567890"
            buttonEvent:
              action: click_call_restaurant
              category: engagement
              label: call restaurant
              value: 0
            buttonType: Primary
            data: {}
            department: LiveChat
            id: CallRestaurant
            notes: note
            postText: []
            preText: []
            title: Call the restaurant
            type: Call
          orderActions:
            - action: /applications/consumerhelp/flows/cancellation/uk/orderid/start
              buttonEvent:
                action: click_cancel_order
                category: engagement
                label: helpflow
                value: 0
              buttonType: Secondary
              data: {}
              department: LiveChat
              id: Cancel
              notes: note
              postText: []
              preText: []
              title: I want to cancel my order
              type: ChapiGet
            - action: /applications/consumerhelp/flows/baditems/uk/orderid/start
              buttonEvent:
                action: click_bad_item
                category: engagement
                label: helpflow
                value: 0
              buttonType: Secondary
              data: {}
              department: LiveChat
              id: BadItem
              notes: note
              postText: []
              preText: []
              title: I'm unhappy with my order
              type: ChapiGet
        restaurant:
          name: Bob's kebabs
          telephone: +44 1234 123123
          thumbnail: https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTRnTQ8sfP8yxicqMBoAymdKzrpjhtwSeCIXdpqhZ7Hrj8FLBfB
        topLevelActions:
          - action: null
            buttonEvent:
              action: click_open_chatbot
              category: engagement
              label: null
              value: null
            buttonType: Primary
            data: null
            department: LiveChat
            id: StartChatBot
            notes: note
            postText: []
            preText: []
            title: Chat to us
            type: Chatbot
          - action: info@just-eat.co.uk
            buttonEvent:
              action: click_email_justeat
              category: engagement
              label: null
              value: null
            buttonType: Secondary
            data: null
            department: LiveChat
            id: EmailJustEat
            notes: note
            postText: []
            preText: []
            title: Email our happy helpers
            type: Email
          - action: 0344 243 7777
            buttonEvent:
              action: click_call_justeat
              category: engagement
              label: null
              value: null
            buttonType: Secondary
            data: null
            department: LiveChat
            id: PhoneJustEat
            notes: note
            postText: []
            preText: []
            title: Phone a human
            type: Call
        user:
          isLoggedIn: true
          name: John
      properties:
        config:
          description: General config / feature toggles
          properties:
            liveChatEnabled:
              description: Should we enable Live Chat
              type: boolean
            personalisedHelpEnabled:
              description: Should we show Personalised Help
              type: boolean
          type: object
        helpSessionId:
          description: Unique id for this help session
          type: string
        order:
          description: The customer's most recent or specified order
          properties:
            friendlyReference:
              description: Friendly order id.  Usually numeric
              type: string
            id:
              description: Alphanumeric order id
              type: string
            status:
              description: Information related to the status of the order
              properties:
                dateText:
                  description: The date / time to display to the customer
                  type: string
                isActive:
                  description: Is this an active order?
                  type: boolean
                isFinishedWithNegativeOutcome:
                  description: Is this order in a final, unhappy (e.g. Cancelled) state?
                  type: boolean
                isFinishedWithPositiveOutcome:
                  description: Is this order in a final, happy, state?
                  type: boolean
                isForDelivery:
                  description: Is this a delivery order (as opposed to collection)?
                  type: boolean
                preAcceptance:
                  description: Is this order still awaiting acceptance from a restaurant?
                  type: boolean
                preamble:
                  description: Friendly 'preamble' text to display to the customer
                  type: string
                statusText:
                  description: Friendly text to display to the customer
                  type: string
                value:
                  description: The consumer status of the order
                  type: string
              type: object
          type: object
        personalisation:
          description: The actions that are relevant to this customer / order
          properties:
            callRestaurantAction:
              $ref: "#/components/schemas/HelpAction"
              description: Action to call the restaurant, if possible at this time
            dataLayer:
              additionalProperties: true
              description: Key/values to be passed to analytics
              type: object
            orderActions:
              description: Actions pertaining to the order
              items:
                $ref: "#/components/schemas/HelpAction"
              type: array
            topLevelActions:
              description: Top-level actions not necessarily pertaining to the order
              items:
                $ref: "#/components/schemas/HelpAction"
              type: array
          type: object
        restaurant:
          description: The restaurant of the most recent or specified order
          properties:
            name:
              description: Name of the restaurant
              type: string
            telephone:
              description: Restaurant's telephone number
              type: string
            thumbnail:
              description: URI for the restaurant's thumbnail image
              type: string
          type: object
        user:
          description: The current user
          properties:
            isLoggedIn:
              description: Is the user currently logged in?
              type: boolean
            name:
              description: The user's name
              type: string
          type: object
      type: object
    DayOfWeek:
      description: ""
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
      type: integer
      x-enumNames:
        - Sunday
        - Monday
        - Tuesday
        - Wednesday
        - Thursday
        - Friday
        - Saturday
    Deal:
      properties:
        BasketProductIds:
          items:
            type: string
          type: array
        CategoryId:
          type: string
        DealGroups:
          items:
            $ref: "#/components/schemas/DealGroup"
          type: array
        Name:
          type: string
        ProductId:
          type: string
        Quantity:
          format: integer
          type: number
        TotalPrice:
          format: decimal
          type: number
        Variation:
          nullable: true
          type: string
      type: object
    DealGroup:
      properties:
        DealGroupId:
          type: string
        Products:
          items:
            $ref: "#/components/schemas/DealProduct"
          type: array
      type: object
    DealItemVariation:
      example:
        additionPrice: 50
        dealItemVariationId: "8548153"
        maxChoices: 1
        minChoices: 0
      properties:
        additionPrice:
          description: Selecting this modifier will increase the base price of the variation by this amount in the minor unit of the currency.
          format: int32
          type: number
        dealItemVariationId:
          description: A referenced variation id that can be a part of a deal group.
          type: string
        maxChoices:
          description: The maximum number of times this deal item variation can be chosen within a given deal group.
          format: int32
          type: integer
        minChoices:
          description: The minimum number of times this deal item variation can be chosen within a given deal group.
          format: int32
          type: integer
      type: object
    DealProduct:
      properties:
        ModifierGroups:
          items:
            $ref: "#/components/schemas/ModifierGroup"
          nullable: true
          type: array
        Name:
          type: string
        ProductId:
          type: string
        Quantity:
          format: integer
          type: number
        RemovedIngredients:
          items:
            $ref: "#/components/schemas/RemovedIngredient"
          nullable: true
          type: array
        TotalPrice:
          format: decimal
          type: number
        Variation:
          nullable: true
          type: string
      type: object
    DeliveryDriverInfo:
      additionalProperties: false
      properties:
        arrivalTimeAtRestaurant:
          description: The ISO-8601 datetime arrival time of the driver
          format: date-time
          nullable: true
          type: string
        deliveryState:
          description: Current state of the delivery
          enum:
            - Accepted
            - TransmissionFailed
          nullable: true
          type: string
        driverContactNumber:
          description: The driver's contact telephone number
          nullable: true
          type: string
        driverName:
          description: The driver's first name
          nullable: true
          type: string
        dynamicArrivalEstimate:
          description: The ISO-8601 datetime dynamic estimated arrival of the driver
          format: date-time
          nullable: true
          type: string
        estimatedArrivalTime:
          description: The ISO-8601 datetime estimated arrival of the driver
          format: date-time
          nullable: true
          type: string
      type: object
    DeliveryFee:
      properties:
        deliveryCharge:
          description: base delivery charge for a given zone
          properties:
            currency:
              description: Currency code in ISO 4217 format
              type: string
            value:
              description: Smallest unit of local currency
              format: int32
              type: integer
          type: object
        freeDelivery:
          description: Free delivery over order price
          properties:
            currency:
              description: Currency code in ISO 4217 format
              type: string
            value:
              description: Smallest unit of local currency
              format: int32
              type: integer
          type: object
        minimumOrder:
          description: Minimum order value
          properties:
            currency:
              description: Currency code in ISO 4217 format
              type: string
            value:
              description: Smallest unit of local currency
              format: int32
              type: integer
          type: object
        smallOrderCharge:
          description: delivery charge for orders that has order value less then `minimumOrder`
          properties:
            currency:
              description: Currency code in ISO 4217 format
              type: string
            value:
              description: Smallest unit of local currency
              format: int32
              type: integer
          type: object
        zoneId:
          description: Id of assigned zone
          type: string
        zoneName:
          description: Name of assigned zone
          type: string
      type: object
    DeliveryZone:
      example:
        deliveryMinutes: 5
        unboundedZone:
          items:
            - coordinates: null
              items:
                - latitude: 57.159200668
                  longitude: -2.08593559299993
                - latitude: 57.459200668
                  longitude: -2.18593559299993
                - latitude: 57.159200668
                  longitude: -2.28593559299993
                - latitude: 57.159200668
                  longitude: -2.08593559299993
        zoneId: "1"
      properties:
        deliveryMinutes:
          description: geographical zone generated by SKIP, based on delivery minutes.
          format: int32
          type: integer
        unboundedZone:
          description: json representation of delivery zone
          properties:
            coordinates:
              description: geographical polygon https://tools.ietf.org/html/rfc7946#section-3.1.4. It might consist from multiple linear rings
              items:
                properties:
                  coordinates:
                    description: geographical coordinates of linear ring
                    items:
                      properties:
                        latitude:
                          description: geographical point latitude
                          format: decimal
                          type: number
                        longitude:
                          description: geographical point longitude
                          format: decimal
                          type: number
                      type: object
                    type: array
                type: object
              type: array
          type: object
        zoneId:
          description: id of the zone
          type: string
      type: object
    Discount:
      additionalProperties: false
      properties:
        Amount:
          description: The amount of discount
          format: decimal
          type: number
        VoucherType:
          $ref: "#/components/schemas/VoucherType"
          description: The type of discount
      type: object
    DiscoveryResponse:
      example:
        searchResults:
          - availabilities:
              - canPreOrder: false
                isOpen: true
                nextAvailability:
                  AvailableFrom: 2020-01-01T07:20:00Z
                serviceType: Delivery
            cuisines:
              - name: Pizza
                seoName: pizza
              - name: fish-and-chips
                seoName: Fish & Chips
              - name: Halal
                seoName: halal
            name: Example Restaurant
            restaurantId: "12345"
      properties:
        searchResults:
          description: Restaurants serving the requested area
          items:
            $ref: "#/components/schemas/DiscoveryResponseItem"
          type: array
      type: object
    DiscoveryResponseAvailabilities:
      properties:
        canPreOrder:
          description: If the restaurant is in a pre order state
          type: boolean
        isOpen:
          description: If the restaurant is in an open state. This also assumes it is accepting orders
          type: boolean
        nextAvailability:
          $ref: "#/components/schemas/DiscoveryResponseAvailability"
          description: When the restaurant is next available
        serviceType:
          description: The type of service the restaurant availability is
          enum:
            - Unknown
            - Delivery
            - Collection
          type: string
      type: object
    DiscoveryResponseAvailability:
      properties:
        availableFrom:
          description: Date and time the restaurant is available from. Format - 'yyyy-dd-MMTHH:mm:ssZ'
          format: date-time
          type: string
      type: object
    DiscoveryResponseCuisine:
      properties:
        name:
          description: Display name of the cuisine
          type: string
        seoName:
          description: Sanitized name of the cuisine, compatible with URLs
          type: string
      type: object
    DiscoveryResponseItem:
      example:
        availabilities:
          - canPreOrder: false
            isOpen: true
            nextAvailability:
              AvailableFrom: 2020-01-01T07:20:00Z
            serviceType: Delivery
        cuisines:
          - name: Pizza
            seoName: pizza
          - name: fish-and-chips
            seoName: Fish & Chips
          - name: Halal
            seoName: halal
        name: Example Restaurant
        restaurantId: "12345"
      properties:
        availabilities:
          description: Availabilities of the restaurant
          items:
            $ref: "#/components/schemas/DiscoveryResponseAvailabilities"
          type: array
        cuisines:
          description: Cuisines of the restaurant
          items:
            $ref: "#/components/schemas/DiscoveryResponseCuisine"
          type: array
        name:
          description: Display name of the restaurant
          type: string
        restaurantId:
          description: Id of the restaurant
          type: string
      type: object
    DoNotUseStatus:
      description: The usability status of a courier
      enum:
        - IN_USE
        - NOT_IN_USE
        - UNRESPONSIVE
        - PAUSE_ORDERS
        - CANCELLATION
      type: string
    DueTimeChange:
      additionalProperties: false
      properties:
        newTimeDue:
          description: New DateTime of the order due in ISO 8601 format
          format: date-time
          type: string
      type: object
    EposState:
      description: Current state of sending Order to EPOS system
      enum:
        - None
        - Failed
        - FailedAcknowledged
        - FailedDismissed
      type: string
    ExperimentContext:
      example:
        Client: Web
        ClientVersion: 2.0.0.1390
        Culture: en-GB
        IsBetaClient: false
        UserAgent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
        UserBucket: 047850da-ccb3-491f-b5a5-43f186e4344b
      properties:
        Client:
          description: Type of client making the request.
          enum:
            - Web
            - Android
            - iOS
            - Mobile
            - All
            - Test
          type: string
        ClientVersion:
          description: The version of the experiment client.
          type: string
        Culture:
          description: Culture of the request.
          type: string
        IsBetaClient:
          description: Client is a beta instance.
          type: boolean
        UserAgent:
          description: Browser user agent.
          type: string
        UserBucket:
          description: Representation of how the user has been partitioned into experiments.
          format: uuid
          type: string
      type: object
    ExperimentErrorResponse:
      description: The error object returned when an operation fails
      properties:
        Message:
          type: string
      type: object
    ExperimentEvent:
      description: Represents a possible experiment event on personalised help attached to customisation or to a Help Action. This will be sent from the client as an ExperimentV2 Google Analytics event
      properties:
        id:
          description: Unique but meaningful id for the experiment
          type: string
        name:
          description: A name that describes the experiment
          type: string
        parentId:
          description: The parent experiment id of the current experiment
          type: string
        platform:
          description: The platform where the experiment comes from
          type: string
        variantName:
          description: The name of the variant the user is bucketed into
          type: string
        version:
          description: The version of the running experiment
          type: string
      type: object
    ExperimentResultResponse:
      example:
        AssociatedTicket: EX-1234
        Name: webexperiment
        ParentTicket: EX-123
        Partition: variant1
        Version: 2
      properties:
        AssociatedTicket:
          description: Associated jira experiment ticket.
          type: string
        Name:
          description: The experiment name.
          type: string
        ParentTicket:
          description: Parent jira experiment ticket.
          type: string
        Partition:
          description: Experiment partition.
          type: string
        Version:
          description: Version number of the experiment.
          format: int32
          type: integer
      type: object
    ExperimentResultsResponse:
      example:
        iosexperiment:
          AssociatedTicket: EX-8888
          Name: iosexperiment
          ParentTicket: EX-777
          Partition: variant5
          Version: 3
        webexperiment:
          AssociatedTicket: EX-1234
          Name: webexperiment
          ParentTicket: EX-123
          Partition: variant1
          Version: 2
      properties:
        Active:
          additionalProperties:
            $ref: "#/components/schemas/ExperimentResultResponse"
          description: The active (enabled) experiments.
          readOnly: true
          type: object
      type: object
    ExperimentValue:
      description: Defines data related to an experiment.
      properties:
        name:
          description: The name of the experiment.
          type: string
        variant:
          description: "The value that the user has been bucketed into, also known as the variant. For\r

            example in an A/B test, this would be \"A\" or \"B\"."
          type: string
      required:
        - name
        - variant
      type: object
    ExternalSearchResponse:
      properties:
        Restaurants:
          items:
            properties:
              Address:
                properties:
                  City:
                    type: string
                  FirstLine:
                    type: string
                  Latitude:
                    type: number
                  Longitude:
                    type: number
                  Postcode:
                    type: string
                type: object
              DeliveryEtaMinutes:
                properties:
                  Approximate:
                    type: number
                  RangeLower:
                    type: number
                  RangeUpper:
                    type: number
                type: object
              DriveDistance:
                type: number
              DriveInfoCalculated:
                type: boolean
              Id:
                type: number
              IsOpenNow:
                type: boolean
              IsOpenNowForDelivery:
                type: boolean
              Name:
                type: string
              UniqueName:
                type: string
              Url:
                type: string
            type: object
          type: array
      type: object
    Fee:
      description: The object which encapsulates a Fee
      example:
        description: A charge for bags in delivery
        serviceTypes:
          collection:
            amount: 5
          default:
            amount: 0
          delivery:
            amount: 10
      properties:
        description:
          description: A description of what the Fee is
          type: string
        serviceTypes:
          description: Contains Service type specific fee values. If set, default can be used to apply a fee to as yet unspecified service types
          properties:
            collection:
              $ref: "#/components/schemas/ServiceTypeFeeConfiguration"
              description: Configuration of the fee for the collection service type
            default:
              $ref: "#/components/schemas/ServiceTypeFeeConfiguration"
              description: Configuration of the fee for any service type which is not explicitly configured
            delivery:
              $ref: "#/components/schemas/ServiceTypeFeeConfiguration"
              description: Configuration of the fee for the delivery service type
          type: object
      type: object
    Fees:
      description: The calculated courier payment components.
      properties:
        bonuses:
          description: List of bonuses that may be granted to the courier under specific situations.
          items:
            $ref: "#/components/schemas/BonusSummary"
          maxItems: 1
          minItems: 1
          type: array
        deliveryFee:
          description: Delivery fee paid by the customer
          example: 500
          format: integer
          type: number
        driveScoreSubsidy:
          description: Drive score subsidy paid to courier
          example: 200
          format: integer
          type: number
        jobPay:
          description: Job pay is the sum of the pay components subsidy, drive score subsidy and delivery fee.
          example: 100
          format: integer
          type: number
        reimbursements:
          description: Reimbursements paid to courier. This might occur in the event of an order cancellation, order other refundable reasons.
          example: 100
          format: integer
          type: number
        subsidy:
          description: Skip subsidy paid to courier
          example: 90
          format: integer
          type: number
        tip:
          description: Tip the courier might get from customers when an order is placed
          example: 180
          format: integer
          type: number
      type: object
    FlexStateType:
      enum:
        - CODE_RED
        - OPEN
        - SEEKING
      type: string
    FlowResponse:
      example:
        modals: {}
        stepResponse:
          closeButton:
            action: /uk/flows/close
            buttonEvent:
              action: form_cancel_order
              category: engagement
              label: close
              value: 0
            buttonType: CloseButton
            data: {}
            department: LiveChat
            event:
              dataLayer:
                screenName: /cancel-order/self-cancel-charged
                transactionData_dateDiff: -3600
                transactionData_delay: -1800
            id: EndFlow
            notes: note
            postText: []
            preText: []
            title: Close
            type: EndFlow
          data:
            actions:
              - action: /uk/flows/cancellation/1234/confirm?reasonCode=cust_cancelled_changed_mind&flowId=XXX
                buttonEvent:
                  action: form_cancel_order
                  category: engagement
                  label: confirm_charged
                  value: 550
                buttonType: Primary
                data: null
                department: LiveChat
                id: ConfirmCancel
                notes: null
                postText: []
                preText: []
                title: Cancel order - pay £5.50
                type: ChapiPost
              - action: null
                buttonEvent:
                  action: form_cancel_order
                  category: engagement
                  label: close
                  value: 0
                buttonType: Secondary
                data: {}
                department: LiveChat
                id: EndFlow
                notes: null
                postText: []
                preText: []
                title: Keep my order
                type: EndFlow
            body:
              - You will need to pay for 50% of your order. This charge will come to £5.50.
              - We are unable to offer a full refund because the restaurant has already started preparing your food.
            header: Are you sure you want to cancel this order?
            iconType: null
            title: Cancel order
          type: TextAndActions
      properties:
        modals:
          additionalProperties:
            $ref: "#/components/schemas/FlowStep"
          description: Dictionary of strings to `FlowStepResponses`
          type: object
        stepResponse:
          properties:
            data:
              $ref: "#/components/schemas/FlowStep"
            type:
              enum:
                - TextAndActions
                - ItemSelection
                - BadItemIssueSelection
                - RequestCsat
                - LateOrderUpdateReceived
              type: string
          type: object
      type: object
    FlowStep:
      description: The possible steps that can be returned as part of flows
      oneOf:
        - $ref: "#/components/schemas/TextAndActionsStep"
        - $ref: "#/components/schemas/ItemSelectionStep"
        - $ref: "#/components/schemas/BadItemIssueSelectionStep"
        - $ref: "#/components/schemas/RequestCsatStep"
        - $ref: "#/components/schemas/LateOrderUpdateReceivedStep"
    FlowStepBase:
      description: Abstract base schema for flow steps.
      properties:
        closeButton:
          $ref: "#/components/schemas/HelpAction"
        experimentEvents:
          description: list of experiments running for this client
          items:
            $ref: "#/components/schemas/ExperimentEvent"
          type: array
        screenEvent:
          properties:
            dataLayer:
              additionalProperties: true
              properties:
                screenName:
                  type: string
              type: object
          type: object
        title:
          type: string
      type: object
    GeneratePresignedFIleUploadUrlRequest:
      description: Request that contains information about file that will be uploaded to an AWS S3 bucket
      example:
        fileName: menu.pdf
        fileSizeInBytes: 4574745
      properties:
        fileName:
          description: The name of file that will be uploaded to the AWS S3 bucket
          type: string
        fileSizeInBytes:
          description: The size of file that will be uploaded to the AWS S3 bucket, in bytes
          format: int32
          type: number
      type: object
    GeneratePresignedFIleUploadUrlResponse:
      description: Response that provides all needed metadata to build signed request to upload file to AWS S3 bucket from a client application
      example:
        fields:
          Content-Type: application/pdf
          Policy: ...redacted...
          X-Amz-Algorithm: AWS4-HMAC-SHA256
          X-Amz-Credential: ...redacted...
          X-Amz-Date: 20200423T120247Z
          X-Amz-Security-Token: ...redacted...
          X-Amz-Signature: ...redacted...
          bucket: qa28-presigned-post-data
          key: 3c816agk9cpvahl_menu.pdf
        url: https://s3.eu-west-1.amazonaws.com/qa28-presigned-post-data
      properties:
        fields:
          description: Request metadata to make upload to S3 bucket
          properties:
            Content-Type:
              description: Content-Type of uploaded file
              type: string
            Policy:
              description: The Base64 encoded security policy that describes what is permitted in the request
              type: string
            X-Amz-Algorithm:
              description: The signing algorithm that you used to calculate the signature.
              type: string
            X-Amz-Credential:
              description: a string of the following form `<aws-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request`
              type: string
            X-Amz-Date:
              description: The date value specified in the ISO8601 formatted string.
              type: string
            X-Amz-Security-Token:
              description: AWS account token
              type: string
            X-Amz-Signature:
              description: The HMACSHA256 hash of the security policy
              type: string
            bucket:
              description: Name of the bucket in which file will be uploaded
              type: string
            key:
              description: File name that will be obtained after uploading
              type: string
          type: object
        url:
          description: The URL of the bucket in which file will be uploaded
          type: string
      type: object
    GeoLocation:
      additionalProperties: false
      properties:
        accuracy:
          description: How accurate the location is
          format: double
          type: number
        heading:
          description: The direction of travel
          format: double
          type: number
        latitude:
          description: The latitude component of the location
          format: double
          nullable: true
          type: number
        longitude:
          description: The longitude component of the location
          format: double
          nullable: true
          type: number
        speed:
          description: The speed of travel
          format: double
          type: number
      type: object
    Geometry:
      description: Geometry information for consumers location
      example:
        coordinates:
          - -0.10358
          - 51.51469
        type: Point
      properties:
        coordinates:
          description: first element of the array represents longitude, second latitude
          items:
            format: double
            type: number
          maxItems: 2
          minItems: 2
          type: array
        type:
          description: type of primitive
          type: string
      type: object
    GetAvailableFulfilmentTimesResponse:
      properties:
        asapAvailable:
          description: If the option to fulfil an order as soon as possible is available.
          nullable: false
          type: boolean
        times:
          description: Collection of time bands for when an order can be fulfilled.
          items:
            description: A time band for when an order can be fulfilled.
            nullable: false
            properties:
              from:
                description: Start time represented in ISO 8601 UTC (Zulu Time).
                format: date-time
                nullable: false
                type: string
              to:
                description: |
                  End time represented in ISO 8601 UTC (Zulu Time).

                  This time can be equal to the from time.
                format: date-time
                nullable: false
                type: string
            required:
              - from
              - to
            type: object
          maxItems: 576
          minItems: 0
          nullable: false
          type: array
      required:
        - times
        - asapAvailable
      type: object
    GetDeliveryFeesResponse:
      example:
        deliveryFees:
          - deliveryCharge:
              currency: GBP
              value: 100
            freeDelivery:
              currency: GBP
              value: 1000
            minimumOrder:
              currency: GBP
              value: 500
            smallOrderCharge:
              currency: GBP
              value: 200
            zoneId: "1"
            zoneName: Zone 1
          - deliveryCharge:
              currency: GBP
              value: 200
            freeDelivery:
              currency: GBP
              value: 2000
            minimumOrder:
              currency: GBP
              value: 500
            smallOrderCharge:
              currency: GBP
              value: 300
            zoneId: "2"
            zoneName: Zone 2
      properties:
        deliveryFees:
          description: restaurant delivery fees
          items:
            $ref: "#/components/schemas/DeliveryFee"
          nullable: false
          type: array
      type: object
    GetDeliveryZonesResponse:
      example:
        deliveryZones:
          - deliveryMinutes: 5
            unboundedZone:
              items:
                - coordinates: null
                  items:
                    - latitude: 57.159200668
                      longitude: -2.08593559299993
                    - latitude: 57.459200668
                      longitude: -2.18593559299993
                    - latitude: 57.159200668
                      longitude: -2.28593559299993
                    - latitude: 57.159200668
                      longitude: -2.08593559299993
            zoneId: "1"
          - deliveryMinutes: 7
            unboundedZone:
              items:
                - coordinates: null
                  items:
                    - latitude: 57.159200668
                      longitude: -2.08593559299993
                    - latitude: 57.459200668
                      longitude: -2.18593559299993
                    - latitude: 57.159200668
                      longitude: -2.28593559299993
                    - latitude: 57.159200668
                      longitude: -2.08593559299993
            zoneId: "2"
      properties:
        deliveryZones:
          description: restaurant delivery zones. Maximum `deliveryZones` response size should be less than 20KB
          items:
            $ref: "#/components/schemas/DeliveryZone"
          maxItems: 5
          nullable: false
          type: array
          uniqueItems: true
      type: object
    GetSettingsResponse:
      example:
        deliveryAreaFeatureState: Enabled
        deliveryFeesFeatureState: Unreleased
        isRestaurantWhiteListed: true
      properties:
        deliveryAreaFeatureState:
          description: Delivery area feature state.
          enum:
            - Unreleased
            - Disabled
            - Enabled
          nullable: false
          type: string
        deliveryFeesFeatureState:
          description: Delivery fees feature state.
          enum:
            - Unreleased
            - Disabled
            - Enabled
          nullable: false
          type: string
        isRestaurantWhiteListed:
          description: We are going to use smooth 'delivery fees' feature rollout. So, in the first iteration feature will be available for a several restaurants.
          type: boolean
      type: object
    GetSupportRequestTypesResponse:
      description: Array of types request belongs to
      example:
        - name: Top Placement
          subtype:
            - name: Interest
              subtype: []
              value: top_placement__interest
            - name: Issue
              subtype: []
              value: top_placement__issue
          value: top_placement
        - name: Menu update
          subtypes: []
          value: menu_update
      items:
        $ref: "#/components/schemas/SupportRequestType"
      minLength: 1
      type: array
    GetSupportRequestsResponse:
      description: Response representing support requests from restaurant
      example:
        paging:
          count: 35
        requests:
          - id: "5646645"
            status: open
            subject: Top Placement
            submittedDate: 2020-01-01T09:30:00.000Z
          - id: "235253"
            status: closed
            subject: Change Logo Request
            submittedDate: 2020-01-01T09:30:00.000Z
      properties:
        paging:
          description: Consists of pagination information
          properties:
            count:
              description: The total number of results
              format: int64
              type: integer
          type: object
        requests:
          description: List of restaurant support requests
          items:
            $ref: "#/components/schemas/SupportRequest"
          type: array
      type: object
    GiftCardsErrorResponse:
      properties:
        code:
          format: int32
          type: integer
        codeText:
          type: string
      type: object
    GroupType:
      description: ""
      enum:
        - 0
        - 1
        - 2
      type: integer
      x-enumNames:
        - Unknown
        - DynamicSingleUse
        - StaticMultipleUse
    HelpAction:
      description: Represents a possible action (i.e. button) on personalised help home page or as part of a flow
      properties:
        action:
          description: The specific action a button tap invokes.  Content depends on type.
          type: string
        buttonEvent:
          description: The analytics event to send on tap
          properties:
            action:
              description: Google Analytics action
              type: string
            category:
              description: Google Analytics category
              type: string
            label:
              description: Google Analytics label (if any)
              type: string
            value:
              description: Google Analytics value (if any)
              type: number
          type: object
        buttonType:
          description: Display type of button
          enum:
            - Primary
            - Secondary
            - TextOnly
            - CloseButton
            - Option
            - OptionExtra
            - FoodSafety
          type: string
        data:
          additionalProperties: true
          description: "Data to post back (for use with type: ChapiPost)."
          type: object
        department:
          description: "LiveChat department (for use with type: LiveChat)"
          type: string
        id:
          description: Unique but meaningful id for the action
          type: string
        notes:
          description: "Notes to pass to LiveChat (for use with type: LiveChat)"
          type: string
        postText:
          description: Paragraphs to display after button
          items:
            type: string
          type: array
        preText:
          description: Paragraphs to display before button
          items:
            type: string
          type: array
        title:
          description: Caption for the button
          type: string
        type:
          description: The type of action a button tap invokes
          enum:
            - LogIn
            - Call
            - Chatbot
            - LiveChat
            - ChapiGet
            - ChapiPost
            - Link
            - HelpArticleLink
            - EndFlow
            - Email
            - Deferred
            - OpenModal
            - CloseModal
            - NoAction
          type: string
      type: object
    IgnoredRestaurantIds:
      example:
        ignoredRestaurantIds:
          - "123"
          - "456"
      properties:
        ignoredRestaurantIds:
          description: A list of restaurant ids that were present in a request but were ignored.
          items:
            type: string
          type: array
      type: object
    Ingredients:
      additionalProperties: false
      description: List of ingredients
      example:
        name: wasser
      properties:
        name:
          description: Name of ingredient
          nullable: false
          type: string
      type: object
    InternalServerErrorMarketingResponse:
      $ref: "#/components/schemas/MarketingErrorResponse"
      description: 500 Internal Server Error Returned
      example:
        errors:
          - description: Internal Server Error
            errorCode: "500"
        faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
        message: Something has gone wrong, please try again later.
    InvalidProduct:
      properties:
        Name:
          type: string
        ProductId:
          type: string
      type: object
    Item:
      description: Information about an item in the claim
      example:
        additionalContext: Potato skin was damaged
        decision: Rejected
        id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
        name: Potato skin
        quantity: 1
        totalClaimed: 1900
        unitPrice: 2000
      properties:
        additionalContext:
          description: Comment giving additional context
          nullable: true
          type: string
        decision:
          description: Indicates whether decision on the claimed item was made and what was that decision
          enum:
            - NotDecided
            - Accepted
            - Rejected
          type: string
        id:
          description: Item identifier
          type: string
        name:
          description: Item name
          type: string
        quantity:
          description: Quantity of items
          type: number
        totalClaimed:
          description: Total claimed money in smallest unit of relevant currency
          type: number
        unitPrice:
          description: Price of a single unit in smallest unit of relevant currency
          type: number
      type: object
    ItemDecision:
      description: Decision on the item
      example:
        decision: Accepted
        id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
      properties:
        decision:
          description: Decision made about the item
          enum:
            - Accepted
            - Rejected
          type: string
        id:
          description: Item identifier
          type: string
      type: object
    ItemDiscount:
      additionalProperties: false
      example:
        discountPercentage: 100
        modifierGroups:
          - MinimumChoices: 1
            ModifierGroupId: modifier111
            Modifiers:
              - MaximumAdditionalModifiers: 0
                ModifierId: NoSugar11
                Quantity: 1
                TotalPrice: 0
        productId: Lemonade1234
      properties:
        discountPercentage:
          description: The discount percentage applied.
          format: integer
          type: number
        modifierGroups:
          description: The collection of preselected modifier groups for the item.
          items:
            $ref: "#/components/schemas/ModifierGroup"
          nullable: true
          type: array
        productId:
          description: The unique identifier of the discounted product item.
          type: string
      title: ItemDiscount
      type: object
    ItemDiscountPrompt:
      additionalProperties: false
      example:
        description: Get free lemonade with Super Burger
        header: Free item!
        itemDiscounts:
          - discountPercentage: 100
            modifierGroups:
              - MinimumChoices: 1
                ModifierGroupId: modifier111
                Modifiers:
                  - MaximumAdditionalModifiers: 0
                    ModifierId: NoSugar11
                    Quantity: 1
                    TotalPrice: 0
            productId: Lemonade1234
        title: Get free lemonade
      properties:
        description:
          description: The description of offer to show in prompt for customer
          type: string
        header:
          description: The header to show in prompt for customer
          type: string
        itemDiscounts:
          description: The array of items with discounts
          items:
            $ref: "#/components/schemas/ItemDiscount"
          type: array
        title:
          description: The title to show in prompt for customer
          type: string
      title: ItemDiscountPrompt
      type: object
    ItemSelectionStep:
      allOf:
        - $ref: "#/components/schemas/FlowStepBase"
        - properties:
            actions:
              description: Array of actions (i.e. buttons)
              items:
                $ref: "#/components/schemas/HelpAction"
              type: array
            body:
              description: Array of paragraphs for body text
              items:
                type: string
              type: array
            header:
              description: Display header
              type: string
            items:
              description: Array of items in order to choose from
              items:
                properties:
                  id:
                    description: Unique id of item
                    type: string
                  name:
                    description: Name of item
                    type: string
                  price:
                    description: Formatted price of item
                    type: string
                type: object
              type: array
          type: object
      description: Flow step used for selecting problematic items
      type: object
    JobDetails:
      description: The details of a job which may be assigned to a courier for delivery.
      properties:
        alcoholDelivery:
          description: The order contains alcoholic products when true.
          type: boolean
        amount:
          description: The courier's balance regarding the job. When cash orders happen usually the courier pays out of his pocket, that would add credit to him until he's paid in full.
          example: 0
          format: integer
          type: number
        courierId:
          description: Courier identifier for the job details
          example: 61376a78-12e1-4f11-bba2-2097a65s2d75
          type: string
        deliveryId:
          description: Delivery identifier for the job.
          example: 61376a78-12e1-4f11-bba2-2097a65s2d75
          type: string
        destination:
          $ref: "#/components/schemas/Address"
          description: The job address complete information.
        distance:
          description: The distance between the courier location and the job destination.
          format: integer
          type: number
        fees:
          $ref: "#/components/schemas/Fees"
          description: The calculated components of the courier payment for the job.
        groceryDelivery:
          description: The order contains grocery delivery when true.
          type: boolean
        jobType:
          $ref: "#/components/schemas/JobType"
          description: The job type classifies the type of job assigned to the courier. When an order is placed by the customer, two jobs are created for the courier, a collect job and a deliver job, basically the courier have to complete both jobs, first the collect job, which is the one where the order is collected from the restaurant, finally the deliver job as the job of delivering the order to the customer.
        orderNumber:
          description: Incrementing number generated for each particular order.
          example: "10113045"
          type: string
        paymentType:
          $ref: "#/components/schemas/SyncPaymentType"
          description: The order payment status associated with the job.
        restaurantName:
          description: Restaurant's name.
          example: MacDonalds
          type: string
        status:
          $ref: "#/components/schemas/JobStatus"
          description: All the possible job status that might occur during a delivery process.
        time:
          description: Job creation time stamp.
          example: 1593444834
          format: long
          type: number
      type: object
    JobStatus:
      description: All possible job status during a delivery process.
      enum:
        - UNASSIGNED
        - ASSIGNED_PENDING_ACCEPTED
        - ASSIGNED
        - ACCEPTED
        - PARKING
        - ARRIVED
        - ENTERED
        - COMPLETED
      type: string
    JobType:
      description: The job type classifies the type of job assigned to the courier. When an order is placed by the customer, two jobs are created for the courier, a collect job and a deliver job, basically the courier have to complete both jobs, first the collect job, which is the one where the order is collected from the restaurant and the deliver job as the job of delivering the order to the customer.
      enum:
        - COLLECT
        - DELIVER
      type: string
    Justification:
      description: The reason of the claim rejection and optional comments from the restaurant
      example:
        comments: The food was packed properly
        reason: Other
      nullable: true
      properties:
        comments:
          description: Comment from the restaurant owner in case they rejected at least one of the items and want to type their own rejection reason
          nullable: true
          type: string
        reason:
          description: One of the predefined reasons
          enum:
            - AlreadyRefunded
            - ItemReplaced
            - PartialRefundRequired
            - WasNotMissing
            - WillRedeliver
            - OrderWasHot
            - OrderWasOnTime
            - OrderWasPacked
            - FoodWasIntact
            - AddExtraItem
            - Other
          type: string
      type: object
    LateOrderCompensationOption:
      additionalProperties: false
      properties:
        amount:
          description: Cost of the option in local currency
          format: decimal
          type: number
        isRecommended:
          description: Whether this option is the recommended option
          type: boolean
      type: object
    LateOrderCompensationQuery:
      additionalProperties: false
      properties:
        compensationOptions:
          description: List of possible options for compensation
          items:
            $ref: "#/components/schemas/LateOrderCompensationOption"
          nullable: true
          type: array
        isViewed:
          description: Has this compensation query been viewed
          type: boolean
        queryId:
          description: The ID of the late order compensation query
          nullable: true
          type: string
        response:
          $ref: "#/components/schemas/LateOrderCompensationResponse"
          description: The restaurants response to the late order compensation query
          nullable: true
      type: object
    LateOrderCompensationResolutionRequest:
      additionalProperties: false
      properties:
        acceptedAmount:
          description: Accepted compensation amount
          format: double
          nullable: true
          type: number
        isAccepted:
          description: Is compensation accepted
          type: boolean
        rejectedReasonCode:
          description: Reason code for rejection
          enum:
            - ExtraItem
            - StuckInTraffic
            - BusierThanExpected
            - BadWeather
            - UnexpectedProblems
          nullable: true
          type: string
      type: object
    LateOrderCompensationResponse:
      additionalProperties: false
      properties:
        acceptedAmount:
          description: The amount of compensation if accepted
          format: decimal
          nullable: true
          type: number
        isAccepted:
          description: Has the late order compensation request been accepted
          type: boolean
        rejectedReasonCode:
          description: The rejection reason if not accepted
          enum:
            - ExtraItem
            - StuckInTraffic
            - BusierThanExpected
            - BadWeather
            - UnexpectedProblems
          nullable: true
          type: string
      type: object
    LateOrderCompensationRestaurantResolution:
      example:
        acceptedAmount: 500
        isAccepted: true
        orderId: 69rqfxyfze2gjzf5nusdcw
      properties:
        acceptedAmount:
          description: The monetary amount of compensation granted, in cents/pence. Required when `isAccepted = true`.
          type: integer
        isAccepted:
          description: Flag to indicate whether a compensation request has been accepted or rejected.
          type: boolean
        orderId:
          description: The ID of the late order compensation request that this response relates to.
          type: string
        rejectedReasonCode:
          description: |-
            
            - `BadTraffic` : The driver was stuck in heavy traffic, sorry.
            - `BadWeather` : The bad weather was delaying our deliveries, sorry.
            - `BusierThanExpected` : Our restaurant was busier than we expected.
            - `CompensatedWithItem` : We gave you something from the menu free of charge to make up for it.
            - `NoReason` : We're really sorry your order was late. We hope you enjoyed your food.
          enum:
            - BadTraffic
            - BadWeather
            - BusierThanExpected
            - CompensatedWithItem
            - NoReason
          type: string
      type: object
    LateOrderInfo:
      additionalProperties: false
      properties:
        isLateOrder:
          description: Is there a late order request
          type: boolean
        lateOrderProcessed:
          description: Has the late order request been processed by the restaurant
          type: boolean
      type: object
    LateOrderRequest:
      additionalProperties: false
      properties:
        additionalMinutesToAdd:
          description: Amount of minutes added
          format: int32
          nullable: true
          type: integer
        lateOrderStatus:
          description: Reason to adding minutes
          enum:
            - None
            - Preparing
            - OnItsWay
            - Delivered
          nullable: true
          type: string
      type: object
    LateOrderRestaurantResponse:
      properties:
        additionalDeliveryTimeToAddMinutes:
          description: The amount of time to add to the current delivery estimate in minutes
          type: integer
        lateOrderStatus:
          description: The updated later order query status
          enum:
            - Preparing
            - OnItsWay
            - Delivered
          type: string
      type: object
    LateOrderUpdateReceivedStep:
      allOf:
        - $ref: "#/components/schemas/FlowStepBase"
        - properties:
            actions:
              description: Array of actions (i.e. buttons)
              items:
                $ref: "#/components/schemas/HelpAction"
              type: array
            header:
              description: Display header
              type: string
            message:
              description: Message from restaurant
              type: string
            messageHeader:
              description: Header for the message from restaurant
              type: string
            newDueDate:
              description: New expected due date
              format: date-time
              type: string
          type: object
      description: Flow step used to display the restaurant's response to a customer's Late Order update request
      type: object
    LegacyTempOfflineStatus:
      default: ClosedDueToEvent
      description: |-
        
        - `Unset` : Legacy value meaning online.
        - `None` : Legacy value meaning online.
        - `TempOffline` : The restaurant will go temporarily offline, typically for an undetermined amount of time (no end date).
        - `ClosedToday` : The restaurant will closed for the day and the event will end the next morning.
        - `ClosedDueToEvent` : The restaurant will go offline for an event (e.g. a holiday), these events will typically have an end time.
        - `FailedJctConnection` : The restaurant will go offline due to the POS device losing connection.
        - `NoTrOverride` : The restaurant will go offline for another reason that the restaurant cannot override.
        - `IgnoredOrders` : The restaurant will go offline due to ignoring orders.
      enum:
        - Unset
        - None
        - TempOffline
        - ClosedToday
        - ClosedDueToEvent
        - FailedJctConnection
        - NoTrOverride
        - IgnoredOrders
      type: string
    ListOfOfflineItemsResponse:
      example:
        offlineItems:
          - id: "111"
            nextAvailableAt: 2021-01-01T05:00:00.0000000Z
            type: variation
          - id: "222"
            nextAvailableAt: 2021-01-01T05:00:00.0000000Z
            type: variation
          - id: "888"
            nextAvailableAt: 2021-01-01T05:00:00.0000000Z
            type: modifier
          - id: "999"
            nextAvailableAt: 2021-01-01T05:00:00.0000000Z
            type: modifier
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
      properties:
        offlineItems:
          description: List of offline items for a given restaurant.
          items:
            $ref: "#/components/schemas/OfflineItemsResponse"
          type: array
        paging:
          description: Consists of pagination information.
          properties:
            cursors:
              description: Consists of cursors markers used in pagination.
              properties:
                after:
                  description: The value should be used in the query parameter named after. It is used as a cursor of the last returned record in the previous request, from which next offset going to be fetched. A missing or empty value indicates that the end of the result set has been reached.
                  type: string
              type: object
          type: object
      type: object
    LiveMetrics:
      description: The live metrics object for a given delivery zone.
      properties:
        aajlTimestamp:
          description: Timestamp for the average assignable job load retrieved for a given delivery zone.
          example: 1585260360000
          format: integer
          type: number
        currentAajl:
          description: Average assignable job load retrieved for a given delivery zone.
          example: 0.7
          format: double
          type: number
        marketplaceRank:
          description: Current marketplace rank value retrieved for a given delivery zone.
          example: -2
          format: integer
          type: number
        marketplaceRankStatus:
          description: Marketplace On/Off status
          type: boolean
        throttlingStatus:
          description: Zone Throttling On/Off status
          type: boolean
        zoneThrottling:
          description: Current zone throttling value retrieved for a given delivery zone.
          example: 15
          format: integer
          type: number
      type: object
    Manufacturer:
      example:
        brand: Coca-Cola Zero
        city: Anderlecht
        manufacturer: Coca-Cola Erfrischungsgetränke AG, Postfach 67 01 56, 10207 Berlin
        origin: Deutschland
        postalCode: "1070"
        streetAddress: Bergense Steenweg 1424
      properties:
        brand:
          description: Brand name
          nullable: true
          type: string
        city:
          description: City
          nullable: true
          type: string
        manufacturer:
          description: Manufacturer name
          nullable: true
          type: string
        origin:
          description: Country
          nullable: true
          type: string
        postalCode:
          description: Postal Code
          nullable: true
          type: string
        streetAddress:
          description: Street Address
          nullable: true
          type: string
      type: object
    MarketingContentResponse:
      additionalProperties: true
      example:
        anotherField: another value
        selected:
          - subjectLine
          - anotherField
        subjectLine: humor
      properties:
        selected:
          description: |-
            The set of 'select' properties from the request that meet the following criteria: 
              1) The user has data for the property
              2) The data for the given user is present in the 'accepted values' specified in the request.
          items:
            type: string
          type: array
      type: object
    MarketingError:
      additionalProperties: false
      properties:
        description:
          description: Specific details about the error that may assist the you in resolving the issue
          type: string
        errorCode:
          description: A value that helps identify this response back to logs, so we can easily find this specific fault
          type: string
      type: object
    MarketingErrorResponse:
      additionalProperties: false
      properties:
        errors:
          description: Underlying errors associated with the error
          items:
            $ref: "#/components/schemas/MarketingError"
          nullable: true
          type: array
        faultId:
          description: A value that helps identify this response back to logs, so we can easily find this specific fault
          type: string
        message:
          description: Specific details about the error that may assist the you in resolving the issue
          type: string
      type: object
      x-abstract: true
    MarketingReportResponse:
      additionalProperties:
        properties:
          dataExtractionDateUTC:
            description: The UTC datetime that the report data was extracted from BigQuery
            format: date-time
            type: string
          reportData:
            description: Report data as JSON object
            nullable: true
        type: object
      description: The report data and the extraction date
      example:
        orders-per-month:
          dataExtractionDateUTC: 2019-09-03T13:10:05Z
          reportData: "[{'month':3,'year':2019,'order_count':630},{'month':4,'year':2019,'order_count':583}]"
        potential-orders-per-month:
          dataExtractionDateUTC: 2019-09-03T13:10:05Z
          reportData: "[{'month':3,'year':2019,'potential_monthly_order_count':630},{'month':4,'year':2019,'potential_monthly_order_count':583}]"
        unique-customers:
          dataExtractionDateUTC: 2019-09-03T13:10:05Z
          reportData: "[{'month':3,'year':2019,'unique_customer_count':630},{'month':4,'year':2019,'unique_customer_count':583}]"
      type: object
    MarketplaceRank:
      description: The marketplace rank object used to build a Ranking for a given delivery zone.
      properties:
        aajl:
          description: Average Assignable Job Load
          example: 1
          format: integer
          type: number
        enabled:
          description: Status of the corresponding rank
          type: boolean
        rank:
          description: Rank position of Average Assignable Job Load
          example: -20
          format: integer
          type: number
      type: object
    MarketplaceRankingSettings:
      description: The marketplace ranking settings object for all endpoints.
      properties:
        id:
          description: Delivery Zone Id
          example: fc71ee27-608f-4223-b2ea-2774eb83c6b4
          type: string
        marketplaceRankingStatus:
          description: Marketplace On/Off Status
          type: boolean
        ranks:
          description: Array of marketplace rank objects used to build a Ranking for a given delivery zone.
          items:
            $ref: "#/components/schemas/MarketplaceRank"
          maxItems: 9
          minItems: 9
          type: array
      type: object
    MarketplaceRankingSettingsList:
      description: Marketplace Ranking Settings List
      properties:
        marketplaceRankSettingsList:
          description: List of Marketplace Ranking Settings
          items:
            $ref: "#/components/schemas/MarketplaceRankingSettings"
          maxItems: 3
          minItems: 3
          type: array
      type: object
    Menu:
      allOf:
        - $ref: "#/components/schemas/MenuBase"
        - properties:
            availabilities:
              description: A set of availabilities that can later be referenced by individual menu items.
              items:
                $ref: "#/components/schemas/Availability"
              type: array
            categories:
              description: A set of categories that appear on the menu.
              items:
                $ref: "#/components/schemas/Category"
              type: array
            items:
              description: All of the menu items within the menu.
              items:
                $ref: "#/components/schemas/MenuItem"
              type: array
          type: object
      example:
        categories:
          - description: ""
            id: "3"
            itemIds:
              - "65143901"
            name: Starters
          - description: ""
            id: "4"
            itemIds:
              - "23435309"
              - "33445308"
            name: Deals
          - description: ""
            id: "5"
            itemIds:
              - "8547130"
              - "8547140"
            name: Pizzas
          - description: ""
            id: "6"
            itemIds:
              - "6537130"
              - "6537140"
            name: Drinks
        currency: GBP
        description: My excellent menu
        items:
          - dealGroups:
              - dealItemVariations:
                  - additionPrice: 0
                    dealItemVariationId: "1577341"
                    maxChoices: 1
                    minChoices: 0
                id: 23435309-1
                name: Choose your base
                numberOfChoices: 1
              - dealItemVariations:
                  - additionPrice: 0
                    dealItemVariationId: "8547121"
                    maxChoices: 1
                    minChoices: 0
                  - additionPrice: 0
                    dealItemVariationId: "3547157"
                    maxChoices: 1
                    minChoices: 0
                  - additionPrice: 50
                    dealItemVariationId: "8548153"
                    maxChoices: 1
                    minChoices: 0
                id: 23435309-2
                name: Choose your halves
                numberOfChoices: 2
            description: Choose each half.
            id: "23435309"
            labels: []
            modifierGroups: []
            name: Half-and-half Pizza
            type: deal
            variations:
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                basePrice: 3099
                dealGroupsIds:
                  - 23435309-1
                  - 23435309-2
                dealOnly: false
                id: "23435309"
                modifierGroupsIds: []
                name: ""
                type: noVariation
          - dealGroups:
              - dealItemVariations:
                  - additionPrice: 0
                    dealItemVariationId: "9750011"
                    maxChoices: 1
                    minChoices: 0
                  - additionPrice: 0
                    dealItemVariationId: "9750021"
                    maxChoices: 1
                    minChoices: 0
                  - additionPrice: 0
                    dealItemVariationId: "23435309"
                    maxChoices: 1
                    minChoices: 0
                id: 33445308-1
                name: Choose your pizza
                numberOfChoices: 1
              - dealItemVariations:
                  - additionPrice: 13
                    dealItemVariationId: "6537130"
                    maxChoices: 1
                    minChoices: 0
                  - additionPrice: 0
                    dealItemVariationId: "6537140"
                    maxChoices: 1
                    minChoices: 0
                  - additionPrice: 0
                    dealItemVariationId: "7739164"
                    maxChoices: 1
                    minChoices: 0
                id: 33445308-2
                name: Choose your drink
                numberOfChoices: 1
            description: "Choose a 14 inch Pizza (including half-and-half) and any drink. Note: Alcohol is only available for collection."
            id: "33445308"
            labels: []
            modifierGroups: []
            name: 14 inch Pizza & A Drink For 1
            type: deal
            variations:
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                basePrice: 3099
                dealGroupsIds:
                  - 33445308-1
                  - 33445308-2
                dealOnly: false
                id: "33445308"
                modifierGroupsIds: []
                name: ""
                type: noVariation
          - dealGroups: []
            description: ""
            id: "65143901"
            labels: []
            modifierGroups:
              - id: 65143901-req-1
                maxChoices: 1
                minChoices: 1
                modifiers:
                  - additionPrice: 0
                    id: "834502"
                    maxChoices: 1
                    minChoices: 0
                    name: Pitta Bread
                  - additionPrice: 0
                    id: "835700"
                    maxChoices: 1
                    minChoices: 0
                    name: Sourdough
                  - additionPrice: 50
                    id: "835601"
                    maxChoices: 1
                    minChoices: 0
                    name: Wholemeal
                name: Choose your bread
              - id: 65143901-req-2
                maxChoices: 2
                minChoices: 2
                modifiers:
                  - additionPrice: 0
                    id: "835340"
                    maxChoices: 2
                    minChoices: 0
                    name: Tzatziki
                  - additionPrice: 0
                    id: "835341"
                    maxChoices: 2
                    minChoices: 0
                    name: Taramasalata
                  - additionPrice: 0
                    id: "825344"
                    maxChoices: 2
                    minChoices: 0
                    name: Hummus
                  - additionPrice: 0
                    id: "825346"
                    maxChoices: 2
                    minChoices: 0
                    name: Onion
                name: Choose your dips
            name: Flat Bread and Dips (Pick any 2 Dips)
            requireOtherProducts: false
            type: menuItem
            variations:
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 650
                dealGroupsIds: []
                dealOnly: false
                id: "65143901"
                kitchenNumber: "90"
                modifierGroupsIds:
                  - 65143901-req-1
                  - 65143901-req-2
                name: ""
                type: noVariation
          - dealGroups: []
            description: ""
            id: "1577341"
            labels: []
            modifierGroups:
              - id: 1577341-req-1
                maxChoices: 1
                minChoices: 1
                modifiers:
                  - additionPrice: 0
                    id: "854500"
                    maxChoices: 1
                    minChoices: 0
                    name: Classic Crust
                  - additionPrice: 200
                    id: "854600"
                    maxChoices: 1
                    minChoices: 0
                    name: Stuffed Crust
                name: Crust
            name: Base
            requireOtherProducts: true
            type: menuItem
            variations:
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 200
                dealGroupsIds: []
                dealOnly: true
                id: "1577341"
                modifierGroupsIds:
                  - 1577341-req-1
                name: ""
                type: noVariation
          - dealGroups: []
            description: ""
            id: "8547130"
            labels: []
            modifierGroups:
              - id: 8547130-req-1
                maxChoices: 1
                minChoices: 1
                modifiers:
                  - additionPrice: 0
                    id: "854500"
                    maxChoices: 1
                    minChoices: 0
                    name: Classic Crust
                  - additionPrice: 200
                    id: "854600"
                    maxChoices: 1
                    minChoices: 0
                    name: Stuffed Crust
                name: Choose your crust
              - id: 8547130-opt-1
                maxChoices: 10
                minChoices: 0
                modifiers:
                  - additionPrice: 50
                    id: "1000"
                    maxChoices: 2
                    minChoices: 0
                    name: Mozzarella Cheese
                  - additionPrice: 50
                    id: "1001"
                    maxChoices: 1
                    minChoices: 0
                    name: Ham
                  - additionPrice: 50
                    id: "1002"
                    maxChoices: 1
                    minChoices: 0
                    name: Red Onion
                  - additionPrice: 50
                    id: "1003"
                    maxChoices: 1
                    minChoices: 0
                    name: Pepperoni
                  - additionPrice: 50
                    id: "1004"
                    maxChoices: 1
                    minChoices: 0
                    name: Olives
                name: Any extra toppings?
            name: Margherita
            requireOtherProducts: true
            type: menuItem
            variations:
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 500
                dealGroupsIds: []
                dealOnly: true
                id: "8547121"
                kitchenNumber: "100"
                modifierGroupsIds:
                  - 8547130-opt-1
                name: Half
                type: variation
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 1000
                dealGroupsIds: []
                dealOnly: false
                id: "8547130"
                kitchenNumber: "100"
                modifierGroupsIds:
                  - 8547130-req-1
                  - 8547130-opt-1
                name: 12 inch
                type: variation
              - availabilityIds:
                  - 1-lunch-delivery-weekday
                  - 2-lunch-collection-weekday
                  - 3-dinner-delivery-weekday
                  - 4-dinner-collection-weekday
                basePrice: 1200
                dealGroupsIds: []
                dealOnly: true
                id: "8543123"
                kitchenNumber: "200"
                modifierGroupsIds:
                  - 8547130-req-1
                  - 8547130-opt-1
                name: 14 inch
                type: variation
          - dealGroups: []
            description: ""
            id: "8547140"
            labels: []
            modifierGroups:
              - id: 8547140-req-1
                maxChoices: 1
                minChoices: 1
                modifiers:
                  - additionPrice: 0
                    id: "854500"
                    maxChoices: 1
                    minChoices: 0
                    name: Classic Crust
                  - additionPrice: 200
                    id: "854600"
                    maxChoices: 1
                    minChoices: 0
                    name: Stuffed Crust
                name: Choose your crust
              - id: 8547140-opt-1
                maxChoices: 10
                minChoices: 0
                modifiers:
                  - additionPrice: 50
                    id: "1000"
                    maxChoices: 2
                    minChoices: 0
                    name: Mozzarella Cheese
                  - additionPrice: 50
                    id: "1001"
                    maxChoices: 2
                    minChoices: 0
                    name: Ham
                  - additionPrice: 50
                    id: "1002"
                    maxChoices: 2
                    minChoices: 0
                    name: Red Onion
                  - additionPrice: 50
                    id: "1003"
                    maxChoices: 4
                    minChoices: 2
                    name: Pepperoni
                  - additionPrice: 50
                    id: "1004"
                    maxChoices: 2
                    minChoices: 0
                    name: Olives
                name: Any extra toppings?
              - id: 9755052-req-1
                maxChoices: 1
                minChoices: 1
                modifiers:
                  - additionPrice: 0
                    id: "854500"
                    maxChoices: 1
                    minChoices: 0
                    name: Classic Crust
                  - additionPrice: 250
                    id: "854600"
                    maxChoices: 1
                    minChoices: 0
                    name: Stuffed Crust
                name: Choose your crust
              - id: 9755052-opt-1
                maxChoices: 10
                minChoices: 0
                modifiers:
                  - additionPrice: 70
                    id: "1000"
                    maxChoices: 2
                    minChoices: 0
                    name: Mozzarella Cheese
                  - additionPrice: 70
                    id: "1001"
                    maxChoices: 2
                    minChoices: 0
                    name: Ham
                  - additionPrice: 70
                    id: "1002"
                    maxChoices: 2
                    minChoices: 0
                    name: Red Onion
                  - additionPrice: 70
                    id: "1003"
                    maxChoices: 2
                    minChoices: 0
                    name: Pepperoni
                  - additionPrice: 70
                    id: "1004"
                    maxChoices: 2
                    minChoices: 0
                    name: Olives
                name: Any extra toppings?
            name: Double Pepperoni
            requireOtherProducts: false
            type: menuItem
            variations:
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 500
                dealGroupsIds: []
                dealOnly: true
                id: "8548153"
                kitchenNumber: "100"
                modifierGroupsIds:
                  - 8547140-opt-1
                name: Half
                type: variation
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 1000
                dealGroupsIds: []
                dealOnly: false
                id: "8547140"
                kitchenNumber: "100"
                modifierGroupsIds:
                  - 8547140-req-1
                  - 8547140-opt-1
                name: 12 inch
                type: variation
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 1200
                dealGroupsIds: []
                dealOnly: true
                id: "9750021"
                kitchenNumber: "200"
                modifierGroupsIds:
                  - 8547140-req-1
                  - 8547140-opt-1
                name: 14 inch
                type: variation
              - availabilityIds:
                  - 2-lunch-collection
                  - 4-dinner-collection
                basePrice: 1200
                dealGroupsIds: []
                dealOnly: false
                id: "9755052"
                kitchenNumber: "200"
                modifierGroupsIds:
                  - 9755052-req-1
                  - 9755052-opt-1
                name: 18 inch
                type: variation
          - dealGroups: []
            description: ""
            id: "3547157"
            labels:
              - vegetarian
            modifierGroups:
              - id: 8547140-opt-1
                maxChoices: 10
                minChoices: 0
                modifiers:
                  - additionPrice: 50
                    id: "1000"
                    maxChoices: 2
                    minChoices: 0
                    name: Mozzarella Cheese
                  - additionPrice: 50
                    id: "1001"
                    maxChoices: 2
                    minChoices: 0
                    name: Ham
                  - additionPrice: 50
                    id: "1002"
                    maxChoices: 2
                    minChoices: 1
                    name: Red Onion
                  - additionPrice: 50
                    id: "1003"
                    maxChoices: 2
                    minChoices: 0
                    name: Pepperoni
                  - additionPrice: 50
                    id: "1004"
                    maxChoices: 2
                    minChoices: 1
                    name: Olives
                name: Any extra toppings?
            name: Vegetarian
            requireOtherProducts: false
            type: menuItem
            variations:
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 500
                dealGroupsIds: []
                dealOnly: true
                id: "3547157"
                kitchenNumber: "121"
                modifierGroupsIds:
                  - 8547140-opt-1
                name: ""
                type: noVariation
          - dealGroups: []
            description: ""
            id: "6537130"
            labels: []
            modifierGroups: []
            name: Coca-Cola
            requireOtherProducts: true
            type: menuItem
            variations:
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 100
                dealGroupsIds: []
                dealOnly: false
                id: "6537130"
                kitchenNumber: "300"
                modifierGroupsIds: []
                name: 0.33L
                type: variation
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 300
                dealGroupsIds: []
                dealOnly: false
                id: "9750011"
                kitchenNumber: "400"
                modifierGroupsIds: []
                name: 1.5L
                type: variation
          - dealGroups: []
            description: ""
            id: "6537140"
            labels: []
            modifierGroups: []
            name: Diet Coke
            requireOtherProducts: true
            type: menuItem
            variations:
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 100
                dealGroupsIds: []
                dealOnly: false
                id: "6537140"
                kitchenNumber: "300"
                modifierGroupsIds: []
                name: 0.33L
                type: variation
              - availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 300
                dealGroupsIds: []
                dealOnly: false
                id: "9750312"
                kitchenNumber: "400"
                modifierGroupsIds: []
                name: 1.5L
                type: variation
          - dealGroups: []
            description: ""
            id: "7739164"
            labels: []
            modifierGroups: []
            name: Bottle of Lager
            requireOtherProducts: true
            type: menuItem
            variations:
              - availabilityIds:
                  - 2-lunch-collection
                  - 4-dinner-collection
                basePrice: 300
                dealGroupsIds: []
                dealOnly: false
                id: "7739164"
                kitchenNumber: "700"
                modifierGroupsIds: []
                name: ""
                type: noVariation
        name: My Restaurant
        restaurantId: "100059"
    MenuAllEditsResponse:
      description: All pending changes
      example:
        - CategoryId: "1"
          CategoryName: Pizzas
          Description: It's a pizza
          EditType: Add
          Labels:
            - Vegetarian
          MenuItemId: "123"
          MenuItemName: Cheese Pizza
          OptionGroups:
            - Id: "1"
              MaxChoices: 1
              MinChoices: 1
              Modifiers:
                - Id: "9"
                  Name: Gluten-free
                  Variations:
                    - AdditionPrice: 1.5
                      ModifierGroupId: "1"
                      Selected: true
                      VariationId: "4"
                      VariationName: Large
                    - AdditionPrice: 1.3
                      ModifierGroupId: "1"
                      Selected: true
                      VariationId: "5"
                      VariationName: Small
              Name: Bases
          PreferenceGroups:
            - Id: "12"
              MaxChoices: 1
              MinChoices: 0
              Modifiers:
                - Id: "9"
                  Name: Ham
                  Variations:
                    - AdditionPrice: 0.5
                      ModifierGroupId: "12"
                      Selected: true
                      VariationId: "4"
                      VariationName: Large
              Name: Meats
          ReceiptNumber: 321a
          Variations:
            - Id: "32"
              Name: Large
              OptionGroupIds:
                - "1"
              PreferenceGroupIds:
                - "12"
                - "32"
              Price: 12.32
              Type: ???
      items:
        $ref: "#/components/schemas/MenuEditResponse"
      type: array
      uniqueItems: false
    MenuBase:
      example:
        currency: GBP
        description: My excellent menu
        name: My Restaurant
        restaurantId: "100059"
      properties:
        currency:
          description: The currency of the items on the menu in ISO 4217 format, i.e. GBP, EUR or AUD
          type: string
        description:
          description: A top level description for the menu.
          type: string
        name:
          description: The name of the restaurant.
          type: string
        restaurantId:
          description: A unique identifier at tenant level for a given restaurant.
          type: string
      type: object
    MenuCategory:
      additionalProperties: false
      properties:
        description:
          description: Description of category
          nullable: true
          readOnly: true
          type: string
        name:
          description: Name of category
          nullable: true
          readOnly: true
          type: string
        productGroups:
          description: Product group
          items:
            $ref: "#/components/schemas/ProductGroup"
          nullable: true
          readOnly: true
          type: array
      type: object
    MenuDealGroup:
      allOf:
        - $ref: "#/components/schemas/MenuDealGroupBase"
        - properties:
            dealItemVariations:
              description: The ids of the variations that can be selected in order to satisfy this deal group.
              items:
                $ref: "#/components/schemas/DealItemVariation"
              type: array
            id:
              description: A unique identifier at menu level for a deal group.
              type: string
            name:
              description: The name of the deal group.
              type: string
            numberOfChoices:
              description: How many deal item variations must be selected to satisfy this deal group.
              format: int32
              type: integer
          type: object
      example:
        dealItemVariations:
          - additionPrice: 0
            dealItemVariationId: "8547121"
            maxChoices: 1
            minChoices: 0
          - additionPrice: 0
            dealItemVariationId: "3547157"
            maxChoices: 1
            minChoices: 0
          - additionPrice: 50
            dealItemVariationId: "8548153"
            maxChoices: 1
            minChoices: 0
        id: 23435309-2
        name: Choose your pizzas
        numberOfChoices: 2
    MenuDealGroupBase:
      example:
        id: 23435309-2
        name: Choose your pizzas
        numberOfChoices: 2
      properties:
        id:
          description: A unique identifier at menu level for a deal group.
          type: string
        name:
          description: The name of the deal group.
          type: string
        numberOfChoices:
          description: How many deal item variations must be selected to satisfy this deal group.
          format: int32
          type: integer
      type: object
    MenuEditResponse:
      example:
        CategoryId: "1"
        CategoryName: Pizzas
        Description: Cheesy pizza
        EditType: Add
        Labels:
          - Vegetarian
        MenuItemId: "12"
        MenuItemName: Cheese pizza
        OptionGroups:
          - Id: "1"
            MaxChoices: 1
            MinChoices: 1
            Modifiers:
              - Id: "9"
                Name: Gluten-free
                Variations:
                  - AdditionPrice: 1.5
                    ModifierGroupId: "1"
                    Selected: true
                    VariationId: "4"
                    VariationName: Large
                  - AdditionPrice: 1.3
                    ModifierGroupId: "1"
                    Selected: true
                    VariationId: "5"
                    VariationName: Small
            Name: Bases
        PreferenceGroups:
          - Id: "12"
            MaxChoices: 1
            MinChoices: 0
            Modifiers:
              - Id: "9"
                Name: Ham
                Variations:
                  - AdditionPrice: 0.5
                    ModifierGroupId: "12"
                    Selected: true
                    VariationId: "4"
                    VariationName: Large
            Name: Meats
          - Id: "32"
            MaxChoices: 1
            MinChoices: 0
            Modifiers:
              - Id: "7"
                Name: Pineapple
                Variations:
                  - AdditionPrice: 0.5
                    ModifierGroupId: "32"
                    Selected: true
                    VariationId: "4"
                    VariationName: Large
                  - AdditionPrice: 0.3
                    ModifierGroupId: "32"
                    Selected: true
                    VariationId: "5"
                    VariationName: Small
            Name: Veggies
        ReceiptNumber: "123"
        Variations:
          - Id: "4"
            Name: Large
            OptionGroupIds:
              - "1"
            PreferenceGroupIds:
              - "12"
              - "32"
            Price: 12.32
          - Id: "5"
            Name: Small
            OptionGroupIds:
              - "1"
            PreferenceGroupIds:
              - "32"
            Price: 8.99
      properties:
        CategoryId:
          description: Id of the category of the menu item
          type: string
        CategoryName:
          description: Name of the category of the menu item
          type: string
        Description:
          description: Description of the menu item
          type: string
        EditType:
          description: Action being applied to the menu item
          enum:
            - Add
            - Edit
            - Delete
            - None
          format: string
          type: string
        Labels:
          description: Labels for the menu item
          items:
            type: string
          type: array
          uniqueItems: false
        MenuItemId:
          description: Id of the menu item
          type: string
        MenuItemName:
          description: Name of the menu item
          type: string
        OptionGroups:
          description: Option groups available for the menu item
          items:
            $ref: "#/components/schemas/ModifierGroupResponse"
          type: array
          uniqueItems: false
        PreferenceGroups:
          description: Preference groups available for the menu item
          items:
            $ref: "#/components/schemas/ModifierGroupResponse"
          type: array
          uniqueItems: false
        ReceiptNumber:
          description: Receipt or kitchen number of the menu item
          type: string
        Variations:
          description: Variations applicable to the menu item
          items:
            $ref: "#/components/schemas/VariationResponse"
          type: array
          uniqueItems: false
      type: object
    MenuIngestionResponse:
      example:
        correlationId: 64bef5ee-7265-47f8-9aee-28bc74f00b13
      properties:
        correlationId:
          description: An ID for the asynchronous operation to ingest the menu
          type: string
      type: object
    MenuItem:
      allOf:
        - $ref: "#/components/schemas/MenuItemBase"
        - properties:
            dealGroups:
              description: A set of deal groups for this menu item.
              items:
                $ref: "#/components/schemas/MenuDealGroup"
              type: array
            imageUrl:
              description: A menu item image URL.
              type: string
            modifierGroups:
              description: A set of modifier groups for this menu item.
              items:
                $ref: "#/components/schemas/MenuModifierGroup"
              type: array
            variations:
              description: A set of variations of this menu item.
              items:
                $ref: "#/components/schemas/Variation"
              type: array
          type: object
      example:
        dealGroups: []
        description: ""
        id: "65143901"
        imageUrl: http://cdn.images/flat_bread_dips.png
        labels: []
        modifierGroups:
          - id: 65143901-req-1
            maxChoices: 1
            minChoices: 1
            modifiers:
              - additionPrice: 0
                id: "834502"
                maxChoices: 1
                minChoices: 0
                name: Pitta Bread
              - additionPrice: 0
                id: "835700"
                maxChoices: 1
                minChoices: 0
                name: Sourdough
              - additionPrice: 50
                id: "835601"
                maxChoices: 1
                minChoices: 0
                name: Wholemeal
            name: Bread
          - id: 65143901-req-2
            maxChoices: 2
            minChoices: 2
            modifiers:
              - additionPrice: 0
                id: "835340"
                maxChoices: 2
                minChoices: 0
                name: Tzatziki
              - additionPrice: 0
                id: "835341"
                maxChoices: 2
                minChoices: 0
                name: Taramasalata
              - additionPrice: 0
                id: "825344"
                maxChoices: 2
                minChoices: 0
                name: Hummus
              - additionPrice: 0
                id: "825346"
                maxChoices: 2
                minChoices: 0
                name: Onion
            name: Dips
        name: Flat Bread and Dips (Pick any 2 Dips)
        requireOtherProducts: false
        type: menuItem
        variations:
          - availabilityIds:
              - 1-lunch-delivery
              - 2-lunch-collection
              - 3-dinner-delivery
              - 4-dinner-collection
            basePrice: 650
            dealGroupsIds: []
            dealOnly: false
            id: "65143901"
            kitchenNumber: "90"
            modifierGroupsIds:
              - 65143901-req-1
              - 65143901-req-2
            name: ""
            type: noVariation
    MenuItemBase:
      example:
        description: ""
        id: "65143901"
        labels: []
        name: Flat Bread and Dips (Pick any 2 Dips)
        requireOtherProducts: false
        type: menuItem
      properties:
        description:
          description: The description of the menu item.
          type: string
        id:
          description: A unique identifier at menu level for a menu item.
          type: string
        labels:
          description: Used to toggle front end icons for the available labels.
          items:
            enum:
              - hot
              - vegetarian
              - alcohol
            type: string
          maxItems: 3
          minItems: 0
          type: array
        name:
          description: The name of the menu item.
          type: string
        requireOtherProducts:
          description: Cannot be selected as a stand alone item, it has to be ordered with other items. Typically this will apply to menu items within drinks and dessert categories.
          type: boolean
        type:
          description: Indicates whether this is a regular meal item or a deal item.
          enum:
            - menuItem
            - deal
          type: string
      type: object
    MenuItemDetailsResponse:
      example:
        Category:
          Id: "21"
          Name: Pizzas
        Description: Boring pizza
        HasPendingChange: true
        Id: "1"
        IsDeal: false
        Labels:
          - Vegetarian
        Name: Pizza
        OptionGroups:
          - Id: "1"
            MaxChoices: 1
            MinChoices: 1
            Modifiers:
              - Id: "9"
                Name: Gluten-free
                Variations:
                  - AdditionPrice: 1.5
                    ModifierGroupId: "1"
                    Selected: true
                    VariationId: "4"
                    VariationName: Large
                  - AdditionPrice: 1.3
                    ModifierGroupId: "1"
                    Selected: true
                    VariationId: "5"
                    VariationName: Small
            Name: Bases
        PreferenceGroups:
          - Id: "12"
            MaxChoices: 1
            MinChoices: 0
            Modifiers:
              - Id: "9"
                Name: Ham
                Variations:
                  - AdditionPrice: 0.5
                    ModifierGroupId: "12"
                    Selected: true
                    VariationId: "4"
                    VariationName: Large
            Name: Meats
          - Id: "32"
            MaxChoices: 1
            MinChoices: 0
            Modifiers:
              - Id: "7"
                Name: Pineapple
                Variations:
                  - AdditionPrice: 0.5
                    ModifierGroupId: "32"
                    Selected: true
                    VariationId: "4"
                    VariationName: Large
                  - AdditionPrice: 0.3
                    ModifierGroupId: "32"
                    Selected: true
                    VariationId: "5"
                    VariationName: Small
            Name: Veggies
        ReceiptNumber: "987"
        Variations:
          - Id: "4"
            Name: Large
            OptionGroupIds:
              - "1"
            PreferenceGroupIds:
              - "12"
              - "32"
            Price: 12.32
          - Id: "5"
            Name: Small
            OptionGroupIds:
              - "1"
            PreferenceGroupIds:
              - "32"
            Price: 8.99
      properties:
        Category:
          $ref: "#/components/schemas/CategoryResponse"
          description: Category of the menu item
        Description:
          description: Description of the menu item
          type: string
        HasPendingChange:
          description: Whether the item has pending changes
          type: boolean
        Id:
          description: Id of the menu item
          type: string
        IsDeal:
          description: Is a deal
          type: boolean
        Labels:
          description: Labels of the menu item
          items:
            type: string
          type: array
          uniqueItems: false
        Name:
          description: Name of the menu item
          type: string
        OptionGroups:
          description: Option groups of the menu item
          items:
            $ref: "#/components/schemas/ModifierGroupResponse"
          type: array
          uniqueItems: false
        PreferenceGroups:
          description: Preference groups of the menu item
          items:
            $ref: "#/components/schemas/ModifierGroupResponse"
          type: array
          uniqueItems: false
        ReceiptNumber:
          description: The receipt or kitchen number of the menu item
          type: string
        Variations:
          description: Variations applicable to the menu item
          items:
            $ref: "#/components/schemas/VariationResponse"
          type: array
          uniqueItems: false
      type: object
    MenuItemResponse:
      example:
        Description: It's a pizza
        HasPendingChange: true
        Id: "1"
        IsDeal: false
        Labels:
          - Vegetarian
        Name: Pizza
        ReceiptNumber: "123"
        Variations:
          - Id: "4"
            Name: Large
            OptionGroupIds:
              - "1"
            PreferenceGroupIds:
              - "12"
              - "32"
            Price: 12.32
          - Id: "5"
            Name: Small
            OptionGroupIds:
              - "1"
            PreferenceGroupIds:
              - "32"
            Price: 8.99
      properties:
        Description:
          description: Description of the menu item
          type: string
        HasPendingChange:
          description: Whether the item has pending changes
          type: boolean
        Id:
          description: Id of the menu item
          type: string
        IsDeal:
          description: Is a deal
          type: boolean
        Labels:
          description: Labels of the menu item
          items:
            type: string
          type: array
          uniqueItems: false
        Name:
          description: Name of the menu item
          type: string
        ReceiptNumber:
          description: The receipt or kitchen number of the menu item
          type: string
        Variations:
          description: Variations applicable to the menu item
          items:
            $ref: "#/components/schemas/VariationResponse"
          type: array
          uniqueItems: false
      type: object
    MenuItemVariationResponse:
      example:
        MenuItemId: "1"
        PreferenceGroupsIds:
          - 4
          - 5
        UnitsOfferedInDealGroup: 3
        VariationId: "9"
      properties:
        MenuItemId:
          description: Id of the menu item
          type: string
        PreferenceGroupsIds:
          description: List of Preference Group Ids
          items:
            format: int32
            type: integer
          type: array
          uniqueItems: false
        UnitsOfferedInDealGroup:
          description: Units offered in deal group
          format: int32
          type: integer
        VariationId:
          description: Id of the variation
          type: string
      type: object
    MenuModifier:
      example:
        additionPrice: 200
        id: "854600"
        maxChoices: 1
        minChoices: 0
        name: Stuffed Crust
      properties:
        additionPrice:
          description: Selecting this modifier will increase the base price of the variation by this amount in the minor unit of the currency.
          format: int32
          type: number
        id:
          description: A unique identifier relative to the menu for a modifier.
          type: string
        maxChoices:
          description: The maximum number of times this modifier can be chosen within a given modifier group.
          format: int32
          type: integer
        minChoices:
          description: The minimum number of times this modifier can be chosen within a given modifier group.
          format: int32
          type: integer
        name:
          description: The name of the modifier.
          type: string
      type: object
    MenuModifierGroup:
      example:
        id: 8547130-req-1
        maxChoices: 1
        minChoices: 1
        modifiers:
          - additionPrice: 0
            id: "854500"
            maxChoices: 1
            minChoices: 0
            name: Classic Crust
          - additionPrice: 200
            id: "854600"
            maxChoices: 1
            minChoices: 0
            name: Stuffed Crust
        name: Choose your crust
      properties:
        id:
          description: A unique identifier relative to the menu for a modifier group.
          type: string
        maxChoices:
          description: The maximum number of modifiers that must be selected to satisfy this modifier group.
          format: int32
          type: integer
        minChoices:
          description: The minimum number of modifiers that must be selected to satisfy this modifier group.
          format: int32
          type: integer
        modifiers:
          description: The modifiers that can be selected to satisfy this modifier group.
          items:
            $ref: "#/components/schemas/MenuModifier"
          type: array
        name:
          description: A name for the modifier group, usually phrased as a question, e.g. Would you like any extras?
          type: string
      type: object
    MenuRecommendationsRequest:
      description: Describes a request for dish recommendations for a particular restaurant menu.
      properties:
        orderRequestDetails:
          description: Defines the time and service type for which the order is requested.
          properties:
            dayOfWeek:
              description: The day of the week that the order is placed for.
              enum:
                - sunday
                - monday
                - tuesday
                - wednesday
                - thursday
                - friday
                - saturday
              type: string
            orderedForTime:
              description: |
                The time, local to restaurant, in ISO 8601 format, that the order is requested for. If the ordered for time is not known at the point of this request then the time should be the current local time.
              format: time
              type: string
            serviceType:
              description: The service type, "collection" or "delivery".
              enum:
                - collection
                - delivery
              type: string
          type: object
        restaurantId:
          description: The id of the restaurant that the recommendations are for.
          type: string
      required:
        - restaurantId
        - orderRequestDetails
      type: object
    MenuRecommendationsResponse:
      description: Contains menu dish recommendations.
      properties:
        themes:
          description: List of the themes of the recommendations, i.e. personal favourites, most popular, etc.
          items:
            properties:
              id:
                description: Unique identifier for the theme.
                type: string
              recommendations:
                description: List of dish recommendations for the theme.
                items:
                  properties:
                    confidence:
                      description: Recommendation confidence score.
                      format: double
                      type: number
                    productId:
                      description: ID of a product/dish being recommended.
                      type: string
                    type:
                      description: Describes the type of recommendation, i.e. popular, healthy.
                      type: string
                  type: object
                maxItems: 20
                minItems: 0
                type: array
            type: object
          maxItems: 10
          minItems: 0
          type: array
      required:
        - themes
      type: object
    MergedMenuCard:
      additionalProperties: false
      properties:
        categories:
          additionalProperties:
            $ref: "#/components/schemas/MenuCategory"
          description: Menu items of the restaurant with offline/online statuses grouped by category
          nullable: true
          type: object
      type: object
    MergedMenuResponse:
      additionalProperties: false
      properties:
        menuCard:
          $ref: "#/components/schemas/MergedMenuCard"
          description: Menu items of the restaurant with offline/online statuses grouped by category
      type: object
    MergedProduct:
      additionalProperties: false
      properties:
        id:
          description: The id of the product
          nullable: true
          type: string
        ids:
          deprecated: true
          description: Deprecated, not in use
          items:
            format: int32
            type: integer
          nullable: true
          type: array
        isOffline:
          description: Is this product offline?
          type: boolean
        name:
          description: Product name
          nullable: true
          type: string
      type: object
    MissingItem:
      additionalProperties: false
      properties:
        itemReference:
          description: Product reference of missing item
          nullable: true
          type: string
        name:
          description: Name of the missing item
          nullable: true
          type: string
        quantity:
          description: Number of items missing
          format: int32
          type: integer
        refundAmount:
          description: Total cost of missing item
          format: decimal
          type: number
      type: object
    MissingItemClaim:
      additionalProperties: false
      properties:
        id:
          description: Id of the missing item claim
          nullable: true
          type: string
        missingItems:
          description: Items that are missing
          items:
            $ref: "#/components/schemas/MissingItem"
          nullable: true
          type: array
        refundRefusedReasonCode:
          description: Reason for refusing if status is refused
          nullable: true
          type: string
        status:
          $ref: "#/components/schemas/MissingItemClaimStatus"
          description: Current status of the missing item claim
        totalAmount:
          description: Total cost of the claim
          format: decimal
          type: number
        totalNumberItems:
          description: Total quantity of items in the claim
          format: int32
          type: integer
      type: object
    MissingItemClaimStatus:
      description: Status of missing item claim
      enum:
        - Unknown
        - Pending
        - Viewed
        - RefundAccepted
        - RefundRefused
      type: string
    Modifier:
      properties:
        MaximumAdditionalModifiers:
          format: integer
          type: number
        ModifierId:
          type: string
        Name:
          type: string
        Quantity:
          format: integer
          type: number
        TotalPrice:
          format: decimal
          type: number
      required:
        - MaximumAdditionalModifiers
      type: object
    ModifierGroup:
      properties:
        MinimumChoices:
          format: integer
          type: number
        ModifierGroupId:
          type: string
        Modifiers:
          items:
            $ref: "#/components/schemas/Modifier"
          type: array
      required:
        - MinimumChoices
      type: object
    ModifierGroupResponse:
      example:
        Id: "1"
        MaxChoices: 3
        MinChoices: 0
        Modifiers:
          - Id: "9"
            Name: Ham
            Variations:
              - AdditionPrice: 0.5
                ModifierGroupId: "1"
                Selected: true
                VariationId: "4"
                VariationName: Large
          - Id: "10"
            Name: Sausage
            Variations:
              - AdditionPrice: 0.5
                ModifierGroupId: "1"
                Selected: true
                VariationId: "4"
                VariationName: Large
        Name: Toppings
      properties:
        Id:
          description: Id of Modifier Group
          type: string
        MaxChoices:
          description: The maximum number of options allowed to be selected
          format: int32
          type: integer
        MinChoices:
          description: The minimum number of options allowed to be selected
          format: int32
          type: integer
        Modifiers:
          description: A list of modifiers within the group
          items:
            $ref: "#/components/schemas/ModifierResponse"
          type: array
          uniqueItems: false
        Name:
          description: Name of Modifier Group
          type: string
      type: object
    ModifierResponse:
      example:
        Id: "9"
        Name: Ham
        Variations:
          - AdditionPrice: 0.5
            ModifierGroupId: "1"
            Selected: true
            VariationId: "4"
            VariationName: Large
      properties:
        AdditionPrice:
          description: The additional price
          format: double
          type: number
        DefaultChoices:
          description: The default number of options allowed to be selected
          format: int32
          type: integer
        Id:
          description: Id of the modifier
          type: string
        MaxChoices:
          description: The maximum number of options allowed to be selected
          format: int32
          type: integer
        MinChoices:
          description: The minimum number of options allowed to be selected
          format: int32
          type: integer
        Name:
          description: Name of the modifier
          type: string
        RemovePrice:
          description: The cost to remove
          format: double
          type: number
        Variations:
          description: The variations to which this modifiers applies
          items:
            $ref: "#/components/schemas/VariationModifierResponse"
          type: array
          uniqueItems: false
      type: object
    NotFoundMarketingResponse:
      $ref: "#/components/schemas/MarketingErrorResponse"
      description: 404 Not Found Returned
      example:
        errors:
          - description: Campaign Not found
            errorCode: "404"
        faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
        message: The requested resource could not found.
    Nutritional:
      example:
        alcohol:
          unit: "%"
          value: 7.5
        caffeine:
          unit: mg
          value: 10
        calories:
          unit: kcal
          value: 42
        carbohydrate:
          unit: mg
          value: 22000
        energy:
          unit: kJ
          value: 175.5
        fat:
          unit: mg
          value: 16000
        fattyAcidTotal:
          unit: mg
          value: 100
        protein:
          unit: mg
          value: 4000.01
        salt:
          unit: mg
          value: 20
        sodium:
          unit: mg
          value: 10
        sugar:
          unit: mg
          value: 9100
      properties:
        alcohol:
          description: Alcohol by volume value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
        caffeine:
          description: Caffeine milligram value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
        calories:
          description: Calories value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
        carbohydrate:
          description: Carbohydrate value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
        energy:
          description: Energy value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
        fat:
          description: Fat value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
        fattyAcidTotal:
          description: Fatty Acid value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
        protein:
          description: Protein value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
        salt:
          description: Salt value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
        sodium:
          description: Sodium value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
        sugar:
          description: Sugar value for product
          properties:
            unit:
              description: Unit of the item
              nullable: false
              type: string
            value:
              description: Value of the item
              nullable: true
              type: number
      type: object
    Offer:
      description: The object representing offer entry
      example:
        consumerSegment: All
        dayOfWeek: Monday
        discountAmount: 15
        discountType: Percent
        endTime: 09:00:00
        id: "1"
        offerType: Percent
        qualifyingValue:
          currency: GBP
          value: 1000
        startTime: 06:00:00
        validFrom: 2019-08-06T09:01:12.970Z
        validTo: 2019-09-03T00:00:00.000Z
      properties:
        campaignId:
          description: Campaign id
          nullable: true
          type: string
        consumerSegment:
          $ref: "#/components/schemas/PartnerConsumerSegment"
          description: Consumer Segment to which offer applies
          nullable: false
        dayOfWeek:
          description: Day of week to run the offer
          enum:
            - Sunday
            - Monday
            - Tuesday
            - Wednesday
            - Thursday
            - Friday
            - Saturday
          nullable: false
          type: string
        discountAmount:
          description: Amount of the discount
          format: double
          nullable: false
          type: number
        endTime:
          description: Timestamp when offer ends during the day
          format: time
          nullable: true
          type: string
        freeProducts:
          description: The product that gets 100% discount applied
          items:
            properties:
              id:
                description: The unique identifier of the product.
                nullable: false
                type: string
              modifiers:
                description: The collection of preselected modifiers for the item.
                items:
                  properties:
                    modifierId:
                      description: The unique identifier of the modifier.
                      nullable: false
                      type: string
                    quantity:
                      description: The required quantity of the modifier.
                      format: int32
                      nullable: false
                      type: integer
                  type: object
                nullable: true
                type: array
            type: object
          nullable: true
          type: array
        id:
          description: Internal id of the offer
          nullable: false
          type: string
        offerDescription:
          description: The description of the offer.
          nullable: true
          type: string
        offerType:
          $ref: "#/components/schemas/PartnerOfferType"
          description: Type of the offer
          nullable: false
        qualifyingProductIds:
          description: One of those products needed to be included in the collection of products to make offer applicable
          items:
            type: string
          nullable: true
          type: array
        qualifyingValue:
          description: Minimum qualifying value for offer to be applied
          nullable: true
          properties:
            currency:
              description: Currency code in ISO 4217 format
              nullable: false
              type: string
            value:
              description: Smallest unit of local currency
              format: int32
              nullable: false
              type: integer
          type: object
        startTime:
          description: Timestamp when offer starts during the day
          format: time
          nullable: true
          type: string
        validFrom:
          description: The date when offer starts
          format: date-time
          nullable: false
          type: string
        validTo:
          description: The date when offer ends
          format: date-time
          nullable: true
          type: string
      type: object
    OfferCampaign:
      example:
        active: true
        daysOfWeek:
          - Monday
          - Friday
        discountAmount: 15
        enabled: true
        end: 2019-09-03T00:00:00.000Z
        id: "1"
        qualifyingValue:
          currency: GBP
          value: 5000
        start: 2019-08-06T09:01:12.970Z
        subscribed: true
        type: CheekyCampaign
      properties:
        active:
          description: Calculated, is the campaign enabled and within start and end date
          readOnly: true
          type: boolean
        daysOfWeek:
          description: Days of week to run the campaign
          items:
            enum:
              - Sunday
              - Monday
              - Tuesday
              - Wednesday
              - Thursday
              - Friday
              - Saturday
            type: string
          nullable: false
          type: array
          uniqueItems: true
        discountAmount:
          description: Amount of the discount
          format: double
          nullable: false
          type: number
        enabled:
          description: Is the offer campaign allowed to be active
          nullable: false
          readOnly: false
          type: boolean
        end:
          description: The date when offer campaign ends
          format: date-time
          nullable: true
          readOnly: false
          type: string
        id:
          description: Internal id of the offer campaign
          type: string
        qualifyingValue:
          description: qualifying value for a given offer template
          nullable: false
          properties:
            currency:
              description: Currency code in ISO 4217 format
              nullable: false
              type: string
            value:
              description: Smallest unit of local currency
              format: int32
              nullable: false
              type: integer
          type: object
        start:
          description: The date when offer campaign starts
          format: date-time
          nullable: true
          readOnly: false
          type: string
        subscribed:
          description: Is restaurant subscribed to this campaign
          nullable: false
          readOnly: true
          type: boolean
        type:
          description: Type of the offer campaign
          enum:
            - CheekyCampaign
            - DonationCampaign
            - FastMovingGoodsCampaign
          nullable: false
          type: string
      type: object
    OfferTemplate:
      example:
        consumerSegment: All
        discountValue: 15
        id: 333
        maxQualifyingValue:
          currency: GBP
          value: 5000
        offerType: Percent
      properties:
        consumerSegment:
          $ref: "#/components/schemas/PartnerConsumerSegment"
          description: Consumer Segment that offer applies
          nullable: false
        discountValue:
          description: Amount of the discount
          format: double
          nullable: false
          type: number
        id:
          description: Internal id of the offer template
          format: int32
          nullable: false
          type: integer
        maxQualifyingValue:
          description: Maximum qualifying value for a given offer template
          nullable: false
          properties:
            currency:
              description: Currency code in ISO 4217 format
              type: string
            value:
              description: Smallest unit of local currency
              format: int32
              type: integer
          type: object
        offerType:
          $ref: "#/components/schemas/PartnerOfferType"
          description: Type of the offer
          nullable: false
      type: object
    OfflineItemsRequest:
      example:
        modifierIds:
          - "777"
          - "888"
          - "999"
        nextAvailableAt: 2021-01-01T05:00:00.0000000Z
        variationIds:
          - "111"
          - "222"
          - "333"
      properties:
        modifierIds:
          description: Modifier identifiers. Maximum sum of 25 Variation and Modifier IDs.
          items:
            type: string
          maxItems: 25
          minItems: 0
          type: array
        nextAvailableAt:
          description: Time when items will be brought back online (ISO-8601 Date Time UTC).
          format: date-time
          type: string
        variationIds:
          description: Variation identifiers. Maximum sum of 25 Variation and Modifier IDs.
          items:
            type: string
          maxItems: 25
          minItems: 0
          type: array
      type: object
    OfflineItemsResponse:
      example:
        id: "111"
        nextAvailableAt: 2021-01-01T05:00:00.0000000Z
        type: variation
      properties:
        id:
          description: Item identifier.
          items:
            type: string
          type: string
        nextAvailableAt:
          description: Time when item(s) will be brought back online (ISO-8601 Date Time UTC).
          format: date-time
          type: string
        type:
          description: Item type identifier.
          items:
            type: string
          type: string
      type: object
    OfflineProduct:
      properties:
        Name:
          type: string
        ProductId:
          type: string
      type: object
    OfflineProductsResponse:
      additionalProperties: false
      properties:
        offlineProducts:
          description: Array of men items which are offline currently
          items:
            $ref: "#/components/schemas/OrderpadOfflineProduct"
          nullable: true
          type: array
      type: object
    OfflineRestaurantsRequestModel:
      additionalProperties: false
      example:
        allowRestaurantOverride: true
        duration: 1:00:00
        name: Out of Chicken
        reason: No more chicken in stock.
        restaurantIds: "12345"
        startDate: 2020-01-16T09:00:00Z
      properties:
        allowRestaurantOverride:
          description: Whether a restaurant should be allowed to delete this event, regardless of who raised it.
          type: boolean
        category:
          deprecated: true
          description: A free text category used to group multiple events. This field is not intended to be used by clients.
          type: string
        duration:
          description: Either a timespan in the HH:mm format or `untilTomorrow` (this will be the next day at 4:30 am +/- 10 minutes local time). Note if both duration and `endDate` are specified duration takes precedence.
          type: string
        endDate:
          description: ISO 8601 format of the end datetime of the offline event.
          format: date-time
          minLength: 1
          nullable: true
          type: string
        legacyTempOfflineType:
          $ref: "#/components/schemas/LegacyTempOfflineStatus"
        name:
          description: Name of the offline event to be created.
          type: string
        reason:
          description: The reason for creating the offline event.
          type: string
        restaurantIds:
          description: A comma separated list of the IDs of the restaurants to include in the offline event. No limit to the number accepted by the endpoint, but unexpected behaviour mat occur at more than 500 IDs.
          type: string
        startDate:
          description: ISO 8601 format of the start datetime of the offline event.
          format: date-time
          minLength: 1
          type: string
      required:
        - restaurantIds
        - name
        - reason
        - startDate
        - allowRestaurantOverride
      type: object
    OnlineItemsRequest:
      example:
        modifierIds:
          - "777"
          - "888"
          - "999"
        variationIds:
          - "111"
          - "222"
          - "333"
      properties:
        modifierIds:
          description: Modifier identifiers. Maximum sum of 25 Variation and Modifier IDs.
          items:
            type: string
          maxItems: 25
          minItems: 0
          type: array
        variationIds:
          description: Variation identifiers. Maximum sum of 25 Variation and Modifier IDs.
          items:
            type: string
          maxItems: 25
          minItems: 0
          type: array
      type: object
    OptimizelyData:
      additionalProperties: false
      properties:
        cdnUrl:
          description: Location of the Optimizely data file
          nullable: true
          type: string
        dataFileRevision:
          description: The index of the Optimizely revision
          format: int32
          type: integer
      type: object
    OrderAcceptanceTimes:
      description: The acceptance times used to present the offer to the courier.
      properties:
        currentSystemTimestamp:
          description: The time the delivery offer was made to the courier.
          example: 1593444834
          format: integer
          type: number
        expirationTimestamp:
          description: The time when the offer to the courier will expire. Usually the courier has 60 seconds to accept a new offer.
          example: 1593444834
          format: integer
          type: number
        viewedTimestamp:
          description: The time the delivery offer was viewed by the courier
          example: 1593444834
          format: integer
          type: number
      type: object
    OrderAddressSuccessResponse:
      description: The response object after successfully updating an order address.
      example:
        address:
          - 123 Wye Avenue, Eaton
        city: Bristol
        email: user@email.com
        geoPosition:
          latitude: 456.123
          longitude: 123.456
        name: J.E.Hungerton
        orderable: true
        phoneNumber: "0123456789"
        polygonName: BS1 1AA
        postCode: BS1 1AA
        serviceType: delivery
      properties:
        address:
          description: An array of strings containing lines of the customer's order address.
          items:
            type: string
          nullable: false
          type: array
        city:
          description: String value containing the city name of the customer's order address.
          nullable: false
          type: string
        email:
          description: The customer's email address.
          nullable: false
          type: string
        geoPosition:
          allOf:
            - $ref: "#/components/schemas/OrderGeoPosition"
          description: Geoposition object containing latitude and longitude values for the customer's order address
          nullable: true
        name:
          description: The customer's name.
          nullable: false
          type: string
        phoneNumber:
          description: The customer's phone number.
          nullable: false
          type: string
        polygonName:
          description: String value containing the polygon name of customer's order address (in tenants with no polygon name, will be the same as postcode).
          nullable: false
          type: string
        postCode:
          description: String value containing the postcode of the customer's order address.
          nullable: false
          type: string
        serviceType:
          description: Service Type associated with the order details.
          enum:
            - delivery
            - collection
          nullable: false
          type: string
      type: object
    OrderCancelled:
      description: The order cancelled object holds the details of a cancelled order.
      properties:
        cancellationTime:
          description: Current timestamp for the cancelled order.
          example: 1593444834
          format: integer
          type: number
        collectJobStatus:
          $ref: "#/components/schemas/JobStatus"
          description: The collect job status for the cancelled order.
        courierId:
          description: Courier identifier for the cancelled order.
          example: 53c3afb5-fcs5-4941-be6d-2179f812sc8d
          type: string
        deliveryId:
          description: Deliver identifier for the cancelled order.
          example: 53c3afb5-fcs5-4941-be6d-2179f812sc8d
          type: string
        isAlcoholDelivery:
          description: The cancelled order contains alcoholic products when true.
          type: boolean
        isCashPayment:
          description: The cancelled order was cash payment when true.
          type: boolean
        orderNumber:
          description: Order number for the cancelled order.
          example: "10113445"
          type: string
        restaurantName:
          description: Restaurant name for the cancelled order.
          example: MacDonalds
          type: string
      type: object
    OrderClaim:
      description: Claim information
      example:
        affectedItems:
          - additionalContext: Potato skin was damaged
            decision: Rejected
            id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
            name: Potato skin
            quantity: 1
            reference: productid%4t56574596
            totalClaimed: 1900
            unitPrice: 2000
          - additionalContext: Pizza was damaged too
            decision: Accepted
            id: 123iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
            name: Pizza
            quantity: 1
            reference: productid%t5y6574596
            totalClaimed: 1900
            unitPrice: 2000
        currency: GBP
        expirationDate: 2020-05-22T14:22:11.1053368+00:00
        friendlyOrderReference: "451226580"
        id: 2f749442-a62a-abcd-8623-04202878e034
        issueType: Damaged
        orderId: r23tqoxdoeupdx9w8evorw
        resolution:
          decision: PartiallyAccepted
          resolvedChannel: PartnerCentre
          resolvedDate: 2020-05-28T06:40:48.1053368+00:00
          totalClaimedAccepted: 1900
        restaurantResponse:
          decision: PartiallyAccepted
          items:
            - decision: Rejected
              id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
            - decision: Accepted
              id: 123iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
          justification:
            comments: The food was packed properly
            reason: Other
        state: Closed
        submittedDate: 2020-05-20T14:22:11.1053368+00:00
        totalClaimed: 3800
      properties:
        affectedItems:
          description: Information about the claimed items
          items:
            $ref: "#/components/schemas/Item"
          nullable: true
          type: array
        currency:
          description: Name of currency in ISO 4217 format
          type: string
        expirationDate:
          description: Date when the claim will be accepted automatically in case the owner of the restaurant ignores it
          format: date-time
          type: string
        friendlyOrderReference:
          description: Just Eat friendly order reference
          type: string
        id:
          description: Claim identifier
          type: string
        issueType:
          description: Type of claim
          enum:
            - Missing
            - Damaged
            - Cold
            - LateOrder
            - FoodNotArrived
          type: string
        orderId:
          description: Just Eat order identifier
          type: string
        resolution:
          $ref: "#/components/schemas/ClaimResolution"
          description: Representation of the claim resolution
        restaurantResponse:
          $ref: "#/components/schemas/OrderClaimRestaurantResponse"
          description: Restaurant response on the claim
          type: object
        state:
          description: Indicates whether a decision about the claim was made
          enum:
            - Open
            - Closed
          type: string
        submittedDate:
          description: Date when the claim was submitted
          format: date-time
          type: string
        totalClaimed:
          description: Total claimed money in smallest unit of relevant currency
          type: number
      type: object
    OrderClaimRestaurantResponse:
      description: Restaurant response for the claim
      example:
        decision: PartiallyAccepted
        items:
          - decision: Accepted
            id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
          - decision: Rejected
            id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc3
        justification:
          comments: The food was packed properly
          reason: Other
      nullable: true
      properties:
        decision:
          description: Decision on the claim
          enum:
            - Accepted
            - Rejected
            - PartiallyAccepted
          type: string
        items:
          description: Decisions on the items of a claim
          items:
            $ref: "#/components/schemas/ItemDecision"
          nullable: true
          type: array
        justification:
          $ref: "#/components/schemas/Justification"
          description: Reasons why of the decision for the claim
      type: object
    OrderEligibleForRestaurantCompensation:
      example:
        IsEligible: true
        OrderId: c9639af6-04a3-4376-bb4b-5e95cc8b80eb
      properties:
        IsEligible:
          description: Flag that informs if the cancelled order is eligible for compensation
          type: boolean
        OrderId:
          description: Id for the order
          type: string
      type: object
    OrderGeoPosition:
      description: Geoposition object containing latitude and longitude values.
      properties:
        latitude:
          description: The latitude value of the customer's Geoposition.
          format: decimal
          type: number
        longitude:
          description: The longitude value of the customer's Geoposition.
          format: decimal
          type: number
      type: object
    OrderHistoryItem:
      additionalProperties: false
      properties:
        detail:
          description: Additional information about status update
          nullable: true
          type: string
        occurredAt:
          description: ISO 8601 Date/Time of status update
          format: date-time
          type: string
        orderState:
          $ref: "#/components/schemas/ClientOrderState"
          description: State order was set to
        updatedBy:
          description: User who made the status update
          nullable: true
          type: string
      type: object
    OrderItem:
      additionalProperties: false
      properties:
        basketIds:
          description: Array of basket id's that make up the item. Can be multiple due to Zeus' grouping of items
          items:
            type: string
          nullable: true
          type: array
        comment:
          description: Additional comments
          nullable: true
          type: string
        id:
          description: Basket Id of the order item
          nullable: true
          type: string
        itemReference:
          description: Item reference uniquely identifying a product on the menu but not basket instance of a product
          nullable: true
          type: string
        menuIdentifier:
          description: Just Eat menu identifier
          nullable: true
          type: string
        menuNumber:
          description: Just Eat menu number
          nullable: true
          type: string
        name:
          description: Name of the item
          nullable: true
          type: string
        orderItemAccessories:
          description: Array of accessories for this item
          items:
            $ref: "#/components/schemas/OrderItemAccessory"
          nullable: true
          type: array
        orderItems:
          description: Array of sub items for this item
          items:
            $ref: "#/components/schemas/OrderItem"
          nullable: true
          type: array
        productCategory:
          description: Just Eat product category
          nullable: true
          type: string
        productTypeId:
          description: Just Eat product type id
          format: int32
          type: integer
        quantity:
          description: Quantity of the item
          format: int32
          type: integer
        totalPrice:
          description: Total price of this item
          format: decimal
          type: number
      type: object
    OrderItemAccessory:
      additionalProperties: false
      properties:
        accessoryName:
          description: Name of the accessory
          nullable: true
          type: string
        groupId:
          description: Group id of the accessory
          format: int32
          type: integer
        id:
          description: Id of the accessory
          nullable: true
          type: string
        itemReference:
          description: Item reference uniquely identifying a product on the menu but not basket instance of a product
          nullable: true
          type: string
        name:
          description: Name of the accessory
          nullable: true
          type: string
        quantity:
          description: Quantity of accessories
          format: int32
          type: integer
        totalPrice:
          description: Total price of the accessory
          format: decimal
          type: number
      type: object
    OrderNumberValidity:
      additionalProperties: false
      properties:
        ComparisonOperator:
          description: The comparison operator (e.g. >, <, ==)
          nullable: true
          type: string
        NumberOfOrders:
          description: The number of orders for the comparison
          format: int32
          type: integer
      type: object
    OrderPadClientOrder:
      additionalProperties: false
      properties:
        acceptedAt:
          description: ISO 8601 Date/Time order was accepted by the restaurant
          format: date-time
          type: string
        acceptedFor:
          description: ISO 8601 Date/Time time due at the point of acceptance
          format: date-time
          type: string
        addressLines:
          description: Customer address
          items:
            type: string
          nullable: true
          type: array
        asSoonAsPossible:
          description: Will be false if order was a preorder
          type: boolean
        attemptedDeliveryQuery:
          $ref: "#/components/schemas/AttemptedDeliveryQuery"
          description: Details of any attempted delivery query attached to the order
          nullable: true
        badItemClaims:
          description: A list of bad item claims attached to the order
          items:
            $ref: "#/components/schemas/BadItemClaim"
          nullable: true
          type: array
        cancellationInfo:
          $ref: "#/components/schemas/CancellationInfo"
          description: Details of any cancellation attached to the order
          nullable: true
        cancelledAt:
          description: ISO 8601 Date/Time order was cancelled
          format: date-time
          type: string
        city:
          description: Customer city
          nullable: true
          type: string
        customerId:
          description: Platform customer id
          nullable: true
          type: string
        customerNote:
          description: Customer added notes
          nullable: true
          type: string
        deliveredAt:
          description: ISO 8601 Date/Time order was delivered
          format: date-time
          nullable: true
          type: string
        deliveryDriverInfo:
          $ref: "#/components/schemas/DeliveryDriverInfo"
          description: Delivery driver information
          nullable: true
        deliveryDriverUsername:
          description: Delivery drivers user name (usually their phone number)
          nullable: true
          type: string
        deliveryNote:
          description: Delivery specific notes
          nullable: true
          type: string
        eposState:
          $ref: "#/components/schemas/EposState"
          description: Current state of sending the order to the restaurants EPOS system
        estimatedDeliveryTimeInSeconds:
          description: How long until order will be delivered in seconds (RDS only)
          format: int32
          type: integer
        estimatedHandoverTimeInSeconds:
          description: How long until order needs to be handed over to driver in seconds (RDS only)
          format: int32
          type: integer
        externalCustomerId:
          description: Customer id restaurants can use to identify customer
          nullable: true
          type: string
        id:
          description: Id used to identify the order in Zeus
          nullable: true
          type: string
        isPreorder:
          description: Whether order is a preorder
          type: boolean
        isRdsOrder:
          description: Will be true if delivery is being arranged by Just Eat
          type: boolean
        lateOrderCompensationQuery:
          $ref: "#/components/schemas/LateOrderCompensationQuery"
          description: Details of any late order compensation query attached to the order
          nullable: true
        lateOrderInfo:
          $ref: "#/components/schemas/LateOrderInfo"
          description: Details of any late order query attached to the order
          nullable: true
        location:
          $ref: "#/components/schemas/GeoLocation"
          description: Geo location of the customers address
          nullable: true
        missingItemClaims:
          description: A list of missing item claims attached to the order
          items:
            $ref: "#/components/schemas/MissingItemClaim"
          nullable: true
          type: array
        modernId:
          description: Just Eat modern order id
          nullable: true
          type: string
        name:
          description: Customer name
          nullable: true
          type: string
        notes:
          description: General order notes
          nullable: true
          type: string
        orderHistory:
          description: Ordered history of status updates to the order and when they happened
          items:
            $ref: "#/components/schemas/OrderHistoryItem"
          nullable: true
          type: array
        orderItems:
          description: A list of order items
          items:
            $ref: "#/components/schemas/OrderItem"
          nullable: true
          type: array
        orderState:
          $ref: "#/components/schemas/ClientOrderState"
          description: Current state of the order
        orderType:
          $ref: "#/components/schemas/OrderType"
          description: Type of order (collection or delivery)
        paymentInfo:
          $ref: "#/components/schemas/PaymentInfo"
          description: Payment details for the order
          nullable: true
        phone:
          description: Customer phone number (will be phone masking number in markets when enabled)
          nullable: true
          type: string
        phoneMaskingCode:
          description: Code to use when calling customer phone masking number about this order
          nullable: true
          type: string
        postcode:
          description: Customer postcode
          nullable: true
          type: string
        preferredTimeDue:
          description: Current agreed delivery time of the order
          format: date-time
          type: string
        prepareOrderFor:
          description: ISO 8601 Date/Time when order should be prepared for
          format: date-time
          nullable: true
          type: string
        previousOrders:
          description: Number of previous Just Eat orders by the customer
          nullable: true
          type: string
        previousOrdersToRestaurant:
          description: Number of previous orders by the customer to this restaurant
          nullable: true
          type: string
        rdsPickupTime:
          description: ISO 8601 Date/Time when order will be picked up by RDS partner
          format: date-time
          nullable: true
          type: string
        receivedAt:
          description: ISO 8601 Date/Time order was paid
          format: date-time
          type: string
        restaurantId:
          description: Restaurant Id of the order
          nullable: true
          type: string
        restaurantInformation:
          $ref: "#/components/schemas/RestaurantInfo"
          description: Restaurant information for the order
          nullable: true
        sourcePartner:
          $ref: "#/components/schemas/PartnerInfo"
          description: Information about the source of the order (Just Eat, Third Party etc.)
          nullable: true
        startOrderPreparationAt:
          description: ISO 8601 Date/Time for restaurant to start preparing the order
          format: date-time
          nullable: true
          type: string
        timeDue:
          description: Current agreed delivery time of the order
          format: date-time
          type: string
        withDriverAt:
          description: ISO 8601 Date/Time order was handed over to driver
          format: date-time
          nullable: true
          type: string
      type: object
    OrderStateChange:
      additionalProperties: false
      properties:
        newState:
          $ref: "#/components/schemas/ClientOrderState"
          description: New order state
        timeAcceptedFor:
          description: If accepting order what date time (with offset) are you accepting it for
          format: date-time
          type: string
      required:
        - newState
      type: object
    OrderTimeSuccessResponse:
      description: The response object for successful updates to order time.
      example:
        asap: true
        dateTime: 2020-02-05T16:26:30+0000
        orderable: true
        utcOrderTime: 2020-02-05T16:26:30+0000
      properties:
        asap:
          description: True if the user has selected as soon as possible on the order, else false
          nullable: false
          type: boolean
        dateTime:
          description: The time the customer has requested their order for.
          nullable: false
          type: string
        orderable:
          description: Boolean value indicating whether the current basket is orderable.
          nullable: false
          type: boolean
        utcOrderTime:
          description: The time (in UTC) the customer has requested their order for
          nullable: false
          type: string
      type: object
    OrderType:
      description: Type of order
      enum:
        - Collection
        - Delivery
        - Unknown
      type: string
    OrderpadMenuItem:
      additionalProperties: false
      properties:
        id:
          description: The id of the menu item
          nullable: true
          type: string
        isOutOfStock:
          description: Is this menu item out of stock
          type: boolean
        name:
          description: Name of the menu item
          nullable: true
          type: string
      type: object
    OrderpadOfflineProduct:
      additionalProperties: false
      properties:
        createdBy:
          description: Application which requested operation e.g. Orderpad, RestaurantApp
          nullable: true
          type: string
        createdOn:
          description: Date and time in ISO 8601 format taken offline
          format: date-time
          type: string
        nextAvailableAt:
          description: Date and time in ISO 8601 format when item will be brought back online
          format: date-time
          nullable: true
          type: string
        productId:
          description: The id of the menu item
          nullable: true
          type: string
        restaurantId:
          description: The Id of the restaurant
          format: int32
          type: integer
      type: object
    OrderpadSetupType:
      description: Type of order pad set up
      enum:
        - Unknown
        - SignUp
        - Upgrade
        - Swap
      type: string
    OrdersData:
      additionalProperties: false
      properties:
        unreceivedOrders:
          description: List of all changed orders for a restaurant
          items:
            type: string
          nullable: true
          type: array
      type: object
    PagedAfterOnlyCursorResponse:
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
      properties:
        paging:
          description: Consists of pagination information.
          properties:
            cursors:
              description: Consists of cursors markers used in forward only pagination.
              properties:
                after:
                  description: Cursor parameter to use in the next request to the resource to fetch the next page of data.
                  type: string
              type: object
          type: object
      type: object
    PagedAvailabilitiesResponse:
      allOf:
        - $ref: "#/components/schemas/PagedAfterOnlyCursorResponse"
        - properties:
            availabilities:
              description: List of availabilities for a given restaurant's menu.
              items:
                $ref: "#/components/schemas/Availability"
              type: array
          type: object
      example:
        availabilities:
          - description: Menu items available for delivery during weekdays for lunch.
            id: 1-lunch-delivery
            name: Delivery Lunch
            serviceTypes:
              - delivery
            times:
              - daysOfTheWeek:
                  - monday
                  - tuesday
                  - wednesday
                  - thursday
                  - friday
                  - saturday
                  - sunday
                fromDateTime: 11:30:00
                toDateTime: 14:30:00
          - description: Menu items available for delivery during weekdays for dinner.
            id: 1-dinner-delivery
            name: Delivery Dinner
            serviceTypes:
              - delivery
            times:
              - daysOfTheWeek:
                  - monday
                  - tuesday
                  - wednesday
                  - thursday
                  - friday
                  - saturday
                  - sunday
                fromDateTime: 16:30:00
                toDateTime: 22:00:00
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    PagedCategoriesResponse:
      allOf:
        - $ref: "#/components/schemas/PagedAfterOnlyCursorResponse"
        - properties:
            categories:
              description: List of categories for a given restaurant's menu.
              items:
                $ref: "#/components/schemas/CategoryBase"
              type: array
          type: object
      example:
        categories:
          - description: Sumptuous starters
            id: "3"
            name: Starters
          - description: Magnificent mains
            id: "4"
            name: Mains
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    PagedCategoryItemsResponse:
      allOf:
        - $ref: "#/components/schemas/PagedAfterOnlyCursorResponse"
        - properties:
            itemIds:
              description: List of item IDs which are assigned to the specified category
              items:
                type: string
              type: array
          type: object
      example:
        itemIds:
          - "65143901"
          - "65143902"
          - "65143903"
          - "65143904"
          - "65143905"
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    PagedDealItemVariationResponse:
      allOf:
        - $ref: "#/components/schemas/PagedAfterOnlyCursorResponse"
        - properties:
            dealItemVariations:
              description: List of deal item variations which form the specified deal group
              items:
                $ref: "#/components/schemas/DealItemVariation"
              type: array
          type: object
      example:
        dealItemVariations:
          - additionPrice: 50
            dealItemVariationId: "8548153"
            maxChoices: 1
            minChoices: 0
          - additionPrice: 100
            dealItemVariationId: "8548153"
            maxChoices: 2
            minChoices: 1
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    PagedFoodSafetyResponse:
      allOf:
        - $ref: "#/components/schemas/PagedAfterOnlyCursorResponse"
        - properties:
            data:
              description: List of Products with food safety data.
              items:
                $ref: "#/components/schemas/ProductFoodSafety"
              maxItems: 500
              minItems: 0
              type: array
          type: object
      example:
        data:
          - additives:
              - code: "10.2"
            allergens:
              - code: A
            id: RRR3PRE
            ingredients:
              - wasser
            manufacturer:
              brand: Coca-Cola Zero
              city: Anderlecht
              manufacturer: Coca-Cola Erfrischungsgetränke AG, Postfach 67 01 56, 10207 Berlin
              origin: Deutschland
              postalCode: "1070"
              streetAddress: Bergense Steenweg 1424
            nutritional:
              alcohol:
                unit: "%"
                value: 7.5
              caffeine:
                unit: mg
                value: 10
              calories:
                unit: kcal
                value: 42
              carbohydrate:
                unit: mg
                value: 22000
              energy:
                unit: kJ
                value: 175.5
              fat:
                unit: mg
                value: 16000
              fattyAcidTotal:
                unit: mg
                value: 100
              protein:
                unit: mg
                value: 4000.01
              salt:
                unit: mg
                value: 20
              sodium:
                unit: mg
                value: 10
              sugar:
                unit: mg
                value: 9100
            storage:
              stgInstruction: Example
            type: product
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw==
    PagedMenuDealGroupsResponse:
      allOf:
        - $ref: "#/components/schemas/PagedAfterOnlyCursorResponse"
        - properties:
            dealGroups:
              description: List of deal groups for the given menu item on the given restaurant's menu
              items:
                $ref: "#/components/schemas/MenuDealGroupBase"
              type: array
          type: object
      example:
        dealGroups:
          - id: 23435309-1
            name: Choose your base
            numberOfChoices: 1
          - id: 23435309-2
            name: Choose your halves
            numberOfChoices: 2
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    PagedMenuItemsResponse:
      allOf:
        - $ref: "#/components/schemas/PagedAfterOnlyCursorResponse"
        - properties:
            items:
              description: List of menu items for a given restaurant's menu.
              items:
                $ref: "#/components/schemas/MenuItemBase"
              type: array
          type: object
      example:
        items:
          - description: ""
            id: "65143901"
            labels: []
            name: Flat Bread and Dips (Pick any 2 Dips)
            requireOtherProducts: false
            type: menuItem
          - description: ""
            id: "8547130"
            labels: []
            name: Margherita
            requireOtherProducts: true
            type: menuItem
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    PagedMenuModifierGroupsResponse:
      allOf:
        - $ref: "#/components/schemas/PagedAfterOnlyCursorResponse"
        - properties:
            modifierGroups:
              description: List of modifier groups for the given menu item on the given restaurant's menu
              items:
                $ref: "#/components/schemas/MenuModifierGroup"
              type: array
          type: object
      example:
        modifierGroups:
          - id: 8547130-req-1
            maxChoices: 1
            minChoices: 1
            modifiers:
              - additionPrice: 0
                id: "854500"
                maxChoices: 1
                minChoices: 0
                name: Classic Crust
              - additionPrice: 200
                id: "854600"
                maxChoices: 1
                minChoices: 0
                name: Stuffed Crust
            name: Choose your crust
          - id: 8547130-opt-1
            maxChoices: 10
            minChoices: 0
            modifiers:
              - additionPrice: 50
                id: "1000"
                maxChoices: 2
                minChoices: 0
                name: Mozzarella Cheese
              - additionPrice: 50
                id: "1001"
                maxChoices: 1
                minChoices: 0
                name: Ham
              - additionPrice: 50
                id: "1002"
                maxChoices: 1
                minChoices: 0
                name: Red Onion
              - additionPrice: 50
                id: "1003"
                maxChoices: 1
                minChoices: 0
                name: Pepperoni
              - additionPrice: 50
                id: "1004"
                maxChoices: 1
                minChoices: 0
                name: Olives
            name: Any extra toppings?
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    PagedVariationsResponse:
      allOf:
        - $ref: "#/components/schemas/PagedAfterOnlyCursorResponse"
        - properties:
            variations:
              description: List of variations for the given menu item on the given restaurant's menu
              items:
                $ref: "#/components/schemas/Variation"
              type: array
          type: object
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
        variations:
          - availabilityIds:
              - 1-lunch-delivery
              - 2-lunch-collection
              - 3-dinner-delivery
              - 4-dinner-collection
            basePrice: 500
            dealGroupsIds: []
            dealOnly: true
            id: "8547121"
            kitchenNumber: "100"
            modifierGroupsIds:
              - 8547130-opt-1
            name: Half
            type: variation
          - availabilityIds:
              - 1-lunch-delivery
              - 2-lunch-collection
              - 3-dinner-delivery
              - 4-dinner-collection
            basePrice: 1000
            dealGroupsIds: []
            dealOnly: false
            id: "8547130"
            kitchenNumber: "100"
            modifierGroupsIds:
              - 8547130-req-1
              - 8547130-opt-1
            name: 12 inch
            type: variation
          - availabilityIds:
              - 1-lunch-delivery-weekday
              - 2-lunch-collection-weekday
              - 3-dinner-delivery-weekday
              - 4-dinner-collection-weekday
            basePrice: 1200
            dealGroupsIds: []
            dealOnly: true
            id: "8543123"
            kitchenNumber: "200"
            modifierGroupsIds:
              - 8547130-req-1
              - 8547130-opt-1
            name: 14 inch
            type: variation
    PartnerConsumerSegment:
      enum:
        - All
        - NewToRestaurant
      type: string
    PartnerInfo:
      additionalProperties: false
      properties:
        friendlyOrderReference:
          description: Friendly order reference
          nullable: true
          type: string
        orderReference:
          description: Reference that partner uses to identify the order
          nullable: true
          type: string
        partnerId:
          description: Partner id of the source
          nullable: true
          type: string
        partnerName:
          description: Partner name of the source
          nullable: true
          type: string
        source:
          description: Where did the order originate (Just Eat, third party etc.)
          nullable: true
          type: string
      type: object
    PartnerOfferType:
      enum:
        - Percent
        - FreeItem
        - Bogof
        - StampCard
      type: string
    PasswordResetFlowResponse:
      example:
        email: example@just-eat.com
        globalUserId: 8It2lEaJjG82nJtxO00Iab0CoF0=
      properties:
        email:
          description: The consumer's email address.
          type: string
        globalUserId:
          description: Global identifier for consumer and tenant.
          type: string
      type: object
    PaymentDirectives:
      description: The directives for payment component
      properties:
        DisableCashPayment:
          description: Indicates if cash payment option should be disabled
          type: boolean
      type: object
    PaymentInfo:
      additionalProperties: false
      properties:
        accountCreditAmount:
          description: Total amount paid for with account credit
          format: decimal
          type: number
        cardAmount:
          description: Amount paid by card
          format: decimal
          type: number
        cardFee:
          description: Card fee for the order
          format: decimal
          type: number
        cardNumberLast4Digits:
          description: Last 4 digits of the payment card
          nullable: true
          type: string
        currency:
          description: Name of the currency used for the order
          nullable: true
          type: string
        deliveryCharge:
          description: Amount of cost that comes from delivery
          format: decimal
          type: number
        discount:
          description: Total amount of discount
          format: decimal
          type: number
        discountSource:
          description: Source of discount (i.e. Just Eat or restaurant funded)
          nullable: true
          type: string
        feeText:
          description: Type of fee (`spanner`, `card`, `servicecharge`)
          nullable: true
          type: string
        isCashPayment:
          description: Is it a cash order
          type: boolean
        leftToPay:
          description: Amount left for customer to pay in cash after all vouchers and discounts removed from total
          format: decimal
          type: number
        taxes:
          additionalProperties:
            format: decimal
            type: number
          description: Tax information for the order
          nullable: true
          type: object
        totalPrice:
          description: Total price of the order
          format: decimal
          type: number
        voucherAmount:
          description: Total amount paid for with a voucher
          format: decimal
          type: number
      type: object
    Percent:
      allOf:
        - $ref: "#/components/schemas/ActiveConsumerOffer"
        - additionalProperties: false
          properties:
            amount:
              description: The percentage value discount
              format: decimal
              type: number
            maxQualifyingValue:
              description: The maximum order value required to be eligible for the offer
              format: decimal
              type: number
            qualifyingValue:
              description: The minimum order value required to be eligible for the Offer
              format: decimal
              type: number
          type: object
    PolicyEligibility:
      additionalProperties: false
      properties:
        code:
          description: Policy rule name
          enum:
            - BlockBlacklistedRestaurants
            - BlockCashCancellationBlacklistedRestaurants
            - BlockCashOrders
            - CashCancellationsAreWithinAllowedThreshold
            - CashOrderInTheWindowAfterAcceptance
            - MaxCancellationsPerCustomer
            - MaxCancellationsPerRestaurant
            - EvaluateMaxOrderValue
            - NotInTheWindowAfterAcceptance
            - OrderCancelledStatePolicy
            - IsRestaurantCancellationCapable
          nullable: true
          type: string
        passed:
          description: Passed or not
          type: boolean
      type: object
    PolicyFee:
      additionalProperties: false
      properties:
        amount:
          description: Amount to be returned in local currency
          format: decimal
          type: number
        justificationCode:
          description: Justification code
          enum:
            - CancellationOutsideWindow
            - UnChargeableReason
            - EmptyAcceptedAt
            - CancellationInsideWindow
          nullable: true
          type: string
        percentage:
          description: Percentage to be returned
          format: decimal
          type: number
      type: object
    PolicyOutcome:
      additionalProperties: false
      properties:
        decision:
          description: Decision after policy run
          enum:
            - Offered
            - Declined
          nullable: true
          type: string
        fee:
          $ref: "#/components/schemas/PolicyFee"
          description: Fee details after the policy run
      type: object
    PolicyResult:
      additionalProperties: false
      properties:
        eligibility:
          description: Eligibility details
          items:
            $ref: "#/components/schemas/PolicyEligibility"
          nullable: true
          type: array
        outcome:
          $ref: "#/components/schemas/PolicyOutcome"
          description: Result of the policy run
      type: object
    PredictiveSearchRequest:
      example:
        location: BS1
        restaurants:
          - restaurantId: "1234"
          - menuId: "678"
            restaurantId: "1235"
        searchTerm: Pizza
      properties:
        location:
          description: User's location
          type: string
        restaurants:
          description: Restaurants that can be included in the search
          items:
            $ref: "#/components/schemas/RequestRestaurant"
          maxItems: 2000
          type: array
          uniqueItems: true
        searchTerm:
          description: User's search term - at least one character required
          minLength: 1
          type: string
      required:
        - searchTerm
        - restaurants
      type: object
    PredictiveSearchResponse:
      example:
        suggestions:
          - category: Restaurant
            suggestedTerm: Pizza Palace
          - category: Cuisine
            suggestedTerm: Pizza
          - category: Dish
            suggestedTerm: Large Hawaiian
      properties:
        suggestions:
          description: Ordered list of suggested term completions
          items:
            $ref: "#/components/schemas/PredictiveSearchResponseItem"
          maxItems: 10
          type: array
          uniqueItems: false
      type: object
    PredictiveSearchResponseItem:
      example:
        category: Restaurant
        suggestedTerm: Pizza Palace
      properties:
        category:
          description: Grouping to which term belongs
          enum:
            - Restaurant
            - Cuisine
            - Dish
          type: string
        suggestedTerm:
          description: Suggested search term
          type: string
      type: object
    Product:
      properties:
        BasketProductIds:
          items:
            type: string
          type: array
        CategoryId:
          type: string
        ModifierGroups:
          items:
            $ref: "#/components/schemas/ModifierGroup"
          nullable: true
          type: array
        Name:
          type: string
        ProductId:
          type: string
        Quantity:
          format: integer
          type: number
        RemovedIngredients:
          items:
            $ref: "#/components/schemas/RemovedIngredient"
          nullable: true
          type: array
        TotalPrice:
          format: decimal
          type: number
        Variation:
          nullable: true
          type: string
      type: object
    ProductFoodSafety:
      additionalProperties: false
      properties:
        additives:
          description: List of additives
          items:
            $ref: "#/components/schemas/Additive"
          maxItems: 26
          minItems: 0
          nullable: false
          type: array
        allergens:
          description: List of allergens
          items:
            $ref: "#/components/schemas/Allergen"
          maxItems: 29
          minItems: 0
          nullable: false
          type: array
        id:
          description: Encrypted Product/Addon Id
          nullable: false
          type: string
        ingredients:
          description: List of ingredients
          items:
            $ref: "#/components/schemas/Ingredients"
          maxItems: 80
          minItems: 0
          nullable: false
          type: array
        manufacturer:
          allOf:
            - $ref: "#/components/schemas/Manufacturer"
          description: Object for manufacturer data
          nullable: false
          type: object
        nutritional:
          allOf:
            - $ref: "#/components/schemas/Nutritional"
          description: Object for nutritional data
          nullable: false
          type: object
        storage:
          allOf:
            - $ref: "#/components/schemas/Storage"
          description: Object for storage data
          nullable: false
          type: object
        type:
          description: Product or Addon
          nullable: false
          type: string
      type: object
    ProductGroup:
      additionalProperties: false
      properties:
        products:
          description: List of products
          items:
            $ref: "#/components/schemas/MergedProduct"
          nullable: true
          type: array
      type: object
    ProductRecommendationsResponse:
      description: Contains all recommendations for a product.
      properties:
        recommendations:
          description: Gets or sets an array of products that are recommended for the source product.
          items:
            description: Contains information for a single recommended product.
            properties:
              confidence:
                description: Gets or sets the confidence level of this recommendation (between 0 and 1).
                format: double
                type: number
              imageUrl:
                description: The URL of the image, if available, to display with the view
                type: string
              productId:
                description: Gets or sets the id of the product that is being recommended.
                type: string
            type: object
          type: array
        renderWithView:
          description: "Gets or sets the name of the UI component that the client should use to display the recommendations,\r

            which is taken from the experiment data for the user."
          type: string
        restaurantId:
          description: Gets or sets the restaurant id
          type: string
      type: object
    ProductWithOfflineStatus:
      description: Product.
      example:
        CategoryIds:
          - "1"
        Description: ""
        Id: "111"
        IsOffline: false
        Name: Coca-Cola 0.33L
        NextAvailableAt: null
        Price:
          CurrencyCode: GBP
          Value: 99
      properties:
        CategoryIds:
          description: List of Category IDs this product belongs to.
          items:
            type: string
          type: array
        Description:
          description: Product description.
          type: string
        Id:
          description: Product identifier.
          type: string
        IsOffline:
          description: True if this Product is not available to purchase.
          type: boolean
        Name:
          description: Product name.
          type: string
        NextAvailableAt:
          description: Time when product will be brought back online.
          format: date-time
          nullable: true
          type: string
        Price:
          description: The price of this Product.
          properties:
            CurrencyCode:
              description: The currency of this Price in ISO 4217 format.
              type: string
            Value:
              description: The value of this Price in the minor unit of the currency.
              format: integer
              type: number
          type: object
      type: object
    ProductsResponse:
      example:
        Paging:
          Cursors:
            After: NDMyNzQyODI3OTQw
        Products:
          - CategoryIds:
              - "1"
            Description: ""
            Id: "111"
            IsOffline: false
            Name: Coca-Cola 0.33L
            NextAvailableAt: null
            Price:
              CurrencyCode: GBP
              Value: 99
          - CategoryIds:
              - "1"
            Description: ""
            Id: "112"
            IsOffline: false
            Name: Coca-Cola 1.5L
            NextAvailableAt: null
            Price:
              CurrencyCode: GBP
              Value: 199
          - CategoryIds:
              - "2"
            Description: ""
            Id: "222"
            IsOffline: true
            Name: Chicken & Sweetcorn Soup
            NextAvailableAt: 2019-11-23T11:00:00+01:00
            Price:
              CurrencyCode: GBP
              Value: 299
      properties:
        Paging:
          description: Consists of pagination information.
          properties:
            Cursors:
              description: Consists of cursors markers used in pagination.
              properties:
                After:
                  description: The value should be used in the query parameter named after. It is used as a cursor of the last returned record in the previous request, from which next offset going to be fetched. A missing or empty value indicates that the end of the result set has been reached.
                  type: string
              type: object
          type: object
        Products:
          description: List of products for a given restaurant.
          items:
            $ref: "#/components/schemas/ProductWithOfflineStatus"
          type: array
      type: object
    PromotedPlacementActivePlacement:
      additionalProperties: true
      example:
        availableActions:
          - adjustBudget
          - resume
          - cancel
        deliveryArea: NW6
        placementId: "100005"
        purchaseDate: 2021-01-01T14:45:00Z
        status:
          pause:
            code: paused
            pauseDate: 2021-01-14T12:02:32Z
            resumeDate: 2021-02-12T00:00:00Z
        weeklyBudget:
          maximumAllowable: 100000
          minimumAllowable: 500
          recommended: 13000
          remaining: 5000
          total: 13000
      nullable: false
      properties:
        availableActions:
          description: A list of the currently supported actions for this placement.
          items:
            enum:
              - adjustBudget
              - cancel
              - pause
              - resume
              - undoCancel
            type: string
          type: array
        deliveryArea:
          description: The postcode or location that the placement applies to.
          nullable: false
          type: string
        placementId:
          description: The unique identifier of the placement.
          nullable: false
          type: string
        purchaseDate:
          description: The UTC date and time at which this placement was purchased.
          format: date-time
          nullable: false
          type: string
        status:
          description: Contains status information for different aspects of this placement. 'normal' status is assumed if no additional status information is available.
          properties:
            budget:
              additionalProperties: true
              description: The budget status of this placement.
              nullable: false
              properties:
                code:
                  description: The status code that describes this placement's current budget status.
                  enum:
                    - budgetLow
                    - budgetExhausted
                  nullable: false
                  type: string
              required:
                - code
            contract:
              additionalProperties: true
              description: The status of this placement's contract.
              nullable: false
              properties:
                cancellableAfterDate:
                  description: The UTC date and time after which this placement may be cancelled. Available if the status code is `inNonCancellablePeriod`.
                  format: date-time
                  nullable: false
                  type: string
                code:
                  description: The status code that describes this placement's contract status.
                  enum:
                    - inNonCancellablePeriod
                    - cancelled
                  nullable: false
                  type: string
                endDate:
                  description: The UTC date and time at which this placement will end. Available if the status code is "cancelled".
                  format: date-time
                  nullable: false
                  type: string
              required:
                - code
              type: object
            pause:
              additionalProperties: true
              description: The pause status of this placement.
              nullable: false
              properties:
                code:
                  description: The status code that describes this placement's pause status.
                  enum:
                    - paused
                  nullable: false
                  type: string
                pauseDate:
                  description: The UTC date and time at which this placement was paused as a result of a manual action. Available if the status code is "paused".
                  format: date-time
                  nullable: false
                  type: string
                resumeDate:
                  description: The UTC date and time at which this placement is scheduled to be resumed. Available if the status code is "paused" and a resume date was specified.
                  format: date-time
                  nullable: false
                  type: string
              required:
                - code
          type: object
        weeklyBudget:
          description: Contains information about the weekly budget for this placement.
          nullable: false
          properties:
            maximumAllowable:
              description: The maximum allowable budget for this week in the smallest unit of local currency (e.g., pence). It will not be possible to set a budget that exceeds this amount.
              format: int32
              nullable: false
              type: integer
            minimumAllowable:
              description: The minimum allowable budget for this week in the smallest unit of local currency (e.g., pence). It will not be possible to set a budget lower than this amount.
              format: int32
              nullable: false
              type: integer
            recommended:
              description: The recommended budget for this week so that the budget does not run out in the smallest unit of local currency (e.g., pence).
              format: int32
              nullable: false
              type: integer
            remaining:
              description: The remaining budget for this week in the smallest unit of local currency (e.g., pence).
              format: int32
              nullable: false
              type: integer
            total:
              description: The total budget for this week in the smallest unit of local currency (e.g., pence).
              format: int32
              nullable: false
              type: integer
          required:
            - remaining
            - total
            - maximumAllowable
            - minimumAllowable
            - recommended
          type: object
      required:
        - placementId
        - deliveryArea
        - purchaseDate
        - weeklyBudget
        - status
      type: object
    PromotedPlacementActivePlacementsForRestaurantResponse:
      additionalProperties: true
      example:
        metadata:
          currency: GBP
          effectiveDate: 2021-01-14T17:30:00Z
        placements:
          - availableActions:
              - adjustBudget
              - resume
              - cancel
            deliveryArea: NW6
            placementId: "100001"
            purchaseDate: 2021-01-01T14:45:00Z
            status:
              pause:
                code: paused
                pauseDate: 2021-01-14T12:02:32Z
                resumeDate: 2021-02-12T00:00:00Z
              placement:
                code: cancelled
                endDate: 2021-01-17T23:59:59Z
            weeklyBudget:
              maximumAllowable: 100000
              minimumAllowable: 500
              recommended: 13000
              remaining: 5000
              total: 13000
          - availableActions:
              - adjustBudget
              - pause
              - cancel
            deliveryArea: NW5
            placementId: "100002"
            purchaseDate: 2021-01-01T14:47:34Z
            status:
              budget:
                code: budgetLow
            weeklyBudget:
              maximumAllowable: 110000
              minimumAllowable: 500
              recommended: 14000
              remaining: 210
              total: 13000
          - availableActions:
              - adjustBudget
              - undoCancel
            deliveryArea: NW4
            placementId: "100003"
            purchaseDate: 2021-01-01T14:51:12Z
            status:
              placement:
                code: cancelled
                endDate: 2021-01-17T23:59:59Z
            weeklyBudget:
              maximumAllowable: 100000
              minimumAllowable: 500
              recommended: 14000
              remaining: 3200
              total: 13000
          - availableActions:
              - adjustBudget
              - pause
              - cancel
            deliveryArea: NW3
            placementId: "100004"
            purchaseDate: 2021-01-01T14:51:12Z
            status:
              budget:
                code: budgetExhausted
            weeklyBudget:
              maximumAllowable: 100000
              minimumAllowable: 500
              recommended: 14000
              remaining: 0
              total: 13000
      properties:
        contract:
          description: Information about the contract for this restaurant.
          properties:
            nonCancellablePeriodEndDate:
              description: The UTC time after which the non-cancellable period ends for this restaurant. If not specified, this restaurant has week-by-week rolling contracts.
              format: date-date
              type: string
          type: object
        metadata:
          additionalProperties: true
          description: Additional metadata that may assist the rendering of the response.
          properties:
            currency:
              description: The currency used for the budget data in ISO 4217 format, e.g., GBP, EUR or AUD.
              nullable: false
              type: string
            effectiveDate:
              description: The UTC time at which the request was processed for relative time calculations.
              format: date-time
              nullable: false
              type: string
          type: object
        placements:
          description: List of promoted placements active for a given restaurant.
          items:
            $ref: "#/components/schemas/PromotedPlacementActivePlacement"
          type: array
      required:
        - placements
      type: object
    PromotedPlacementAvailablePlacement:
      additionalProperties: true
      example:
        deliveryArea: NW6
        inAllowList: true
        weeklyBudget:
          maximumAllowable: 100000
          minimumAllowable: 500
          recommended: 13000
      nullable: false
      properties:
        deliveryArea:
          description: The postcode or location that is available for starting a placement.
          nullable: false
          type: string
        inAllowList:
          description: Indicates whether this placement is in the allow list for self-service purchase by the restaurant partner.
          nullable: false
          type: boolean
        weeklyBudget:
          additionalProperties: true
          description: Contains information about the required weekly budget for this placement location.
          nullable: false
          properties:
            maximumAllowable:
              description: The maximum allowable budget for this week in the smallest unit of local currency (e.g., pence). It will not be possible to set a budget that exceeds this amount.
              format: int32
              nullable: false
              type: integer
            minimumAllowable:
              description: The minimum allowable budget for this week in the smallest unit of local currency (e.g., pence). It will not be possible to set a budget lower than this amount.
              format: int32
              nullable: false
              type: integer
            recommended:
              description: The recommended budget for this week so that the budget does not run out in the smallest unit of local currency (e.g., pence).
              format: int32
              nullable: false
              type: integer
          required:
            - maximumAllowable
            - minimumAllowable
            - recommended
          type: object
      required:
        - deliveryArea
        - weeklyBudget
      type: object
    PromotedPlacementAvailablePlacementsForRestaurantResponse:
      additionalProperties: true
      example:
        metadata:
          currency: GBP
          effectiveDate: 2021-01-14T17:30:00Z
        placements:
          - deliveryArea: NW6
            weeklyBudget:
              maximumAllowable: 100000
              minimumAllowable: 500
              minimumRecommended: 1000
              recommended: 13000
          - deliveryArea: NW5
            weeklyBudget:
              maximumAllowable: 100000
              minimumAllowable: 500
              minimumRecommended: 1000
              recommended: 14000
          - deliveryArea: NW4
            weeklyBudget:
              maximumAllowable: 100000
              minimumAllowable: 500
              minimumRecommended: 1000
              recommended: 14000
          - deliveryArea: NW3
            weeklyBudget:
              maximumAllowable: 100000
              minimumAllowable: 500
              minimumRecommended: 1000
              recommended: 14000
      properties:
        metadata:
          additionalProperties: true
          description: Additional metadata that may assist the rendering of the response.
          properties:
            currency:
              description: The currency used for the budget data in ISO 4217 format, e.g., GBP, EUR or AUD.
              nullable: false
              type: string
            effectiveDate:
              description: The UTC time at which the request was processed for relative time calculations.
              format: date-time
              nullable: false
              type: string
            timeZone:
              description: The restaurant's timezone in IANA format, e.g., Europe/London.
              type: string
          type: object
        placements:
          description: List of promoted placements available for purchase for a given restaurant.
          items:
            $ref: "#/components/schemas/PromotedPlacementAvailablePlacement"
          type: array
      type: object
    PromotedPlacementCancelPlacementRequest:
      example:
        cancellationEffective: atEndOfWeek
      oneOf:
        - additionalProperties: true
          nullable: false
          properties:
            cancellationEffective:
              description: When the cancellation should take effect.
              enum:
                - atEndOfWeek
              type: string
          required:
            - cancellationEffective
          type: object
        - additionalProperties: true
          nullable: false
          properties:
            cancellationEffective:
              description: When the cancellation should take effect.
              enum:
                - atSpecifiedTime
              type: string
            cancellationTime:
              description: The UTC time at which the cancellation should take effect.
              format: date-time
              type: string
          required:
            - cancellationEffective
            - cancellationTime
          type: object
    PromotedPlacementCandidateRestaurant:
      additionalProperties: true
      example:
        metadata:
          key: value
        rank: 1
        restaurantId: "1234"
      properties:
        rank:
          description: The relative rank of this candidate restaurant in relation to others in the response. A smaller number indicates that this restaurant should be shown closer to the beginning of the list.
          type: number
        restaurantId:
          description: The unique identifier of the candidate restaurant.
          type: string
      type: object
    PromotedPlacementCandidateRestaurantsResponse:
      additionalProperties: false
      example:
        candidateRestaurants:
          - rank: 1
            restaurantId: "1234"
          - rank: 2
            restaurantId: "4567"
          - rank: 3
            restaurantId: "3245"
        metadata:
          availableFilteredPositions: 2
          availableUnfilteredPositions: 5
      properties:
        candidateRestaurants:
          description: An array of candidate restaurants that are available for Promoted Placement.
          items:
            $ref: "#/components/schemas/PromotedPlacementCandidateRestaurant"
          type: array
        metadata:
          additionalProperties: true
          description: Contains additional metadata that may affect the rendering of Promoted Placement candidate restaurants.
          properties:
            availableFilteredPositions:
              description: The number of Promoted Placement positions available in this location when displaying a filtered list of restaurants.
              type: number
            availableUnfilteredPositions:
              description: The number of Promoted Placement positions available in this location when displaying the full list of restaurants.
              type: number
          type: object
      type: object
    PromotedPlacementPlacementInsights:
      additionalProperties: true
      example:
        metadata:
          currency: GBP
        reports:
          last-28-days:
            data:
              overall:
                menuViews: 1236
                newCustomers: 198
                orderValue: 1137241
                orders: 660
              promotedPlacement:
                menuViews: 922
                newCustomers: 67
                orderValue: 403212
                orders: 250
                placementSpend: 60630
            period:
              createdAt: 2021-01-22T08:06:14.278Z
              endDate: 2021-01-21
              startDate: 2020-12-25
          last-7-days:
            data:
              overall:
                menuViews: 309
                newCustomers: 50
                orderValue: 315910
                orders: 165
              promotedPlacement:
                menuViews: 225
                newCustomers: 17
                orderValue: 96090
                orders: 48
                placementSpend: 14190
            period:
              createdAt: 2021-01-22T08:06:14.199Z
              endDate: 2021-01-21
              startDate: 2021-01-15
      properties:
        metadata:
          additionalProperties: true
          description: Additional metadata that may assist the rendering of the response.
          properties:
            currency:
              description: The currency used in the reports in ISO 4217 format, e.g., GBP, EUR or AUD.
              nullable: false
              type: string
          type: object
        reports:
          additionalProperties:
            additionalProperties: true
            description: A report for a given time period.
            properties:
              data:
                additionalProperties: true
                description: The placement insights data for this report period.
                properties:
                  overall:
                    additionalProperties: true
                    description: Total values for this period.
                    properties:
                      menuViews:
                        description: The total number of menu views.
                        format: int32
                        type: integer
                      newCustomers:
                        description: The total number of new customers.
                        format: int32
                        type: integer
                      orderValue:
                        description: The total order value in the smallest unit of local currency (e.g., pence).
                        format: int32
                        type: integer
                      orders:
                        description: The total number of orders.
                        format: int32
                        type: integer
                    required:
                      - newCustomers
                      - menuViews
                      - orders
                      - orderValue
                    type: object
                  promotedPlacement:
                    additionalProperties: true
                    description: Total values for promoted placement in this period.
                    properties:
                      menuViews:
                        description: The total number of promoted menu views.
                        format: int32
                        type: integer
                      newCustomers:
                        description: The total number of new customers as a result of promoted placement.
                        format: int32
                        type: integer
                      orderValue:
                        description: The total order value resulting from promoted placement orders in the smallest unit of local currency (e.g., pence).
                        format: int32
                        type: integer
                      orders:
                        description: The total number of orders resulting from promoted placement menu views.
                        format: int32
                        type: integer
                      placementSpend:
                        description: The total amount spent on promoted placement in the smallest unit of local currency (e.g., pence).
                        format: int32
                        type: integer
                    required:
                      - newCustomers
                      - menuViews
                      - orders
                      - orderValue
                      - placementSpend
                    type: object
                type: object
              period:
                description: Describes the time period for this report.
                properties:
                  createdAt:
                    description: The UTC time at which this report was generated.
                    format: date-time
                    nullable: false
                    type: string
                  endDate:
                    description: The end date of this report period.
                    format: date
                    nullable: false
                    type: string
                  startDate:
                    description: The start date of this report period.
                    format: date
                    nullable: false
                    type: string
                required:
                  - createdAt
                  - startDate
                  - endDate
                type: object
            required:
              - period
              - data
            type: object
          description: Reports keyed by the name of specific time periods.
          type: object
      required:
        - reports
      type: object
    Prompts:
      properties:
        DiscountApplied:
          nullable: true
          properties:
            Amount:
              format: decimal
              type: number
          type: object
        InvalidProducts:
          items:
            $ref: "#/components/schemas/InvalidProduct"
          type: array
        ItemDiscounts:
          description: Collection of item discount prompts to be shown customer
          items:
            $ref: "#/components/schemas/ItemDiscountPrompt"
          type: array
        Offers:
          items:
            properties:
              DiscountValue:
                format: decimal
                type: number
              OfferType:
                type: string
              QualifyingValue:
                format: decimal
                type: number
              ToSpendValue:
                format: decimal
                type: number
            type: object
          type: array
        OfflineProducts:
          items:
            $ref: "#/components/schemas/OfflineProduct"
          type: array
        RequiresOther:
          type: boolean
        SpendMore:
          nullable: true
          properties:
            MinimumOrderAmount:
              format: decimal
              type: number
            ToSpend:
              format: decimal
              type: number
          type: object
      type: object
    Properties:
      description: Geometry information for consumers location
      example:
        accuracyScore: 100
        geocodingProvider: Google
        matchScore: 100
      properties:
        accuracyScore:
          default: 80
          description: Just Eat Takeaway address accuracy score
          format: integer
          maximum: 100
          minimum: 1
          type: number
        geocodingProvider:
          description: the geocoding provider
          type: string
        matchScore:
          default: 100
          description: Just Eat Takeaway address match score
          format: integer
          maximum: 100
          minimum: 1
          type: number
      type: object
    PushNotificationRegistrationUpdate:
      additionalProperties: false
      properties:
        appType:
          $ref: "#/components/schemas/AppType"
          description: Application type
        pushNotificationToken:
          description: Push notification token
          nullable: true
          type: string
      type: object
    PutProductBackOnTheMenuCommand:
      additionalProperties: false
      properties:
        deletedBy:
          description: Application which requested operation e.g. Orderpad, RestaurantApp
          nullable: true
          type: string
        productIds:
          description: List of product Ids to be brought back online
          items:
            type: string
          nullable: true
          type: array
        requestedAt:
          description: Request date and time in ISO 8601 format
          format: date-time
          nullable: true
          type: string
      type: object
    RedeemCommand:
      properties:
        pin:
          type: string
      type: object
    RedeemCommandResponse:
      properties:
        value:
          format: int32
          type: integer
      type: object
    RedeemPaycodeCommand:
      properties:
        paycode:
          type: string
      type: object
    RedeemPaycodeResponse:
      properties:
        value:
          format: int32
          type: integer
      type: object
    RedeliverOrderResolution:
      properties:
        NewDueDate:
          description: Updated due date for delivery of the order
          format: date-time
          type: string
        Status:
          description: The current status of the order
          enum:
            - DriverAtAddress
            - Repreparing
          type: string
      type: object
    RegistrationRequest:
      additionalProperties: false
      properties:
        appType:
          $ref: "#/components/schemas/AppType"
          description: Application type
        password:
          description: Password
          nullable: true
          type: string
        pushNotificationId:
          description: The id used in push notification registration
          nullable: true
          type: string
        username:
          description: Username
          nullable: true
          type: string
      type: object
    RegistrationResponse:
      additionalProperties: false
      properties:
        appType:
          description: Application type
          nullable: true
          type: string
        restaurantId:
          description: The Id of the restaurant
          nullable: true
          type: string
        token:
          description: Created authentication token
          nullable: true
          type: string
        userId:
          description: The Id of the user
          nullable: true
          type: string
      type: object
    RemovedIngredient:
      properties:
        Details:
          type: string
      type: object
    ReplaceRestaurantMenuRequest:
      description: request containing links in s3 to new menu files
      example:
        fileKeys:
          - 3c81dq0k9bhj1bn_menu_1.pdf
          - 1rhj7qhr6fhjgbm_menu_2.pdf
      properties:
        fileKeys:
          description: Array of paths to the new menu files that were uploaded to the certain AWS s3 bucket
          items:
            description: path to the new menu file that Was uploaded to the certain AWS s3 bucket
            type: string
          maxLength: 10
          type: array
      type: object
    RequestCsatStep:
      allOf:
        - $ref: "#/components/schemas/FlowStepBase"
        - properties:
            quitFlowAction:
              $ref: "#/components/schemas/HelpAction"
              description: Action to close flow without giving CSAT
          type: object
      description: Flow step used for asking if customer was satisfied with flow
      type: object
    RequestRestaurant:
      properties:
        menuId:
          description: Id of the restaurant's menu
          type: string
        restaurantId:
          description: Id of the restaurant
          type: string
      required:
        - restaurantId
      type: object
    RestaurantCapabilitiesPaymentTypeItem:
      example:
        cardTypes:
          - VISA
          - MASTERCARD
          - AMEX
        paymentType: Card
        selected: false
      properties:
        cardTypes:
          description: List of card types (only applies to `Card` payment type)
          items:
            enum:
              - AMEX
              - DK
              - MASTERCARD
              - VISA
              - VISADK
            format: enum
            type: string
          type: array
        maxOrderValueCents:
          description: Max order value in smallest unit of relevant currency (only applies to `Cash` payment type)
          format: integer
          type: number
        paymentType:
          description: The payment type
          enum:
            - ApplePay
            - Card
            - Cash
            - GooglePay
            - PayPal
            - VCO
          type: string
        selected:
          description: Flag to indicate if the payment type has been selected
          type: boolean
        token:
          description: Token to be used with the payment type (only applies to `PayPal` payment type)
          type: string
        voucherAvailable:
          description: Flag to indicate if vouchers are available for the payment type
          type: boolean
      type: object
    RestaurantCapabilitiesResponse:
      example:
        availablePaymentTypes:
          - paymentType: ApplePay
            selected: true
            voucherAvailable: true
          - paymentType: GooglePay
            selected: false
          - paymentType: PayPal
            selected: false
            token: token123
          - paymentType: VCO
            selected: false
          - maxOrderValueCents: 5000
            paymentType: Cash
            selected: false
          - cardTypes:
              - VISA
              - MASTERCARD
              - AMEX
            paymentType: Card
            selected: false
        feeConfig:
          amountCents: 1000
      properties:
        availablePaymentTypes:
          description: List of available payment types
          items:
            $ref: "#/components/schemas/RestaurantCapabilitiesPaymentTypeItem"
          type: array
        feeConfig:
          description: Details of any additional fees
          properties:
            amountCents:
              description: The fee amount in smallest unit of relevant currency
              format: integer
              type: number
          type: object
      type: object
    RestaurantCommentsOnReview:
      example:
        restaurantComments: Thank you very much for positive feedback
      properties:
        restaurantComments:
          description: Restaurant comments in response on the customer review
          nullable: false
          type: string
      type: object
    RestaurantConfiguration:
      additionalProperties: false
      properties:
        addressCity:
          description: Address city
          nullable: true
          type: string
        addressLine1:
          description: Address line 1
          nullable: true
          type: string
        brandName:
          description: Name of the brand this restaurant belongs to
          nullable: true
          type: string
        financeDetails:
          $ref: "#/components/schemas/RestaurantFinanceDetails"
          description: Restaurant finance details
        geoLocation:
          $ref: "#/components/schemas/GeoLocation"
          description: Geo location details
        isDmsEnabled:
          description: Is DMS enabled
          type: boolean
        isFlypayEposEnabled:
          description: Is Flypay enabled
          type: boolean
        isRdsRestaurant:
          description: Is it RDS restaurant
          type: boolean
        logoUrl:
          description: Logo URL
          nullable: true
          type: string
        name:
          description: Name of the restaurant
          nullable: true
          type: string
        phoneNumber:
          description: Phone number
          nullable: true
          type: string
        postalCode:
          description: Post code of the restaurant
          nullable: true
          type: string
        supportDetails:
          $ref: "#/components/schemas/RestaurantSupportDetails"
          description: Restaurant support details
        tempOffline:
          $ref: "#/components/schemas/RestaurantTempOffline"
          description: Details of temp offline
        website:
          description: Web site address of the restaurant
          nullable: true
          type: string
      type: object
    RestaurantDeliveryFees:
      example:
        bands:
          - fee: 250
            minimumAmount: 1000
          - fee: 0
            minimumAmount: 2000
        minimumOrderValue: 1000
        restaurantId: "5678"
      nullable: false
      properties:
        bands:
          description: Collection of delivery fee bands
          items:
            properties:
              fee:
                description: The delivery fee, in the smallest unit of local currency (e.g. pence).
                format: integer
                type: number
              minimumAmount:
                description: The minimum order value (excluding fees) when this fee band applies. The fee with the highest `minimumAmount` that is less than or equal to order value applies. This is in the smallest unit of local currency (e.g. pence).
                format: integer
                type: number
            type: object
          type: array
        minimumOrderValue:
          description: The minimum order value (excluding fees) required, in the smallest unit of local currency (e.g. pence).
          format: integer
          type: number
        restaurantId:
          description: The identifier of the restaurant
          type: string
      type: object
    RestaurantDetailsLocation:
      description: Location of the restaurant
      properties:
        city:
          description: City of the restaurant
          type: string
        country:
          description: Country of the restaurant
          type: string
        geoPosition:
          $ref: "#/components/schemas/RestaurantDetailsLocationPosition"
          description: Geoposition of the restaurant
        postalCode:
          description: Post code of the restaurant
          type: string
        region:
          description: Region of the restaurant
          type: string
        streetAddress:
          description: Street address of the restaurant
          type: string
      type: object
    RestaurantDetailsLocationPosition:
      description: Geoposition of the restaurant in GeoJSON format
      properties:
        coordinates:
          description: longitude and latitude
          items:
            format: double
            type: number
          maxItems: 2
          minItems: 2
          type: array
        type:
          description: type of primitive
          enum:
            - Point
          type: string
      type: object
    RestaurantDetailsResponse:
      description: response containing details of the restaurant
      example:
        allergenInformation:
          phoneNumber: +44 7911 123456
          url: http://test.com
        contactOptions:
          emails:
            - email: test@mcdonalds.com
            - usedFor:
                - Invoice
                - Default
          phoneNumbers:
            - phoneNumber: +44 7911 123456
            - usedFor:
                - Default
                - Owner
                - Alternative
        cuisines:
          - Italian
          - American
        id: "108308"
        legalInformation:
          companyNumber: "12345"
          registeredName: Mc Donald's
        location:
          city: London
          country: United Kingdom
          geoPosition:
            coordinates:
              - 51.509865
              - -0.118092
            type: Point
          postalCode: EC4M 7RF
          region: Farringdon
          streetAddress: Fleet Place House, Fleet Place
        name: McDonald's Test
      properties:
        allergenInformation:
          description: Allergen details of the restaurant
          properties:
            phoneNumber:
              description: Phone number to contact restaurant about allergens
              type: string
            url:
              description: Page with information about allergens
              type: string
          type: object
        contactOptions:
          description: Contact details of the restaurant
          properties:
            emails:
              description: Array containing an email with label items
              items:
                description: An item in emails array containing an email with label
                maxItems: 3
                properties:
                  email:
                    description: Email contact
                    type: string
                  usedFor:
                    description: Type of email contacts
                    items:
                      description: Array containing labels specifying email
                      enum:
                        - Default
                        - Invoice
                      format: enum
                      type: string
                    maxItems: 3
                    type: array
                type: object
              type: array
            phoneNumbers:
              description: Array containing a phone number with label items
              items:
                description: An item in emails array containing an email with label
                maxItems: 3
                properties:
                  phoneNumber:
                    description: Phone number
                    type: string
                  usedFor:
                    description: Type of phone number contacts
                    items:
                      description: Array containing labels specifying phone number
                      enum:
                        - Default
                        - Owner
                        - Alternative
                      format: enum
                      type: string
                    maxItems: 3
                    type: array
                type: object
              maxItems: 3
              type: array
          type: object
        cuisines:
          description: Array of cuisines of restaurant
          items:
            description: Cuisine name
            type: string
          type: array
        id:
          description: A unique identifier at tenant level for a given restaurant
          type: string
        legalInformation:
          description: Legal information of the restaurant
          properties:
            companyNumber:
              description: Company number of the restaurant
              type: string
            registeredName:
              description: Legal company name of the restaurant
              type: string
          type: object
        location:
          $ref: "#/components/schemas/RestaurantDetailsLocation"
          description: Location of the restaurant
        name:
          description: The name of the restaurant.
          type: string
      type: object
    RestaurantETAs:
      items:
        example:
          etaAtRestaurant: 1
          restaurantId: "1"
        properties:
          etaAtRestaurant:
            description: Your best estimation in minutes
            format: int32
            type: number
          restaurantId:
            description: The unique identifier of the restaurant.
            type: string
        type: object
      type: array
    RestaurantErrorResponse:
      example:
        errorCode: InvalidCountryCode
        errorId: 6947c692-ca24-434d-8166-d4d54ef8d74e
        message: The country code 'zzz' is not supported.
        requestId: 8000324e-0000-f400-b63f-84710c7967bb
        statusCode: "400"
        timestamp: 2019-10-02T12:34:53.1214447+00:00
      properties:
        errorCode:
          description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error
          type: string
        errorId:
          description: A value that helps identify this response back to logs, so we can easily find this specific fault
          type: string
        message:
          description: Specific details about the error that may assist the you in resolving the issue
          type: string
        requestId:
          description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated
          type: string
        statusCode:
          description: Http response status code
          type: string
        timestamp:
          description: Date-time when this request was processed
          format: date-time
          type: string
      type: object
    RestaurantFees:
      description: An object encapsulating all possible fees which a restaurant can apply to itself
      example:
        bagFee:
          description: A charge for bags in delivery
          serviceTypes:
            collection:
              amount: 5
            default:
              amount: 0
            delivery:
              amount: 10
      properties:
        bagFee:
          $ref: "#/components/schemas/Fee"
          description: A fee applied for bags used for delivery and collection orders
      type: object
    RestaurantFinanceDetails:
      additionalProperties: false
      properties:
        paymentMode:
          description: Current payment mode
          enum:
            - CardOnly
            - CardAndCash
          nullable: true
          type: string
      type: object
    RestaurantInfo:
      additionalProperties: false
      properties:
        addressCity:
          description: Restaurant address city
          nullable: true
          type: string
        addressLine1:
          description: Restaurant address line 1
          nullable: true
          type: string
        geoLocation:
          description: Restaurant geolocation
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/GeoLocation"
        name:
          description: Restaurant name
          nullable: true
          type: string
        phoneNumber:
          description: Restaurant phone number
          nullable: true
          type: string
        postalCode:
          description: Restaurant name
          nullable: true
          type: string
        vatRegistrationNumber:
          description: Restaurant VAT registration number
          nullable: true
          type: string
        website:
          description: Restaurant website
          nullable: true
          type: string
      type: object
    RestaurantInvoiceDownloadInformation:
      description: An information to download invoice content
      example:
        downloadUrl: https://invoicesbucket.s3.eu-west-1.amazonaws.com/123456.html?X-Amz-Expires=60&x-amz-security-token=qw12qw12&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ABABABABAB/20201007/eu-west-1/s3/aws4_request&X-Amz-Date=20201007T162255Z&X-Amz-SignedHeaders=host;x-amz-security-token&X-Amz-Signature=34rt34rt
        expires: 2020-10-07T16:23:55.000Z
      properties:
        downloadUrl:
          description: The URL to download invoice content
          type: string
        expires:
          description: The time when the download URL expires and becomes invalid to download invoice content
          format: date-time
          type: string
      type: object
    RestaurantInvoiceSummary:
      description: An invoice summary for the invoice period
      properties:
        accountBalance:
          description: Restaurant account balance at the end of the invoice period in smallest unit of relevant currency
          format: integer
          type: number
        createdDate:
          description: The invoice created date
          format: date-time
          type: string
        currencyCode:
          description: The ISO-4217 currency code associated with the invoice
          type: string
        endDate:
          description: The end date of the invoice period
          format: date
          type: string
        id:
          description: The Id of the invoice
          type: string
        invoiceAmount:
          description: Invoice amount for the invoice period in smallest unit of relevant currency
          format: integer
          type: number
        startDate:
          description: The start date of the invoice period
          format: date
          type: string
      type: object
    RestaurantInvoices:
      example:
        invoices:
          - accountBalance: 123540
            createdDate: 2020-09-29T09:26:09.930Z
            currencyCode: GBP
            endDate: 2020-09-27
            id: i9999999
            invoiceAmount: 5421
            startDate: 2020-09-21
          - accountBalance: 167980
            createdDate: 2020-09-22T11:00:32.800Z
            currencyCode: GBP
            endDate: 2020-09-20
            id: i8888888
            invoiceAmount: 6798
            startDate: 2020-09-14
        paging:
          cursors:
            after: fewyNzQyOGI3OHYt
      properties:
        invoices:
          description: List of restaurant invoice summaries
          items:
            $ref: "#/components/schemas/RestaurantInvoiceSummary"
          type: array
        paging:
          description: Consists of pagination information
          properties:
            cursors:
              description: Consists of cursor markers used in pagination
              properties:
                after:
                  description: The value should be used in the query parameter named after. It is used as a cursor of the last returned record in the previous request, from which next offset going to be fetched. A missing or empty value indicates that the end of the result set has been reached
                  type: string
              type: object
          type: object
      type: object
    RestaurantOffer:
      properties:
        ConsumerSegment:
          description: Consumer Segment to which offer applies
          example: NewToRestaurant
          nullable: false
          type: string
        DiscountApplied:
          description: The money value discount
          format: decimal
          nullable: false
          type: number
        DiscountCode:
          description: The unique code of the discount, acts as a lock object at payment stage
          nullable: true
          type: string
        DiscountValue:
          description: The percentage value discount. Returned 0 when offer is not of Percent type
          format: decimal
          nullable: false
          type: number
        OfferId:
          description: The unique identifier of the offer
          nullable: false
          type: string
        OfferType:
          description: The type of the offer
          nullable: false
          type: string
      required:
        - OfferId
        - OfferType
        - ConsumerSegment
        - DiscountApplied
      type: object
    RestaurantOfflineStatus:
      example:
        AllowRestaurantOverride: false
        IsOffline: true
        RestaurantId: "123456"
        Tenant: uk
      properties:
        AllowRestaurantOverride:
          description: Whether a restaurant should be allowed to reverse this offline status change through calls to the Restaurant Events endpoints.
          nullable: true
          type: boolean
        IsOffline:
          description: Represents the current offline status of the restaurant.
          type: boolean
        RestaurantId:
          description: The unique identifier of the restaurant that has their offline status changed.
          type: string
        Tenant:
          description: The two letter country code for the market in which the restaurant operates.
          enum:
            - au
            - dk
            - es
            - ie
            - it
            - no
            - uk
            - nz
          format: enum
          type: string
      type: object
    RestaurantOrderAppliedDiscount:
      description: A discount item in an order
      properties:
        discountAmount:
          description: The discount value in smallest unit of relevant currency
          format: integer
          type: number
        type:
          description: The type of discount
          enum:
            - Percent
            - FirstTimeCustomer
            - StampCard
      type: object
    RestaurantOrderCustomerInfo:
      description: Information about a customer
      properties:
        deliveryAddress:
          description: The delivery address of the order
          items:
            description: The address line
            type: string
          nullable: true
          type: array
        name:
          description: The customer name
          nullable: true
          type: string
      type: object
    RestaurantOrderDetails:
      description: An order details
      example:
        appliedDiscounts:
          - discountAmount: 2550
            type: StampCard
        currencyCode: GBP
        customerInfo:
          deliveryAddress:
            - 13 Moon road
            - Mars
            - BS5 1KG
            - Bristol
          name: Simon Moon
        deliveryPrice: 200
        dueDate: 2020-01-01T10:15:00.000Z
        friendlyId: 821367535
        id: rtvtgo0wwugmiiikdpzvsg
        orderItems:
          - description: one pizza and one drink from choices
            itemId: p1
            itemType: Product
            name: Pizza and drink
            quantity: 1
            subItems:
              - description: classic pizza Margherita
                itemId: mp1
                itemType: MealPart
                name: Margherita
                quantity: 1
                subItems: []
                synonym: Medium
                unitPrice: 0
              - description: ""
                itemId: mp2
                itemType: MealPart
                name: Coca-Cola
                quantity: 1
                subItems: []
                synonym: 1L
                unitPrice: 0
              - itemId: a1
                itemType: Accessory
                name: Double Cheese
                quantity: 1
                subItems: []
                synonym: ""
                unitPrice: 100
            synonym: Medium
            unitPrice: 999
          - description: Romaine lettuce, croutons, Parmesan cheese, lemon juice, olive oil, egg, Worcestershire sauce, anchovies, Dijon mustard, black pepper
            itemId: p2
            itemType: Product
            name: Cesar Salad
            quantity: 2
            subItems: []
            synonym: ""
            unitPrice: 533
        orderNote: Contact-free delivery
        orderPrice: 2099
        orderPriceBreakdown:
          accountCredits: 500
          discounts: 207
          fees: 250
          items: 2066
          vouchers: 0
        orderStatus: Cancelled
        paymentInfo:
          fees:
            - type: Card
              value: 50
            - type: Delivery
              value: 200
          paidDate: 2020-01-01T09:31:00.000Z
          paymentLines:
            - fee: 0
              paymentMethod: AccountCredit
              value: 500
            - fee: 50
              paymentMethod: Card
              value: 1549
        paymentType: Card
        placedDate: 2020-01-01T09:30:00.000Z
        previousJustEatOrderCount: 3
        previousRestaurantOrderCount: 1
        promptAsap: false
        serviceType: Delivery
        statusReason: RejectedByRestaurant
        transactionReference: 123334567667989
      properties:
        appliedDiscounts:
          description: List of restaurant applied discounts
          items:
            $ref: "#/components/schemas/RestaurantOrderAppliedDiscount"
          type: array
        currencyCode:
          description: The ISO-4217 currency code associated with the all prices and money amounts in order details
          type: string
        customerInfo:
          $ref: "#/components/schemas/RestaurantOrderCustomerInfo"
          description: Information about a customer
        deliveryPrice:
          description: The order delivery price in smallest unit of relevant currency
          format: integer
          type: number
        dueDate:
          description: The due date of the order
          format: date-time
          type: string
        friendlyId:
          description: The friendly order Id
          type: string
        id:
          description: The Id of the order
          type: string
        orderItems:
          description: List of restaurant order items
          items:
            $ref: "#/components/schemas/RestaurantOrderItem"
          type: array
        orderNote:
          description: The customer note to the order
          nullable: true
          type: string
        orderPrice:
          description: The order price in smallest unit of relevant currency
          format: integer
          type: number
        orderPriceBreakdown:
          $ref: "#/components/schemas/RestaurantOrderPriceBreakdown"
          description: The order price breakdown (all amounts in smallest unit of relevant currency)
        orderStatus:
          description: Status of completed order
          enum:
            - Completed
            - Cancelled
        paymentInfo:
          $ref: "#/components/schemas/RestaurantOrderPaymentInfo"
          description: Information about a payment
        paymentType:
          description: The payment type (cash or card)
          enum:
            - Card
            - Cash
        placedDate:
          description: The order placed date
          format: date-time
          type: string
        previousRestaurantOrderCount:
          description: The customer's previous total number of orders made to this restaurant
          type: number
        previousTotalOrderCount:
          description: The customer's previous total number of orders made to all restaurants
          type: number
        promptAsap:
          description: The flag that shows whether the customer awaits an order as soon as possible
          type: boolean
        serviceType:
          description: Type of service (collection, delivery or dine-in)
          enum:
            - Delivery
            - Collection
            - DineIn
        statusReason:
          description: The reason for the order's status, if known
          enum:
            - TooFar
            - FakeDelivered
            - FakeNotDelivered
            - FaxNotReceived
            - IncorrectOrder
            - NoAnswerFromRestaurant
            - MissedByRestaurant
            - FakeNotCollected
            - RestaurantCannotDeliver
            - RejectedByRestaurant
            - NewTimeRejected
            - SystemError
            - RestaurantIsBusy
            - TestOrder
        transactionReference:
          description: The payment transaction reference, if known
          type: string
      type: object
    RestaurantOrderHistory:
      example:
        orders:
          - currencyCode: GBP
            deliveryPrice: 200
            friendlyId: "821367535"
            id: rtvtgo0wwugmiiikdpzvsg
            orderPrice: 2099
            orderStatus: Completed
            paymentType: Card
            placedDate: 2020-01-01T09:30:00.000Z
            serviceType: Delivery
          - currencyCode: GBP
            deliveryPrice: 0
            friendlyId: "829022736"
            id: uerbbymdfkxdecduuerbby
            orderPrice: 99900
            orderStatus: Cancelled
            paymentType: Cash
            placedDate: 2020-01-02T19:20:00.000Z
            serviceType: Collection
          - currencyCode: GBP
            deliveryPrice: 0
            friendlyId: "829022737"
            id: dfssd3efsferr4rgfdgf
            orderPrice: 54400
            orderStatus: Completed
            paymentType: Cash
            placedDate: 2020-01-02T20:45:00.000Z
            serviceType: DineIn
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
      properties:
        orders:
          description: List of restaurant order summaries
          items:
            $ref: "#/components/schemas/RestaurantOrderSummary"
          type: array
        paging:
          description: Consists of pagination information
          properties:
            cursors:
              description: Consists of cursors markers used in pagination
              properties:
                after:
                  description: The value should be used in the query parameter named after. It is used as a cursor of the last returned record in the previous request, from which next offset going to be fetched. A missing or empty value indicates that the end of the result set has been reached
                  type: string
              type: object
          type: object
      type: object
    RestaurantOrderItem:
      description: An item in an order
      properties:
        description:
          description: The description for the item
          type: string
        itemId:
          description: The Id of the item
          type: string
        itemType:
          description: The type of item
          enum:
            - Product
            - MealPart
            - Accessory
        name:
          description: The name of the item
          type: string
        quantity:
          description: The quantity of the item
          format: int32
          type: integer
        subItems:
          description: The sub items of item, such as meal parts of the meal or accessories
          items:
            $ref: "#/components/schemas/RestaurantOrderItem"
          type: array
        synonym:
          description: The synonym of the item
          type: string
        unitPrice:
          description: The unit price for the item
          format: integer
          type: number
      type: object
    RestaurantOrderPaymentInfo:
      description: Information about a payment
      properties:
        fees:
          description: The fees applied to the order
          items:
            properties:
              type:
                description: The type of fee, such as delivery or card
                type: string
              value:
                description: The fee value in smallest unit of relevant currency
                format: integer
                type: number
            type: object
          type: array
        paidDate:
          description: The date and time the order was paid for, if known
          format: date-time
          nullable: true
          type: string
        paymentLines:
          description: The payment lines
          items:
            description: An individual payment line
            properties:
              fee:
                description: The payment fee in smallest unit of relevant currency
                format: integer
                type: number
              paymentMethod:
                description: The payment method, such as cash or card
                type: string
              value:
                description: The payment value in smallest unit of relevant currency
                format: integer
                type: number
            type: object
          type: array
      type: object
    RestaurantOrderPriceBreakdown:
      description: The order price breakdown (all amounts in smallest unit of relevant currency)
      properties:
        accountCredits:
          description: The total amount of account credit(s) applied to the order
          format: integer
          type: number
        discounts:
          description: The total amount of discount(s) applied to the order
          format: integer
          type: number
        fees:
          description: The total amount of fees applied to the order
          format: integer
          type: number
        items:
          description: The total amount of order items
          format: integer
          type: number
        vouchers:
          description: The total amount of voucher(s) applied to the order
          format: integer
          type: number
      type: object
    RestaurantOrderSummaries:
      description: An orders summary for date range (all total values in smallest unit of relevant currency)
      example:
        count: 27
        currencyCode: GBP
        totalCardOrderValue: 92059
        totalCashOrderValue: 7934
        totalCollectionOrderValue: 22241
        totalDeliveryOrderValue: 66621
        totalDeliveryPriceValue: 70
        totalDineInOrderValue: 11131
        totalOrderValue: 99993
      properties:
        count:
          description: Total number of all orders for date range
          format: int32
          type: integer
        currencyCode:
          description: The ISO-4217 currency code associated with the total values
          type: string
        totalCardOrderValue:
          description: Total value of card orders for date range
          format: int32
          type: number
        totalCashOrderValue:
          description: Total value of cash orders for date range
          format: int32
          type: number
        totalCollectionOrderValue:
          description: Total value of collection orders for date range
          format: int32
          type: number
        totalDeliveryOrderValue:
          description: Total value of delivery orders for date range
          format: int32
          type: number
        totalDeliveryPriceValue:
          description: Total delivery price value for date range
          format: int32
          type: number
        totalDineInOrderValue:
          description: Total value of dine-in orders for date range
          format: int32
          type: number
        totalOrderValue:
          description: Total value of all orders for date range
          format: int32
          type: number
      type: object
    RestaurantOrderSummary:
      description: An order summary
      properties:
        currencyCode:
          description: The ISO-4217 currency code associated with the order price
          type: string
        deliveryPrice:
          description: The order delivery price in smallest unit of relevant currency
          format: integer
          type: number
        friendlyId:
          description: The friendly order Id
          type: string
        id:
          description: The Id of the order
          type: string
        orderPrice:
          description: The order price in smallest unit of relevant currency
          format: integer
          type: number
        orderStatus:
          description: Status of completed order
          enum:
            - Completed
            - Cancelled
        paymentType:
          description: The payment type (cash or card)
          enum:
            - Card
            - Cash
        placedDate:
          description: The order placed date
          format: date-time
          type: string
        serviceType:
          description: Type of service (collection, delivery or dine-in)
          enum:
            - Collection
            - Delivery
            - DineIn
      type: object
    RestaurantPromotedPlacementInfo:
      example:
        defaultPromoted: true
        restaurantId: "84335"
      nullable: false
      properties:
        defaultPromoted:
          description: Should be promoted by default
          type: boolean
        restaurantId:
          description: Id of the restaurant
          type: string
      type: object
    RestaurantReviews:
      example:
        reviews:
          - approvedRestaurantComments: Thank you very much for positive feedback
            customerComments: Extremely good food and service
            customerName: Steve
            friendlyOrderId: "123456789"
            id: uimpewidbrjyxcweiqtoe
            rateDate: 2020-10-18T17:42:38.000Z
            ratingAverage: 5.66
            restaurantComments: Thank u very much for positive feedback
          - approvedRestaurantComments: We are sorry
            customerComments: Coffee poured all over my food
            customerName: Lucy
            friendlyOrderId: "123456790"
            id: tytyhjdbrhgjfxcweigfht
            rateDate: 2020-10-19T18:00:45.000Z
            ratingAverage: 2.33
            restaurantComments: We are sorry, but it is your fault
      properties:
        reviews:
          description: List of restaurant reviews
          items:
            properties:
              approvedRestaurantComments:
                description: Any comments left by the restaurant in response to the review approved by a moderator
                nullable: true
                type: string
              customerComments:
                description: Any comments left by the customer in their review
                nullable: true
                type: string
              customerName:
                description: The (first) name of the customer who left the review
                nullable: false
                type: string
              friendlyOrderId:
                description: The friendly order Id the review is associated with
                nullable: false
                type: string
              id:
                description: The Id of the review
                format: int32
                nullable: false
                type: string
              rateDate:
                description: The date and time on which the order was made
                format: date-time
                nullable: false
                type: string
              ratingAverage:
                description: The average score left by the customer
                format: double
                nullable: false
                type: number
              restaurantComments:
                description: Any comments left by the restaurant in response to the review
                nullable: true
                type: string
            type: object
          type: array
      type: object
    RestaurantReviewsRatingBreakdown:
      properties:
        badRatingsCount:
          description: The count of bad (1,2 stars) ratings across all reviews
          format: int32
          nullable: false
          type: integer
        goodRatingsCount:
          description: The count of good (5,6 stars) ratings across all reviews
          format: int32
          nullable: false
          type: integer
        neutralRatingsCount:
          description: The count of neutral (3,4 stars) ratings across all reviews
          format: int32
          nullable: false
          type: integer
      type: object
    RestaurantReviewsSummary:
      example:
        ratingAverage: 4.7
        ratingsBreakdown:
          delivery:
            badRatingsCount: 10
            goodRatingsCount: 46
            neutralRatingsCount: 10
          overall:
            badRatingsCount: 8
            goodRatingsCount: 44
            neutralRatingsCount: 14
          quality:
            badRatingsCount: 10
            goodRatingsCount: 44
            neutralRatingsCount: 12
          service:
            badRatingsCount: 15
            goodRatingsCount: 45
            neutralRatingsCount: 6
        reviewsCount: 66
      properties:
        ratingAverage:
          description: The average score of all reviews
          format: double
          nullable: false
          type: number
        ratingsBreakdown:
          description: The breakdown of good/neutral/bad reviews for different types of ratings
          nullable: false
          properties:
            delivery:
              $ref: "#/components/schemas/RestaurantReviewsRatingBreakdown"
              description: The breakdown of good/neutral/bad delivery experience ratings across all reviews
            overall:
              $ref: "#/components/schemas/RestaurantReviewsRatingBreakdown"
              description: The breakdown of good/neutral/bad overall experience ratings across all reviews
            quality:
              $ref: "#/components/schemas/RestaurantReviewsRatingBreakdown"
              description: The breakdown of good/neutral/bad quality experience ratings across all reviews
            service:
              $ref: "#/components/schemas/RestaurantReviewsRatingBreakdown"
              description: The breakdown of good/neutral/bad service experience ratings across all reviews
          type: object
        reviewsCount:
          description: The count of all reviews
          format: int32
          nullable: false
          type: integer
      type: object
    RestaurantSearchProduct:
      example:
        fullName: Chicken Korma
        price: 799
        productId: "289347"
      properties:
        fullName:
          description: The full name of the product
          type: string
        price:
          description: The price of the product
          type: number
        productId:
          description: The id of the product
          type: string
      type: object
    RestaurantSearchResponse:
      example:
        restaurants:
          - isSponsored: true
            products:
              - fullName: Chicken Korma
                price: 799
                productId: "289347"
              - fullName: Chicken Madras
                price: 699
                productId: "563454"
            restaurantId: "110230"
          - isSponsored: false
            products:
              - fullName: BBQ Chicken Pizza
                price: 1099
                productId: "67832"
              - fullName: Chicken Burger
                price: 899
                productId: "23567"
            restaurantId: "229390"
      properties:
        restaurants:
          description: Ordered list of restaurants
          items:
            $ref: "#/components/schemas/RestaurantSearchResponseItem"
          type: array
          uniqueItems: false
      type: object
    RestaurantSearchResponseItem:
      example:
        isSponsored: false
        products:
          - fullName: Chicken Korma
            price: 799
            productId: "289347"
          - fullName: Chicken Madras
            price: 699
            productId: "563454"
        restaurantId: "110230"
      properties:
        isSponsored:
          description: Flag to indicate if the restaurant is sponsored, so has been promoted to the top of the results
          type: boolean
        products:
          description: Ordered list of products available from the restaurant which matched the search term
          items:
            $ref: "#/components/schemas/RestaurantSearchProduct"
          type: array
          uniqueItems: false
        restaurantId:
          description: The id of the restaurant
          type: string
      type: object
    RestaurantSettingsResponse:
      description: response containing settings of the restaurant in partner centre
      example:
        isMenuManagementTeaserVisible: false
      properties:
        isMenuManagementTeaserVisible:
          description: A value indicated whether menu management teaser should be shown on restaurant edit menu page
          type: boolean
      type: object
    RestaurantSmileyRatingsInspection:
      properties:
        inspectionDate:
          description: Date of the inspection (dd-mm-yyyy). It can be nullable if no inspection was done in the restaurant.
          nullable: true
          type: string
        rate:
          description: Smiley Rating of this inspection (4 - lower, 1 - higher). It can be nullable if no inspection was done in the restaurant.
          maximum: 4
          minimum: 1
          nullable: true
          type: integer
    RestaurantSmileyRatingsResponse:
      additionalProperties: false
      example:
        inspections:
          first:
            inspectionDate: 02-01-2021
            rate: 1
          fourth:
            inspectionDate: null
            rate: null
          second:
            inspectionDate: 02-01-2021
            rate: 1
          third:
            inspectionDate: 02-01-2021
            rate: 2
        isElite: false
        restaurantSmileyId: "111111"
        url: https://www.findsmiley.dk/111111
      properties:
        inspections:
          description: Object with the last four inspections from most recent to older
          properties:
            first:
              allOf:
                - $ref: "#/components/schemas/RestaurantSmileyRatingsInspection"
              description: First most recent inspection
              nullable: false
              type: object
            fourth:
              allOf:
                - $ref: "#/components/schemas/RestaurantSmileyRatingsInspection"
              description: Fourth most recent inspection
              nullable: false
              type: object
            second:
              allOf:
                - $ref: "#/components/schemas/RestaurantSmileyRatingsInspection"
              description: Second most recent inspection
              nullable: false
              type: object
            third:
              allOf:
                - $ref: "#/components/schemas/RestaurantSmileyRatingsInspection"
              description: Third most recent inspection
              nullable: false
              type: object
          type: object
        isElite:
          description: Flag that ensures a restaurant is rated as Elite
          nullable: false
          type: boolean
        restaurantSmileyId:
          description: Restaurant Smiley Id
          nullable: false
          type: string
        url:
          description: URL for complete info of this restaurant at https://www.findsmiley.dk
          nullable: false
          type: string
      type: object
    RestaurantSupportDetails:
      additionalProperties: false
      properties:
        phoneNumber:
          description: Phone number of the restaurant
          nullable: true
          type: string
      type: object
    RestaurantTempOffline:
      additionalProperties: false
      properties:
        categories:
          description: List of current temp offline categories
          items:
            type: string
          nullable: true
          type: array
        type:
          description: Temp offline type
          enum:
            - CancellationOutsideWindow
            - Unset
            - TempOffline
            - ClosedToday
            - ClosedDueTo
            - OnVacationOpens
            - OnVacationClosed
            - None
            - ClosedDueToEvent
            - ClosedDueToEmergency
            - FailedJctConnection
            - NoTrOverride
            - IgnoredOrders
            - ClosedByTempOfflineTool
          nullable: true
          type: string
      type: object
    RestaurantUpdateResponse:
      additionalProperties: false
      properties:
        optimizelyData:
          description: Details of current Optimizely data file and location
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/OptimizelyData"
        ordersData:
          description: Data containing all changed orders for a restaurant since last call
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/OrdersData"
      type: object
    ReverseGeocodingResponse:
      description: Best guess address for passed lat-long
      example:
        geometry:
          coordinates:
            - -0.01938
            - 51.10234
          type: Point
        properties:
          address:
            - Flat 3
            - Greystoke House
            - 127 High Street
            - Chelmsford
            - Essex
            - CM1 4QQ
        type: Feature
      properties:
        geometry:
          description: Geometry information for consumers location
          properties:
            coordinates:
              description: longitude and latitude
              items:
                format: double
                type: number
              maxItems: 2
              minItems: 2
              type: array
            type:
              description: type of primitive
              type: string
          type: object
        properties:
          description: feature metadata
          properties:
            address:
              description: list of address chunks
              items:
                type: string
              type: array
          type: object
        type:
          description: type of primitive
          type: string
      type: object
    ReviewComment:
      additionalProperties: false
      description: Details for a review comment
      example:
        comment: Yum!
        processed: true
        showText: false
      properties:
        comment:
          description: Comment left by customer/restaurant
          nullable: true
          type: string
        processed:
          description: Will be false until processed by an agent/automation
          type: boolean
        showText:
          description: Text for the review comment will be hidden until it has been passed as OK. E.g. ensuring it doesn't contains swear words
          type: boolean
      type: object
    ReviewManagementData:
      additionalProperties: false
      description: A customer review for an order
      example:
        customerCity: London
        customerComment:
          comment: Very tasty!
          processed: true
          showText: true
        customerDisplayName: John
        customerEmail: example@example.com
        hideFromSite: false
        orderDate: 2021-05-14T12:00:00.000Z
        orderNumber: "1234"
        processed: true
        ratings:
          delivery: 6
          quality: 6
          service: 6
        restaurantComment:
          comment: Thank you :-)
          processed: true
          showText: true
        restaurantId: "1234"
        restaurantName: Tasty Snacks
        reviewDate: 2021-05-14T17:00:00.000Z
        reviewId: abc1234
        tenant: uk
      properties:
        customerCity:
          description: The customers city
          nullable: true
          type: string
        customerComment:
          $ref: "#/components/schemas/ReviewComment"
        customerDisplayName:
          description: Customer name shown on the public site. Forename only to avoid disclosing PII
          nullable: true
          type: string
        customerEmail:
          description: The customers email
          format: email
          nullable: true
          type: string
        hideFromSite:
          description: This review is suspect (e.g. a restaurant self-reviewing) so don't display it on the public site
          type: boolean
        orderDate:
          description: When order was placed
          format: date-time
          type: string
        orderNumber:
          description: The user friendly order number
          type: string
        processed:
          description: Flag used to indicate that this review has passed through the validation process.
          type: boolean
        ratings:
          $ref: "#/components/schemas/ReviewScores"
        restaurantComment:
          $ref: "#/components/schemas/ReviewComment"
        restaurantId:
          description: The restaurant partner Id
          type: string
        restaurantName:
          description: The display name for the restaurant
          nullable: true
          type: string
        reviewDate:
          description: When the review was submitted
          format: date-time
          type: string
        reviewId:
          description: Identifier for ratings - will be equivalent to `RatingCode`
          nullable: true
          type: string
        tenant:
          description: A valid country code, e.g. "uk"
          nullable: true
          type: string
      type: object
    ReviewManagementPagedList:
      additionalProperties: false
      description: Represents a page of reviews plus data about the overall result set. E.g. total number of results for the search.
      example:
        paging:
          total: 555
        reviews:
          - customerCity: London
            customerComment:
              comment: Very tasty!
              processed: true
              showText: true
            customerDisplayName: John
            customerEmail: example@example.com
            hideFromSite: false
            orderDate: 2021-05-14T12:00:00.000Z
            orderNumber: "1234"
            processed: true
            ratings:
              delivery: 6
              quality: 6
              service: 6
            restaurantComment:
              comment: Thank you :-)
              processed: true
              showText: true
            restaurantId: "1234"
            restaurantName: Tasty Snacks
            reviewDate: 2021-05-14T17:00:00.000Z
            reviewId: abc1234
            tenant: uk
      properties:
        paging:
          $ref: "#/components/schemas/ReviewManagementPaging"
        reviews:
          description: The current page of reviews
          items:
            $ref: "#/components/schemas/ReviewManagementData"
          nullable: true
          type: array
      type: object
    ReviewManagementPaging:
      additionalProperties: false
      description: Meta data for a set of reviews
      example:
        total: 77
      properties:
        total:
          description: The total number of reviews for the current search
          format: int32
          type: integer
      type: object
    ReviewScores:
      additionalProperties: false
      description: The star ratings given by a customer
      example:
        delivery: 4
        quality: 2
        service: 3
      properties:
        delivery:
          description: The delivery rating
          format: int32
          type: integer
        quality:
          description: The food quality rating
          format: int32
          type: integer
        service:
          description: The restaurant service rating
          format: int32
          type: integer
      type: object
    RichMediaImageBatchResponse:
      example:
        batchStatus: PartiallySucceeded
        images:
          - imageContext:
              dishKey: pizza
              restaurantKey: burgers&pizza
              tenant: uk
            imageStatus: Succeeded
            sourceImageUrl: https://test.test/image01.jpg
            urlTemplate: https://cloudinary.test/image/upload/c_fill,q_auto,{transformations}/v1/uk/dishes/burgers_pizza/image01
          - failureReason: Source image exeeds maximum size of 10 MB.
            imageContext:
              dishKey: burger
              restaurantKey: burgers&pizza
              tenant: uk
            imageStatus: Failed
            sourceImageUrl: https://test.test/image02.jpg
      nullable: false
      properties:
        batchStatus:
          description: The status of batch request
          enum:
            - Queued
            - Running
            - Succeeded
            - PartiallySucceeded
            - Failed
            - Cancelled
          format: enum
          type: string
        images:
          description: The array of images in the batch
          items:
            properties:
              failureReason:
                description: Can contain additional information about image publishing failure
                type: string
              imageContext:
                additionalProperties:
                  type: string
                description: Image context in dictionary format. Can contain additional data that will be published alongside the image.
                type: object
              imageStatus:
                description: The status of individual image
                enum:
                  - Succeeded
                  - Failed
                format: enum
                type: string
              sourceImageUrl:
                description: Source image URL. The remote HTTP or HTTPS URL address of an existing image or a private S3 object URL in a whitelisted bucket.
                type: string
              urlTemplate:
                description: Image URL template that can be used to access the image. Mandatory transformations are already baked in the URL template. The {transformations} placeholder can be replaced with additional Cloudinary transformations that suit your need (e.g. height, width etc). For more details see https://cloudinary.com/documentation/image_transformations
                type: string
            required:
              - sourceImageUrl
              - imageContext
              - imageStatus
            type: object
          maxItems: 500
          type: array
      required:
        - batchStatus
      type: object
    RichMediaImagePublishRequest:
      example:
        imageType: DishImage
        images:
          - imageContext:
              dishKey: pizza
              restaurantKey: burgers&pizza
              tenant: uk
            sourceImageUrl: https://test.test/image01.jpg
          - imageContext:
              dishKey: burger
              restaurantKey: burgers&pizza
              tenant: uk
            sourceImageUrl: https://test.test/image02.jpg
      nullable: false
      properties:
        imageType:
          description: Image type of published images. Must match an image type defined in the metadata for your client.
          type: string
        images:
          description: The array of images to publish.
          items:
            properties:
              imageContext:
                additionalProperties:
                  type: string
                description: Image context in dictionary format. Can contain additional data that will be published alongside the image.
                type: object
              sourceImageUrl:
                description: Source image URL. The remote HTTP or HTTPS URL address of an existing image or a private S3 object URL in a whitelisted bucket.
                type: string
            type: object
          maxItems: 500
          minItems: 1
          type: array
      required:
        - imageType
        - images
      type: object
    SearchByConsumerResponse:
      properties:
        cards:
          items:
            properties:
              amount:
                format: int32
                type: integer
              pan:
                type: string
            type: object
          type: array
      type: object
    SearchByPanResponse:
      properties:
        amount:
          format: int32
          type: integer
        pan:
          type: string
        redemptionHistory:
          items:
            properties:
              consumerId:
                type: string
              redeemedOn:
                format: date-time
                type: string
              status:
                enum:
                  - Redeemed
                  - Failed
                type: string
              statusDetails:
                type: string
              transactionId:
                type: string
            type: object
          type: array
      type: object
    SearchResponse:
      example:
        Area: Fleet Street
        CuisineSets:
          - Cuisines:
              - Name: Pizza
                SeoName: pizza
            Id: user_and_local_cuisines
            Name: ""
            Type: area_cuisines
        Dishes: []
        MetaData:
          Area: Fleet Street
          CanonicalName: ec4-fleetstreet
          CuisineDetails:
            - Name: Danish
              SeoName: danish
              Total: 171
          District: EC4
          Latitude: 0
          Longitude: 0
          Postcode: EC4
          ResultCount: 1
          SearchedTerms: null
          TagDetails:
            - BackgroundColour: "#E6F6C5"
              Colour: "#04822C"
              DisplayName: Tried and Tasted
              Key: tried-and-tasted
              Priority: 300
        RestaurantSets: []
        Restaurants:
          - Address:
              City: London
              FirstLine: London
              Latitude: 51.516454
              Longitude: -0.103137
              Postcode: EC4M 7RF
            Badges: []
            BrandName: ""
            City: London
            CollectionMenuId: null
            CuisineTypes:
              - Id: 2
                IsTopCuisine: false
                Name: English
                SeoName: english
            Cuisines:
              - Name: English
                SeoName: english
            Deals:
              - Description: 20% off when you spend £20
                DiscountPercent: 20
                OfferType: Percent
                QualifyingPrice: 20
            DefaultDisplayRank: 0
            DeliveryChargeBands: []
            DeliveryCost: 0.12
            DeliveryEtaMinutes:
              Approximate: null
              RangeLower: 10
              RangeUpper: 25
            DeliveryMenuId: 224651
            DeliveryOpeningTime: 2019-11-18T01:00:00Z
            DeliveryOpeningTimeLocal: 2019-11-18T01:00:00
            DeliveryOpeningTimeUtc: null
            DeliveryStartTime: 2019-11-18T01:00:00Z
            DeliveryTime: null
            DeliveryTimeMinutes: null
            DeliveryWorkingTimeMinutes: 10
            DeliveryZipcode: null
            Description: ""
            DriveDistance: 0
            DriveInfoCalculated: true
            HygieneRating: null
            Id: 102215
            IsBrand: false
            IsCloseBy: true
            IsCollection: false
            IsDelivery: true
            IsFreeDelivery: false
            IsHalal: false
            IsNew: false
            IsOpenNow: true
            IsOpenNowForCollection: false
            IsOpenNowForDelivery: true
            IsOpenNowForPreorder: false
            IsPremier: false
            IsSponsored: false
            IsTemporarilyOffline: false
            IsTemporaryBoost: false
            IsTestRestaurant: false
            LastUpdated: 2019-09-10T10:55:58.199397
            Latitude: 0
            Logo:
              - StandardResolutionURL: http://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/102215.gif
            LogoUrl: http://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/102215.gif
            Longitude: 0
            MinimumDeliveryValue: 0
            Name: TEST_DP_1
            NewnessDate: 2017-05-02T14:30:21
            NumberOfRatings: 0
            OfferPercent: 0
            Offers:
              - Amount: 20
                MaxQualifyingValue: 50
                OfferId: "136149"
                QualifyingValue: 20
                Type: Percent
            OpeningTime: 2019-11-19T01:00:00Z
            OpeningTimeIso: 2019-11-19T01:00:00
            OpeningTimeLocal: 2019-11-19T01:00:00
            OpeningTimeUtc: null
            OpeningTimes: []
            Postcode: EC4M 7RF
            Rating:
              Average: 0
              Count: 0
              StarRating: 0
            RatingAverage: 0
            RatingStars: 0
            ReasonWhyTemporarilyOffline: ""
            Score: 502
            ScoreMetaData:
              - Key: Distance
                Value: "0"
              - Key: SetName
                Value: Default
            SecondDateRank: 0
            SecondDateRanking: 0
            SendsOnItsWayNotifications: false
            ServiceableAreas: []
            ShowSmiley: false
            SmileyDate: null
            SmileyElite: false
            SmileyResult: null
            SmileyUrl: null
            SponsoredPosition: 0
            Tags: []
            UniqueName: test_dp-london-london
            Url: https://www.just-eat.co.uk/restaurants-test_dp-london-london
        ShortResultText: EC4
        Views: []
        deliveryFees:
          restaurants:
            "102215":
              bands:
                - fee: 100
                  minimumAmount: 0
              minimumOrderValue: 0
              restaurantId: "102215"
        promotedPlacement:
          filteredSearchPromotedLimit: 5
          rankedIds:
            - 84335
          restaurants:
            "84335":
              defaultPromoted: true
              restaurantId: "84335"
      properties:
        CuisineSets:
          items:
            properties:
              Cuisines:
                items:
                  properties:
                    Name:
                      type: string
                    SeoName:
                      type: string
                  type: object
                type: array
              Id:
                type: string
              Name:
                type: string
              Type:
                type: string
            type: object
          type: array
        Dishes:
          items:
            properties:
              Best:
                items:
                  properties:
                    FullName:
                      description: The full name of the product
                      type: string
                    Price:
                      description: The price of the product
                      type: number
                    ProductId:
                      description: Deprecated field no longer populated, but retained for backwards compatibility with clients
                      type: number
                    StrProductId:
                      description: The id of the product
                      type: string
                  type: object
                type: array
              RestaurantId:
                type: number
              Similar:
                items:
                  properties:
                    FullName:
                      type: string
                    Price:
                      type: number
                    ProductId:
                      type: number
                  type: object
                type: array
            type: object
          type: array
        MetaData:
          properties:
            Area:
              type: string
            CanonicalName:
              type: string
            CuisineDetails:
              items:
                properties:
                  Name:
                    type: string
                  SeoName:
                    type: string
                  Total:
                    type: number
                type: object
              type: array
            District:
              type: string
            Latitude:
              description: The latitude of the search location
              type: number
            Longitude:
              description: The longitude of the search location
              type: number
            Postcode:
              type: string
            ResultCount:
              type: number
            SearchedTerms:
              nullable: true
              type: object
            TagDetails:
              items:
                properties:
                  BackgroundColour:
                    type: string
                  Colour:
                    type: string
                  DisplayName:
                    type: string
                  Key:
                    type: string
                  Priority:
                    type: number
                type: object
              type: array
          type: object
        RestaurantSets:
          items:
            properties:
              Id:
                type: string
              Name:
                type: string
              Restaurants:
                items:
                  properties:
                    Id:
                      type: number
                    Metadata:
                      items:
                        properties:
                          Key:
                            type: string
                          Value:
                            type: string
                        type: object
                      type: array
                  type: object
                type: array
              Type:
                type: string
            type: object
          type: array
        Restaurants:
          items:
            $ref: "#/components/schemas/SearchRestaurant"
          type: array
        ShortResultText:
          type: string
        Views:
          items:
            properties:
              Components:
                properties:
                  Id:
                    type: string
                  TemplateName:
                    type: string
                  TrackingId:
                    type: string
                  Type:
                    type: string
                  ViewData:
                    type: object
                type: object
              Target:
                type: string
            type: object
          type: array
        area:
          type: string
        deliveryFees:
          description: Information related to delivery fees.
          properties:
            restaurants:
              additionalProperties:
                $ref: "#/components/schemas/RestaurantDeliveryFees"
              description: Dictionary of `restaurantIds` to delivery fees.
              type: object
          type: object
        promotedPlacement:
          description: Information related to promoted placement restaurants.
          properties:
            filteredSearchPromotedLimit:
              description: How many restaurants to promote when search is filtered
              type: number
            rankedIds:
              description: Restaurants that can be promoted, in preferred order
              items:
                type: number
              type: array
            restaurants:
              additionalProperties:
                $ref: "#/components/schemas/RestaurantPromotedPlacementInfo"
              description: Dictionary of `restaurantIds` to promoted placement info.
              type: object
          type: object
      type: object
    SearchRestaurant:
      properties:
        Address:
          properties:
            City:
              type: string
            FirstLine:
              type: string
            Latitude:
              type: number
            Longitude:
              type: number
            Postcode:
              type: string
          type: object
        Badges:
          items:
            type: object
          type: array
        BrandName:
          type: string
        City:
          type: string
        CollectionMenuId:
          nullable: true
          type: number
        CuisineTypes:
          items:
            properties:
              Id:
                type: number
              IsTopCuisine:
                type: boolean
            type: object
          type: array
        Cuisines:
          items:
            properties:
              Name:
                type: string
              SeoName:
                type: string
            type: object
          type: array
        Deals:
          items:
            properties:
              Description:
                type: string
              DiscountPercent:
                type: number
              OfferType:
                type: string
              QualifyingPrice:
                type: number
            type: object
          type: array
        DefaultDisplayRank:
          type: number
        DeliveryChargeBands:
          items:
            properties:
              BasketThresholdPrice:
                type: number
              DeliveryChargeBelowThreshold:
                type: number
            type: object
          type: array
        DeliveryCost:
          type: number
        DeliveryEtaMinutes:
          properties:
            Approximate:
              nullable: true
              type: number
            RangeLower:
              type: number
            RangeUpper:
              type: number
          type: object
        DeliveryMenuId:
          type: number
        DeliveryOpeningTime:
          format: date-time
          type: string
        DeliveryOpeningTimeLocal:
          $ref: "#/components/schemas/local-date-time"
        DeliveryOpeningTimeUtc:
          format: date-time
          nullable: true
          type: string
        DeliveryStartTime:
          format: date-time
          type: string
        DeliveryTime:
          nullable: true
          type: number
        DeliveryTimeMinutes:
          nullable: true
          type: number
        DeliveryWorkingTimeMinutes:
          type: number
        DeliveryZipcode:
          nullable: true
          type: string
        Description:
          type: string
        DriveDistance:
          type: number
        DriveInfoCalculated:
          type: boolean
        HygieneRating:
          nullable: true
          type: number
        Id:
          type: number
        IsBrand:
          type: boolean
        IsCloseBy:
          type: boolean
        IsCollection:
          type: boolean
        IsDelivery:
          type: boolean
        IsFreeDelivery:
          type: boolean
        IsHalal:
          type: boolean
        IsNew:
          type: boolean
        IsOpenNow:
          type: boolean
        IsOpenNowForCollection:
          type: boolean
        IsOpenNowForDelivery:
          type: boolean
        IsOpenNowForPreorder:
          type: boolean
        IsPremier:
          type: boolean
        IsSponsored:
          type: boolean
        IsTemporarilyOffline:
          type: boolean
        IsTemporaryBoost:
          type: boolean
        IsTestRestaurant:
          type: boolean
        LastUpdated:
          $ref: "#/components/schemas/local-date-time"
        Latitude:
          type: number
        Logo:
          items:
            properties:
              StandardResolutionURL:
                type: string
            type: object
          type: array
        LogoUrl:
          type: string
        Longitude:
          type: number
        MinimumDeliveryValue:
          type: number
        Name:
          type: string
        NewnessDate:
          $ref: "#/components/schemas/local-date-time"
        NumberOfRatings:
          type: number
        OfferPercent:
          type: number
        Offers:
          items:
            additionalProperties: true
            type: object
          type: array
        OpeningTime:
          format: date-time
          type: string
        OpeningTimeIso:
          $ref: "#/components/schemas/local-date-time"
        OpeningTimeLocal:
          $ref: "#/components/schemas/local-date-time"
        OpeningTimeUtc:
          format: date-time
          nullable: true
          type: string
        OpeningTimes:
          items:
            type: object
          type: array
        Postcode:
          type: string
        Rating:
          properties:
            Average:
              type: number
            Count:
              type: number
            StarRating:
              type: number
          type: object
        RatingAverage:
          type: number
        RatingStars:
          type: number
        ReasonWhyTemporarilyOffline:
          type: string
        Score:
          type: number
        ScoreMetaData:
          items:
            properties:
              Key:
                type: string
              Value:
                type: string
            type: object
          type: array
        SecondDateRank:
          type: number
        SecondDateRanking:
          type: number
        SendsOnItsWayNotifications:
          type: boolean
        ServiceableAreas:
          items:
            type: object
          type: array
        ShowSmiley:
          type: boolean
        SmileyDate:
          nullable: true
          type: object
        SmileyElite:
          type: boolean
        SmileyResult:
          nullable: true
          type: object
        SmileyUrl:
          nullable: true
          type: object
        SponsoredPosition:
          type: number
        Tags:
          items:
            type: string
          type: array
        UniqueName:
          type: string
        Url:
          type: string
      type: object
    SearchWebResponse:
      properties:
        Closed:
          items:
            $ref: "#/components/schemas/SearchRestaurant"
          type: array
        Offline:
          items:
            $ref: "#/components/schemas/SearchRestaurant"
          type: array
        Open:
          items:
            $ref: "#/components/schemas/SearchRestaurant"
          type: array
      type: object
    SecretsResponse:
      additionalProperties: false
      properties:
        secrets:
          additionalProperties:
            additionalProperties:
              description: Secret value
              type: string
            description: Key of a single secret
            type: object
          description: Dictionary of secrets providers available
          nullable: true
          type: object
      type: object
    SendSmsRequest:
      additionalProperties: false
      properties:
        message:
          description: Message to send
          nullable: true
          type: string
      type: object
    SendSmsResponse:
      additionalProperties: false
      properties:
        mobileNumberUsed:
          description: Mobile number to which message were sent
          nullable: true
          type: string
      type: object
    ServiceTimes:
      example:
        desiredServiceTimes:
          friday:
            collection:
              - end: 14:00:00
                start: 12:00:00
              - end: 23:00:00
                start: 17:00:00
            delivery:
              - end: 13:30:00
                start: 12:00:00
              - end: 00:00:00
                start: 18:00:00
          monday:
            collection:
              - end: 14:00:00
                start: 12:00:00
              - end: 23:00:00
                start: 17:00:00
            delivery:
              - end: 13:30:00
                start: 12:00:00
              - end: 00:00:00
                start: 18:00:00
          saturday:
            collection:
              - end: 23:00:00
                start: 12:00:00
            delivery:
              - end: 00:00:00
                start: 12:00:00
          sunday:
            collection:
              - end: 23:00:00
                start: 12:00:00
            delivery:
              - end: 00:00:00
                start: 12:00:00
          thursday:
            collection:
              - end: 14:00:00
                start: 12:00:00
              - end: 23:00:00
                start: 17:00:00
            delivery:
              - end: 13:30:00
                start: 12:00:00
              - end: 00:00:00
                start: 18:00:00
          tuesday:
            collection:
              - end: 14:00:00
                start: 12:00:00
              - end: 23:00:00
                start: 17:00:00
            delivery:
              - end: 13:30:00
                start: 12:00:00
              - end: 00:00:00
                start: 18:00:00
          wednesday:
            collection:
              - end: 14:00:00
                start: 12:00:00
              - end: 23:00:00
                start: 17:00:00
            delivery:
              - end: 13:30:00
                start: 12:00:00
              - end: 00:00:00
                start: 18:00:00
      properties:
        serviceTimes:
          allOf:
            - $ref: "#/components/schemas/ServiceTimesDays"
          description: The desired times at which a restaurant is in service
          type: object
      type: object
    ServiceTimesCollection:
      items:
        properties:
          end:
            description: Local end time of the slot in hh:mm:ss format. The end time occurs on the next day if less than or equal to the start time. Times are in the restaurant's time zone which can be obtained by converting `location.geoPosition` value from [the restaurant's details](#operation/GetRestaurantDetails) using a lookup API such as `timezonedb.com`.
            pattern: ^([0-1]\d|2[0-3]):[0-5]\d$:[0-5]\d$
            type: string
          start:
            description: Start time of the slot in hh:mm:ss format. Times are in the restaurant's time zone which can be obtained by converting `location.geoPosition` value from [the restaurant's details](#operation/GetRestaurantDetails) using a lookup API such as `timezonedb.com`.
            pattern: ^([0-1]\d|2[0-3]):[0-5]\d$:[0-5]\d$
            type: string
        type: object
      type: array
    ServiceTimesDays:
      description: The desired times at which a restaurant is in service
      properties:
        friday:
          allOf:
            - $ref: "#/components/schemas/ServiceTimesServices"
          description: Service times for Fridays
        monday:
          allOf:
            - $ref: "#/components/schemas/ServiceTimesServices"
          description: Service times for Mondays
        saturday:
          allOf:
            - $ref: "#/components/schemas/ServiceTimesServices"
          description: Service times for Saturdays
        sunday:
          allOf:
            - $ref: "#/components/schemas/ServiceTimesServices"
          description: Service times for Sundays
        thursday:
          allOf:
            - $ref: "#/components/schemas/ServiceTimesServices"
          description: Service times for Thursdays
        tuesday:
          allOf:
            - $ref: "#/components/schemas/ServiceTimesServices"
          description: Service times for Tuesdays
        wednesday:
          allOf:
            - $ref: "#/components/schemas/ServiceTimesServices"
          description: Service times for Wednesdays
      type: object
    ServiceTimesServices:
      properties:
        collection:
          $ref: "#/components/schemas/ServiceTimesCollection"
          description: The times at which customers can collect from the restaurant
          type: object
        delivery:
          $ref: "#/components/schemas/ServiceTimesCollection"
          description: The times at which the restaurant can provide delivery
          type: object
      type: object
    ServiceType:
      description: ""
      enum:
        - 1
        - 2
      type: integer
      x-enumNames:
        - Collection
        - Delivery
    ServiceTypeFeeConfiguration:
      description: Distinct values which are configured for a particular service type
      example:
        amount: 5
      properties:
        amount:
          description: The value to apply to the basket for this Fee in the smallest unit of currency
          format: integer
          type: number
      type: object
    SetPaymentModeRequest:
      additionalProperties: false
      properties:
        paymentMode:
          description: New payment mode
          enum:
            - CardOnly
            - CardAndCash
          nullable: true
          type: string
      type: object
    SetProductsOfflineRequest:
      properties:
        NextAvailableAt:
          description: The time when products should be brought back online. This may be delayed by up to 5 minutes. There is no upper time limit.
          format: date-time
          type: string
        ProductIds:
          description: Product ids to set offline.
          items:
            type: string
          type: array
        RequestedBy:
          description: Consists of information about who requested changes.
          type: string
      required:
        - ProductIds
        - RequestedBy
        - NextAvailableAt
      type: object
    SetProductsOnlineRequest:
      properties:
        ProductIds:
          description: Product IDs to set online.
          items:
            type: string
          type: array
        RequestedBy:
          description: Consists of information about who requested changes.
          type: string
      required:
        - ProductIds
        - RequestedBy
      type: object
    SettingsFlexStates:
      properties:
        averageAssignableJobLoad:
          description: Average assignable Job load for given state type
          format: double
          nullable: true
          type: number
        flexStateType:
          $ref: "#/components/schemas/FlexStateType"
          description: Flex State Type Options
        triggerUsage:
          description: Usage percentage for given state type
          format: double
          type: number
      type: object
    SetupOrderpadRequest:
      additionalProperties: false
      properties:
        phoneNumber:
          description: Callback phone number
          nullable: true
          type: string
        postCode:
          description: Set up postcode
          nullable: true
          type: string
        setupType:
          $ref: "#/components/schemas/OrderpadSetupType"
          description: Orderpad set up type
      type: object
    Shift:
      description: The shift object associated with a courier on a courier sync payload update.
      properties:
        deliveryZoneId:
          description: Delivery zone id the shift was created for.
          example: 53c3afb5-fcs5-4941-be6d-2179f812sc8d
          type: string
        endDate:
          description: Timestamp for when the shift was ended.
          format: integer
          type: number
        id:
          description: Shift identifier.
          example: 53c3afb5-fcs5-4941-be6d-2179f812sc8d
          type: string
        shiftType:
          $ref: "#/components/schemas/ShiftType"
          description: Type of shift the courier is on
        startDate:
          description: Timestamp for when the shift was started.
          format: integer
          type: number
        vehicle:
          $ref: "#/components/schemas/Vehicle"
          description: Type of vehicle on shift
      type: object
    ShiftType:
      description: The types of shifts available for the couriers.
      enum:
        - REGULAR
        - ON_CALL
        - OVERFLOW
        - ALCOHOL_ELIGIBLE
        - UNKNOWN
      type: string
    SkipMenuEditorGatewayRequest:
      description: GraphQL request
      properties:
        query:
          description: GraphQL statement
          type: string
        variables:
          description: variables used in query
          type: object
      type: object
    SkipMenuEditorGatewayResponse:
      description: GraphQL response
      properties:
        data:
          description: GraphQL data response
          type: object
        errors:
          description: GraphQL errors response
          items:
            type: object
          type: array
      type: object
    Storage:
      example:
        stgInstruction: Example
      properties:
        stgInstruction:
          description: Storage/Usage instructions
          nullable: true
          type: string
      type: object
    SupportRequest:
      description: Object that represents support request
      properties:
        id:
          description: The Id of the request
          type: string
        status:
          description: Request status
          enum:
            - new
            - open
            - closed
            - pending
            - solved
            - hold
            - deleted
        subject:
          description: Request subject
          type: string
        submittedDate:
          description: Request placed date
          format: date-time
          type: string
      type: object
    SupportRequestType:
      description: Object that represents type/sub-type of request
      properties:
        name:
          description: Human readable name
          type: string
        subTypes:
          description: Possible sub-types of request
          items:
            $ref: "#/components/schemas/SupportRequestType"
          type: array
        value:
          description: Type value which will be used for Zendesk ticket as a tag
          type: string
      type: object
    SyncFlexStateType:
      description: <p>The flex state type changes according to the exponential moving average and is used as a reference to bring more couriers to suffice the demand in a given delivery zone.</p> <p>If the flex state type is "Off", it means no shifts will be offered for the delivery zone.</p> <p>If the state is "CLOSED", only scheduled shifts will be allowed for the delivery zone.</p> <p>If the state is "SEEKING", the shift offers are going to be made across the courier network in order to suffice the current demand.</p> <p>If the state is "OPEN", it means demand is high and couriers from all over the courier network are allowed to create shifts for themselves to suffice the current demand.</p> <p>If the state is "CODE_RED", it means not only can everyone create shifts for themselves for the delivery zone but also couriers from other delivery zones might reallocate to help suffice the demand of that particular delivery zone.</p>
      enum:
        - CODE_RED
        - OPEN
        - SEEKING
        - CLOSED
      type: string
    SyncPaymentType:
      description: The order payment status.
      enum:
        - PAID
        - UNPAID
      type: string
    TakeOfflineRequest:
      additionalProperties: false
      properties:
        comment:
          description: Any additional information
          nullable: true
          type: string
        tempOfflineType:
          description: Identifier of the reason for taking the restaurant offline
          enum:
            - TempOffline
            - ClosedToday
          nullable: true
          type: string
      type: object
    TakeProductOffTheMenuCommand:
      additionalProperties: false
      properties:
        createdBy:
          description: Application which requested operation e.g. Orderpad, RestaurantApp
          nullable: true
          type: string
        productIds:
          description: List of product Ids to be taken offline
          items:
            type: string
          nullable: true
          type: array
        requestedAt:
          description: Request date and time in ISO 8601 format
          format: date-time
          nullable: true
          type: string
      type: object
    Takeaway400ErrorResponse:
      description: A HTTP 400 error response
      properties:
        description:
          description: A description of the error.
          type: string
        errorCode:
          description: A value that helps identify this response back to logs, so we can easily find this specific fault.
          type: string
        validationErrors:
          additionalProperties:
            description: Field name that contains error.
            properties:
              errors:
                description: Error explanation.
                items:
                  type: string
                type: array
            type: object
          description: Validation error messages for each field.
          type: object
      type: object
    Takeaway4XXErrorResponse:
      description: A HTTP 4xx error response
      properties:
        description:
          description: A description of the error.
          type: string
        errorCode:
          description: A value that helps identify this response back to logs, so we can easily find this specific fault.
          type: string
      type: object
    Takeaway500ErrorResponse:
      description: A HTTP 500 error response
      properties:
        description:
          description: A description of the error.
          type: string
        errorCode:
          description: A value that helps identify this response back to logs, so we can easily find this specific fault.
          type: string
      type: object
    TextAndActionsStep:
      allOf:
        - $ref: "#/components/schemas/FlowStepBase"
        - properties:
            actions:
              description: Array of actions (i.e. buttons)
              items:
                $ref: "#/components/schemas/HelpAction"
              type: array
            body:
              description: Array of paragraphs for body text
              items:
                type: string
              type: array
            header:
              description: Display header
              type: string
          type: object
      description: "'Default' flow step, consisting of text and next-step actions"
      type: object
    Time:
      example:
        daysOfTheWeek:
          - monday
          - tuesday
          - wednesday
          - thursday
          - friday
          - saturday
          - sunday
        fromDateTime: 11:30:00
        toDateTime: 14:30:00
      properties:
        daysOfTheWeek:
          description: The days of the week.
          items:
            enum:
              - monday
              - tuesday
              - wednesday
              - thursday
              - friday
              - saturday
              - sunday
            type: string
          type: array
        fromDateTime:
          description: Time of day the availability begins, in local time, format is ISO 8601 hh:mm:ss
          type: string
        toDateTime:
          description: Time of day the availability begins, in local time, format is ISO 8601 hh:mm:ss
          type: string
      type: object
    TokenRequest:
      description: The request object for retrieving an access token.
      example:
        client_id: example_clientid
        code: D4DE0039-8193-48A1-BA2D-49E6F0C8ADFF
        code_verifier: kPjhpIVnKGBq3YvnjLDBo65pi91YI4ReJoRV1WMryJa
        grant_type: authorization_code
        redirect_uri: example.com
      properties:
        client_id:
          description: Only required if the client is not authenticating with the same authorisation server.
          nullable: true
          type: string
        code:
          description: The authorisation code received from the authorisation server.
          nullable: false
          type: string
        code_verifier:
          description: High-entropy cryptographic random string with a minimum length of 43 characters and a maximum length of 128 characters.
          nullable: true
          type: string
        grant_type:
          description: OAuth grant type. Value MUST be set to `authorization_code`.
          nullable: false
          type: string
        redirect_uri:
          description: URI to form the path for a redirect response.
          nullable: false
          type: string
      type: object
    TokenRequestErrorResponse:
      description: The error response object for token request endpoint.
      example:
        error: invalid_request
      properties:
        error:
          description: "Error code. Can be one of: `invalid_request`, `invalid_client`, `invalid_grant`, `unauthorized_client`, `unsupported_grant_type`, `invalid_scope`."
          type: string
      type: object
    TokenRequestSuccessResponse:
      description: The success response object for token request endpoint.
      example:
        access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
      properties:
        access_token:
          description: The JWT access token.
          type: string
      type: object
    TopUpPromotion:
      description: The zone profile object for a given delivery zone.
      properties:
        currentAcceptanceRate:
          description: The current order acceptance rate calculated for the courier.
          example: 9500
          format: integer
          type: number
        requiredAcceptanceRate:
          description: The required acceptance rate the courier should have to be eligible for top up bonus subsidy.
          example: 8000
          format: integer
          type: number
        showAcceptanceRate:
          description: Enables showing the courier acceptance rate when true
          type: boolean
      type: object
    TwiMLResult:
      properties:
        data:
          description: set of special TwiML instructions defined by Twilio that will be executed
          readOnly: true
          type: string
      type: object
    TwilioDebuggingEventRequest:
      description: Information about errors and warnings which could occur on Twilio account
      properties:
        accountSid:
          description: Unique identifier of the account that generated the Debugger event
          example: ACxxxxxxxxxxxxxxxxxxxxxxxx
          type: string
        level:
          description: Severity of the Debugger event. Possible values are Error and Warning
          example: Error
          type: string
        parentAccountSid:
          description: Unique identifier of the Parent Account. This parameter only exists if the above account is a sub account
          example: ACxxxxxxxxxxxxxxxxxxxxxxxx
          type: string
        payload:
          description: JSON data specific to the Debugging Event. More details - https://www.twilio.com/docs/usage/troubleshooting/debugging-event-webhooks#payload
          example: "{resource_sid: CAxxxx, service_sid: SSxxxx, error_code: 13227 ,webhook: null, more_info: {  Msg : No International Permission. , ErrorCode : 13227 , LogLevel : WARN }}"
          type: string
        payloadType:
          description: Type of the payload
          example: application/json
          type: string
        sid:
          description: Unique identifier of the Debugger event
          example: NOxxxxx
          type: string
        timestamp:
          description: Time of occurrence of the Debugger event
          example: 2020-01-01T23:28:54.000Z
          type: string
      type: object
    TwilioIncomingMessageCallbackRequest:
      properties:
        body:
          description: The body of the text message being sent
          type: string
        from:
          description: The number of the sender in E.164 format
          type: string
      type: object
    TwilioIncomingVoiceCallbackRequest:
      properties:
        digits:
          description: Any digits the caller has entered on their phone
          type: string
        from:
          description: The number of the caller in E.164 format
          type: string
      type: object
    TwilioInteractionCallbackRequest:
      properties:
        inboundParticipantSid:
          description: The SID of the inbound Participant resource
          type: string
        inboundResourceSid:
          description: The SID of the inbound resource
          type: string
        inboundResourceStatus:
          description: The inbound resource status of the Interaction
          type: string
        inboundResourceType:
          description: The inbound resource type
          type: string
        inboundResourceUrl:
          description: The URL of the Twilio inbound resource
          type: string
        interactionAccountSid:
          description: The SID of the Account that created the Interaction resource
          type: string
        interactionData:
          description: A JSON string that includes the message body of message interactions
          type: string
        interactionDateCreated:
          description: The date and time when the resource was created
          type: string
        interactionDateUpdated:
          description: The date and time when the resource was last updated
          type: string
        interactionServiceSid:
          description: The SID of the parent Service resource
          type: string
        interactionSessionSid:
          description: The SID of the parent Session resource
          type: string
        interactionSid:
          description: The unique string to identify the Interaction resource
          type: string
        interactionType:
          description: The Type of the Interaction
          type: string
        outboundParticipantSid:
          description: The SID of the outbound Participant
          type: string
        outboundResourceSid:
          description: The SID of the outbound resource
          type: string
        outboundResourceStatus:
          description: The outbound resource status of the Interaction
          type: string
        outboundResourceType:
          description: The outbound resource type
          type: string
        outboundResourceUrl:
          description: The URL of the Twilio outbound resource
          type: string
      type: object
    TwilioProxyOutOfSessionCallbackRequest:
      properties:
        callSid:
          description: A unique identifier for the call, generated by Twilio
          type: string
        from:
          description: The number the call or text message is from in E.164 format
          type: string
        sessionDateEnded:
          description: The date and time in which the proxy session ended
          nullable: true
          type: string
        sessionSid:
          description: A unique identifier for the proxy session, generated by Twilio
          type: string
        smsSid:
          description: A unique identifier for the sms, generated by Twilio
          type: string
      type: object
    UnauthorisedMarketingResponse:
      allOf:
        - $ref: "#/components/schemas/MarketingErrorResponse"
        - additionalProperties: false
          description: 401 Unauthorised Returned
          type: object
      example:
        errors:
          - description: Unauthorised
            errorCode: "401"
        faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
        message: Unauthorised
    UpdateAddedDeal:
      properties:
        Date:
          description: "`YYYY-MM-DDThh:mm:ssZ (UTC)`"
          type: string
        DealGroups:
          items:
            $ref: "#/components/schemas/UpdateDealGroup"
          type: array
        ProductId:
          type: string
        Quantity:
          format: integer
          type: number
      type: object
    UpdateAddedProduct:
      properties:
        Date:
          description: "`YYYY-MM-DDThh:mm:ssZ (UTC)`"
          type: string
        ModifierGroups:
          items:
            $ref: "#/components/schemas/UpdateModifierGroup"
          nullable: true
          type: array
        ProductId:
          type: string
        Quantity:
          format: integer
          type: number
        RemovedIngredients:
          items:
            $ref: "#/components/schemas/UpdateRemovedIngredient"
          nullable: true
          type: array
      type: object
    UpdateDeal:
      properties:
        Added:
          items:
            $ref: "#/components/schemas/UpdateAddedDeal"
          nullable: true
          type: array
        Removed:
          items:
            $ref: "#/components/schemas/UpdateRemoved"
          nullable: true
          type: array
        Updated:
          items:
            $ref: "#/components/schemas/UpdateUpdatedDeal"
          nullable: true
          type: array
      type: object
    UpdateDealGroup:
      properties:
        DealGroupId:
          type: string
        Products:
          items:
            $ref: "#/components/schemas/UpdateAddedProduct"
          type: array
      type: object
    UpdateLocation:
      properties:
        GeoLocation:
          nullable: true
          properties:
            Date:
              type: string
            Value:
              allOf:
                - properties:
                    Latitude:
                      format: decimal
                      type: number
                    Longitude:
                      format: decimal
                      type: number
                  type: object
              description: Not available across platform yet, but applied for future proofing.
          type: object
        ZipCode:
          nullable: true
          properties:
            Date:
              type: string
            Value:
              type: string
          type: object
      type: object
    UpdateMenuItemRequest:
      example:
        Category:
          Id: "10"
          Name: Lunches
        Description: Tasty burrito
        HasAllergens: false
        Id: "1"
        Labels:
          - Vegetarian
        Name: Burrito
        OptionGroups:
          - Id: "14"
            Modifiers:
              - Id: "5"
                Name: Plain
                Variations:
                  - AdditionPrice: 0
                    ModifierGroupId: "2"
                    Selected: true
                    VariationId: "3"
                    VariationName: Standard
              - Id: "6"
                Name: Pilau
                Variations:
                  - AdditionPrice: 0
                    ModifierGroupId: "2"
                    Selected: true
                    VariationId: "3"
                    VariationName: Standard
            Name: Rice
        PreferenceGroups:
          - Id: "13"
            Modifiers:
              - Id: "1"
                Name: Green
                Variations:
                  - AdditionPrice: 0.3
                    ModifierGroupId: "2"
                    Selected: true
                    VariationId: "3"
                    VariationName: Standard
              - Id: "2"
                Name: Medium
                Variations:
                  - AdditionPrice: 0.3
                    ModifierGroupId: "2"
                    Selected: true
                    VariationId: "3"
                    VariationName: Standard
              - Id: "3"
                Name: Spicy
                Variations:
                  - AdditionPrice: 0.3
                    ModifierGroupId: "2"
                    Selected: true
                    VariationId: "3"
                    VariationName: Standard
            Name: Salsas
        ReceiptNumber: "123"
        Variations:
          - Id: "3"
            Name: Standard
            Price: 6.99
      properties:
        Category:
          $ref: "#/components/schemas/CategoryRequest"
          description: Category
        Description:
          description: Description
          type: string
        HasAllergens:
          description: Whether this item has allergens
          type: boolean
        Id:
          description: Id
          type: string
        Labels:
          description: Labels
          items:
            type: string
          type: array
          uniqueItems: false
        Name:
          description: Name
          type: string
        OptionGroups:
          description: Option Groups
          items:
            $ref: "#/components/schemas/UpdateModifierGroupRequest"
          maxLength: 100
          type: array
          uniqueItems: false
        PreferenceGroups:
          description: Preference Groups
          items:
            $ref: "#/components/schemas/UpdateModifierGroupRequest"
          maxLength: 100
          type: array
          uniqueItems: false
        ReceiptNumber:
          description: The receipt or kitchen number
          type: string
        Variations:
          description: Variations
          items:
            $ref: "#/components/schemas/UpdateMenuItemVariationRequest"
          maxLength: 75
          type: array
          uniqueItems: false
      type: object
    UpdateMenuItemVariationRequest:
      example:
        Id: "12"
        Name: Extra-mega-large
        Price: 50
      properties:
        Id:
          description: Id
          type: string
        Name:
          description: Name
          type: string
        Price:
          description: Price
          format: double
          type: number
      type: object
    UpdateModifier:
      properties:
        ModifierId:
          type: string
        Quantity:
          format: integer
          type: number
      type: object
    UpdateModifierGroup:
      properties:
        ModifierGroupId:
          type: string
        Modifiers:
          items:
            $ref: "#/components/schemas/UpdateModifier"
          type: array
      type: object
    UpdateModifierGroupRequest:
      example:
        Id: "13"
        Modifiers:
          - Id: "1"
            Name: Green
            Variations:
              - AdditionPrice: 0.3
                ModifierGroupId: "2"
                Selected: true
                VariationId: "3"
                VariationName: Standard
          - Id: "2"
            Name: Medium
            Variations:
              - AdditionPrice: 0.3
                ModifierGroupId: "2"
                Selected: true
                VariationId: "3"
                VariationName: Standard
          - Id: "3"
            Name: Spicy
            Variations:
              - AdditionPrice: 0.3
                ModifierGroupId: "2"
                Selected: true
                VariationId: "3"
                VariationName: Standard
        Name: Salsas
      properties:
        Id:
          description: Id
          type: string
        Modifiers:
          description: Modifiers within this group
          items:
            $ref: "#/components/schemas/UpdateModifierRequest"
          type: array
          uniqueItems: false
        Name:
          description: Name
          type: string
      type: object
    UpdateModifierRequest:
      example:
        Id: "1"
        Name: Green
        Variations:
          - AdditionPrice: 0.3
            ModifierGroupId: "2"
            Selected: true
            VariationId: "3"
            VariationName: Standard
      properties:
        AdditionPrice:
          description: Additional price
          format: double
          type: number
        Id:
          description: Id
          type: string
        Name:
          description: Name
          type: string
        Variations:
          description: Variations permitted
          items:
            $ref: "#/components/schemas/VariationModifierResponse"
          type: array
          uniqueItems: false
      type: object
    UpdateOrderAddressRequest:
      description: The request object for setting the order address of a basket.
      example:
        address:
          - 123 Wye Avenue, Eaton
        city: Bristol
        email: user@email.com
        geoPosition:
          latitude: 456.123
          longitude: 123.456
        name: J.E.Hungerton
        orderable: true
        phoneNumber: "0123456789"
        polygonName: BS1 1AA
        postCode: BS1 1AA
        serviceType: delivery
      properties:
        address:
          description: An array of strings containing lines of the customer's order address.
          items:
            type: string
          nullable: false
          type: array
        city:
          description: String value containing the city name of the customer's order address.
          nullable: false
          type: string
        email:
          description: The customer's email address.
          nullable: false
          type: string
        geoPosition:
          allOf:
            - $ref: "#/components/schemas/OrderGeoPosition"
          description: Geoposition object containing latitude and longitude values for the customer's order address
          nullable: true
        name:
          description: The customer's name.
          nullable: false
          type: string
        phoneNumber:
          description: The customer's phone number.
          nullable: false
          type: string
        polygonName:
          description: String value containing the polygon name of customer's order address (in tenants with no polygon name, will be the same as postcode).
          nullable: false
          type: string
        postCode:
          description: String value containing the postcode of the customer's order address.
          nullable: false
          type: string
        serviceType:
          description: Service Type associated with the order details.
          enum:
            - delivery
            - collection
          nullable: false
          type: string
      required:
        - address
        - city
        - postCode
        - orderable
        - email
        - phoneNumber
        - geoPosition
        - polygonName
      type: object
    UpdateOrderDetails:
      properties:
        Location:
          allOf:
            - $ref: "#/components/schemas/UpdateLocation"
          nullable: true
      type: object
    UpdateOrderTimeRequest:
      description: The request object for setting the order time for a basket.
      example:
        asap: true
        dateTime: 2020-02-05T16:26:30+0000
        menuId: "12345"
      properties:
        asap:
          description: True if the user has selected as soon as possible on the order, else false
          nullable: false
          type: boolean
        dateTime:
          description: The order time to set for the basket.
          nullable: false
          type: string
        menuId:
          description: The menu id that orderability of a basket is calculated against
          nullable: false
          type: string
      required:
        - dateTime
        - asap
        - menuId
      type: object
    UpdatePasswordResetFlowResponse:
      example:
        accessCode: 8It2lEaJjG82nJtxO00Iab0CoF0=
        expiry: 2021-01-20T19:35:13.643Z
      properties:
        accessCode:
          description: The One Time Access Code (OTAC).
          type: string
        expiry:
          description: The expiry of the OTAC.
          example: 2021-01-20T19:35:13.643Z
          format: date-time
          type: string
      type: object
    UpdateProduct:
      properties:
        Added:
          items:
            $ref: "#/components/schemas/UpdateAddedProduct"
          nullable: true
          type: array
        Removed:
          items:
            $ref: "#/components/schemas/UpdateRemoved"
          nullable: true
          type: array
        Updated:
          items:
            $ref: "#/components/schemas/UpdateUpdatedProduct"
          nullable: true
          type: array
      type: object
    UpdateQuantity:
      properties:
        Change:
          description: Value to apply to existing quantity.
          format: integer
          type: number
        Total:
          description: Value that replaces the current quantity.
          format: integer
          type: number
      type: object
    UpdateRemoved:
      properties:
        BasketProductId:
          description: A unique identifier for a product in the basket. This is needed to support complex products to make sure remove/update is applied to the correct product.
          type: string
        Date:
          description: "`YYYY-MM-DDThh:mm:ssZ (UTC)`"
          type: string
      type: object
    UpdateRemovedIngredient:
      properties:
        Details:
          type: string
      type: object
    UpdateRequest:
      description: The request object for updating a basket.
      properties:
        BasketId:
          type: string
        Deal:
          allOf:
            - $ref: "#/components/schemas/UpdateDeal"
          nullable: true
        OrderDetails:
          allOf:
            - $ref: "#/components/schemas/UpdateOrderDetails"
          description: Information needed to allow an order to be placed on a basket.
          nullable: true
        Product:
          allOf:
            - $ref: "#/components/schemas/UpdateProduct"
          nullable: true
        SelectedServiceType:
          nullable: true
          properties:
            Date:
              type: string
            Value:
              type: string
          type: object
      type: object
    UpdateUpdatedDeal:
      properties:
        BasketProductId:
          type: string
        Date:
          description: "`YYYY-MM-DDThh:mm:ssZ (UTC)`"
          type: string
        DealGroups:
          items:
            $ref: "#/components/schemas/UpdateDealGroup"
          type: array
        Quantity:
          items:
            $ref: "#/components/schemas/UpdateQuantity"
          type: object
      type: object
    UpdateUpdatedProduct:
      properties:
        BasketProductId:
          type: string
        Date:
          description: "`YYYY-MM-DDThh:mm:ssZ (UTC)`"
          type: string
        ModifierGroups:
          items:
            $ref: "#/components/schemas/UpdateModifierGroup"
          nullable: true
          type: array
        Quantity:
          items:
            $ref: "#/components/schemas/UpdateQuantity"
          type: object
        RemovedIngredients:
          items:
            $ref: "#/components/schemas/UpdateRemovedIngredient"
          nullable: true
          type: array
      type: object
    UserRole:
      description: |-
        
        - `System` : Role for an automated process action.
        - `Operations` : Role for an operations user action.
        - `Restaurant` : Role for a restaurant owner/employee user action.
      enum:
        - System
        - Operations
        - Restaurant
      type: string
    ValidationError:
      additionalProperties: false
      example:
        attemptedValue: null
        customState: null
        errorCode: NotEmptyValidator
        errorMessage: TestProperty is empty
        formattedMessageArguments: []
        formattedMessagePlaceHolderValues:
          PropertyName: User Role
          PropertyValue: null
        propertyName: TestProperty
        resourceName: null
        severity: 0
      properties:
        attemptedValue:
          description: The property value that caused the failure
          nullable: true
          type: string
        customState:
          description: Custom state associated with the failure
          nullable: true
          type: string
        errorCode:
          description: The error code
          type: string
        errorMessage:
          description: The error message
          type: string
        formattedMessageArguments:
          description: Custom formatted validator messages with placeholders
          items:
            type: string
          type: array
        formattedMessagePlaceHolderValues:
          additionalProperties: true
          description: The values for placeholders in the formatted messages
          type: object
        propertyName:
          description: The name of the property causing the failure
          type: string
        resourceName:
          description: The resource name used for building the message
          nullable: true
          type: string
        severity:
          description: Severity of a validation rule. Will always be 0 (Error).
          type: number
      type: object
    Validity:
      additionalProperties: false
      properties:
        CuisineIds:
          description: The cuisine ids the voucher is valid for
          items:
            type: string
          nullable: true
          type: array
        EndDate:
          description: The end date of the voucher
          format: date-time
          nullable: true
          type: string
        MinimumSpend:
          description: The minimum spend to use the voucher
          format: decimal
          nullable: true
          type: number
        OrderNumberValidity:
          description: The number of orders a customer has placed to satisfy the requirements of the voucher
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/OrderNumberValidity"
        PaymentOptionTypes:
          description: The payment options the voucher is restricted to
          items:
            type: string
          nullable: true
          type: array
        Platform:
          description: The order platform using the voucher
          nullable: true
          type: string
        PostCode:
          description: The post code applicable to the order
          nullable: true
          type: string
        RestaurantIds:
          description: A comma separate list of restaurant ids
          nullable: true
          type: string
        RestrictedToConsumerStatus:
          description: Whether the voucher is restricted to new customers, returning customers etc
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/ConsumerStatus"
        ServiceType:
          description: The service type for the voucher (e.g. Delivery, collection)
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/ServiceType"
        StartDate:
          description: The start date of the voucher
          format: date-time
          nullable: true
          type: string
        ValidFromHour:
          description: Whether time the voucher is valid from
          format: time-span
          nullable: true
          type: string
        ValidOnDays:
          description: The days of the week the voucher is valid on
          items:
            $ref: "#/components/schemas/DayOfWeek"
          nullable: true
          type: array
        ValidToHour:
          description: Whether time the voucher is valid to
          format: time-span
          nullable: true
          type: string
      type: object
    Variation:
      example:
        availabilityIds:
          - 1-lunch-delivery
          - 2-lunch-collection
          - 3-dinner-delivery
          - 4-dinner-collection
        basePrice: 1000
        dealGroupsIds: []
        dealOnly: false
        id: "8547130"
        kitchenNumber: "100"
        modifierGroupsIds:
          - 8547130-req-1
          - 8547130-opt-1
        name: 12 inch
        type: variation
      properties:
        availabilityIds:
          description: Maps to an availability item, availabilities determines which days and times the item can be sold.
          items:
            type: string
          type: array
        basePrice:
          description: The base price of this variation in the minor unit of the currency.
          format: int32
          type: number
        dealGroupsIds:
          description: Maps to the deal groups that are applicable to this variation.
          items:
            type: string
          type: array
        dealOnly:
          description: This flag indicates the variation is only available as part of a deal, the item will not be displayed as a stand alone menu item.
          type: boolean
        id:
          description: A unique identifier at menu level for a variation, can be shared with parent menu item id.
          type: string
        kitchenNumber:
          description: Identifies the item with a number on the physical menu that the kitchen understand e.g. on a Chinese menu number 16 could correspond to "BBQ ribs"
          type: string
        modifierGroupsIds:
          description: Maps to the modifier groups that are applicable to this variation.
          items:
            type: string
          type: array
        name:
          description: The name of the variation.
          type: string
        type:
          description: Denotes the type of variation, `Variation` if there's multiple variations of the parent `menuitem`, `NoVariation` if there's only one
          enum:
            - noVariation
            - variation
          type: string
      type: object
    VariationModifierResponse:
      example:
        AdditionPrice: 12.34
        ModifierGroupId: "2"
        Selected: true
        VariationId: "3"
        VariationName: Large
      properties:
        AdditionalPrice:
          description: The additional price
          format: double
          type: number
        ModifierGroupId:
          description: Id of the modifier group
          type: string
        Selected:
          description: Whether this modifier is permitted on this variation
          type: boolean
        VariationId:
          description: Id of the variation
          type: string
        VariationName:
          description: Name of the variation
          type: string
      type: object
    VariationReorderDeal:
      additionalProperties: false
      properties:
        Attributes:
          additionalProperties: false
          description: An object containing all the attributes of a Deal
          properties:
            DealGroups:
              description: A list of all the deal groups attached to a deal. 20 items maximum.
              items:
                $ref: "#/components/schemas/VariationReorderDealGroup"
              type: array
            Quantity:
              description: How many of the deal were previously ordered. When re-adding to basket this is the number that should be added.
              type: integer
            Rank:
              description: The position in the deal in the list. The data list is ordered by this ascending.
              type: integer
          type: object
        Id:
          description: The unique identifier for the deal.
          type: string
        Type:
          description: The type of the object. This will always be 'deal'.
          type: string
      title: VariationReorderDeal
      type: object
    VariationReorderDealGroup:
      additionalProperties: false
      properties:
        Id:
          description: The unique identifier for a deal group.
          type: string
        Variations:
          description: A list of variations in the deal group. 20 items maximum.
          items:
            $ref: "#/components/schemas/VariationReorderVariation"
          type: array
      title: VariationReorderDealGroup
      type: object
    VariationReorderModifier:
      additionalProperties: false
      properties:
        Id:
          description: A unique identifier for the variation modifier.
          type: string
        Quantity:
          description: How many of the modifier were previously added to the variation.
          type: integer
      title: VariationReorderModifier
      type: object
    VariationReorderModifierGroup:
      additionalProperties: false
      properties:
        Id:
          description: The unique identifier for a modifier group.
          type: string
        Modifiers:
          description: A list of modifiers applied in this modifier group. 20 items maximum.
          items:
            $ref: "#/components/schemas/VariationReorderModifier"
          type: array
      title: VariationReorderModifierGroup
      type: object
    VariationReorderRankedVariation:
      additionalProperties: false
      properties:
        Attributes:
          additionalProperties: false
          description: An object containing all the attributes of a Deal
          properties:
            ModifierGroups:
              description: A list of all the modifiers previously applied to the variation. 20 items maximum.
              items:
                $ref: "#/components/schemas/VariationReorderModifierGroup"
              type: array
            Quantity:
              description: How many of the variation were previously ordered. When re-adding to basket, this is the number that should be added.
              type: integer
            Rank:
              description: The position in the variation in the array. The data array is ordered by this ascending.
              type: integer
          type: object
        Id:
          description: The unique identifier for the variation.
          type: string
        Type:
          description: The type of the object. This will always be 'variation'.
          type: string
      title: VariationReorderRankedVariation
      type: object
    VariationReorderVariation:
      additionalProperties: false
      properties:
        Id:
          description: The unique identifier for the variation.
          type: string
        ModifierGroups:
          description: A list of all the modifiers previously applied to the variation. 20 items maximum.
          items:
            $ref: "#/components/schemas/VariationReorderModifierGroup"
          type: array
        Quantity:
          description: How many of the variation were previously ordered.
          type: integer
      title: VariationReorderVariation
      type: object
    VariationResponse:
      example:
        Id: "32"
        Name: Large
        OptionGroupIds:
          - "1"
        PreferenceGroupIds:
          - "12"
          - "32"
        Price: 12.32
      properties:
        Id:
          description: Id
          type: string
        Name:
          description: Name
          type: string
        OptionGroupIds:
          description: List of option group ids applicable to this variation
          items:
            type: string
          type: array
          uniqueItems: false
        PreferenceGroupIds:
          description: List of preference group ids applicable to this variation
          items:
            type: string
          type: array
          uniqueItems: false
        Price:
          description: Price
          format: double
          type: number
        Type:
          description: Type
          type: string
      type: object
    Vehicle:
      description: All The types of vehicle available.
      enum:
        - CAR
        - BICYCLE
        - TRICYCLE
        - VAN
        - TRUCK
      type: string
    Voucher:
      additionalProperties: false
      properties:
        Code:
          description: The voucher code
          nullable: true
          type: string
        CodeType:
          $ref: "#/components/schemas/CodeType"
          description: The type of voucher code
        Created:
          description: The created time (UTC) of the voucher
          format: date-time
          type: string
        CreatedBy:
          description: The creator of the voucher
          nullable: true
          type: string
        Id:
          description: The voucher id
          format: int32
          type: integer
        Lock:
          description: If the voucher is locked and what it is locked to
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/VoucherLock"
        PaymentOptionTypes:
          description: The payment options the voucher is restricted to
          items:
            type: string
          nullable: true
          type: array
      type: object
    VoucherGroup:
      additionalProperties: false
      properties:
        Archived:
          description: Whether the voucher group is flagged as archived
          type: boolean
        Created:
          description: The created time (UTC) of the voucher group
          format: date-time
          type: string
        CreatedBy:
          description: The creator of the voucher group
          nullable: true
          type: string
        Discount:
          description: The details of the discount (amount / type etc)
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/Discount"
        GroupType:
          $ref: "#/components/schemas/GroupType"
          description: The type of the voucher group (e.g. Dynamically Created Single Use)
        Hidden:
          description: Whether the voucher group is flagged as hidden
          type: boolean
        Id:
          description: The Id of the voucher group
          format: int32
          type: integer
        Name:
          description: The name of the voucher group
          nullable: true
          type: string
        Source:
          description: The source system creating the voucher group
          nullable: true
          type: string
        StaticCode:
          description: The static code of the voucher group (will be normalised as part of the creation)
          nullable: true
          type: string
        Updated:
          description: The updated time (UTC) of the voucher group
          format: date-time
          type: string
        Validity:
          description: The parameters that determine the validity of the voucher group
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/Validity"
      type: object
    VoucherLock:
      additionalProperties: false
      properties:
        Consumed:
          description: The UTC date it was consumed
          format: date-time
          nullable: true
          type: string
        ConsumerStatus:
          description: The Customer Status (i.e. new customers, returning customers etc)
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/ConsumerStatus"
        CuisinesIds:
          description: The number of orders
          items:
            type: string
          nullable: true
          type: array
        CustomerId:
          description: The Customer Id the voucher is locked to
          nullable: true
          type: string
        DeliveryFee:
          description: The delivery fee
          format: decimal
          type: number
        DiscountApplied:
          description: The Discount Applied
          format: decimal
          type: number
        Locked:
          description: The UTC date it was locked
          format: date-time
          nullable: true
          type: string
        NumberOfOrders:
          description: The number of orders
          format: int32
          nullable: true
          type: integer
        OrderAmount:
          description: The order amount
          format: decimal
          type: number
        OrderId:
          description: The Order Id the voucher is locked to
          nullable: true
          type: string
        OrderPlacedDateWithUtcOffset:
          description: The order placed date
          format: date-time
          nullable: true
          type: string
        PaymentOptionType:
          description: The payment option
          nullable: true
          type: string
        Platform:
          description: The order platform
          nullable: true
          type: string
        PostCode:
          description: The post code
          nullable: true
          type: string
        RestaurantId:
          description: The restaurant id
          format: int32
          type: integer
        ServiceType:
          description: The service type (i.e. Delivery, Collection)
          nullable: true
          oneOf:
            - $ref: "#/components/schemas/ServiceType"
        State:
          $ref: "#/components/schemas/VoucherStates"
          description: The current state
        VoucherId:
          description: The voucher id
          format: int32
          type: integer
      type: object
    VoucherStates:
      description: ""
      enum:
        - 0
        - 1
        - 2
      type: integer
      x-enumNames:
        - Available
        - Locked
        - Consumed
    VoucherType:
      description: Type of voucher
      enum:
        - 0
        - 1
        - 2
      type: integer
      x-enumNames:
        - Absolute
        - Percentage
        - DeliveryFee
    WellKnownConfigurationResponse:
      description: The success response object for the well-known endpoint.
      example:
        authorization_endpoint: http://uk-tokenweb.cwa.je-labs.com/applications/tokenweb/authorize
        issuer: http://uk-tokenweb.cwa.je-labs.com
        jwks_uri: http://uk-tokenweb.cwa.je-labs.com/.well-known/jwks.json
        response_types_supported:
          - code
        scopes_supported:
          - ""
        token_endpoint: http://uk-tokenweb.cwa.je-labs.com/applications/tokenweb/token
        token_endpoint_auth_methods_supported:
          - client_secret_basic
        userinfo_endpoint: http://uk-tokenweb.cwa.je-labs.com/userinfo
      properties:
        authorization_endpoint:
          description: URL of the authorisation endpoint.
          nullable: false
          type: string
        issuer:
          description: URL used to identify the issuer.
          nullable: false
          type: string
        jwks_uri:
          description: URL of the JSON Web Key Set. This contains the signing keys used to validate signatures.
          nullable: false
          type: string
        response_types_supported:
          description: List containing the OAuth 2.0 `response_type` values which are supported.
          items:
            type: string
          nullable: true
          type: array
        scopes_supported:
          description: List containing the scope values that the server supports.
          items:
            type: string
          nullable: true
          type: array
        token_endpoint:
          description: URL of the token endpoint.
          nullable: false
          type: string
        token_endpoint_auth_methods_supported:
          description: List containing the Client Authentication methods supported by this Token Endpoint.
          items:
            type: string
          nullable: true
          type: array
        userinfo_endpoint:
          description: URL of the user info endpoint.
          nullable: false
          type: string
      type: object
    ZoneProfile:
      description: The zone profile object for a given delivery zone.
      properties:
        averageAssignableJobLoad:
          description: The burden over the couriers in a delivery zone. The average assignable job load is calculated by the sum of all jobs assigned to the couriers divided by the delivery zone's total assignable courier count.
          example: 0.7
          format: double
          type: number
        bender:
          description: Bender On/Off object
          properties:
            enabled:
              description: Bender Enabled/Disabled status
              type: boolean
          type: object
        ema:
          description: The simple moving average is the usage for a given delivery zone, which is calculated by using the sum of all on-shift utilisation ( percentage of time a courier spends working on orders during their shift ) at the time, divided by the number of time periods gathered from all data points. Differently from simple moving average, exponential moving average also represents the usage however its equation places a greater weight on the most recent data points.
          example: 70
          format: integer
          type: number
        flexStateType:
          $ref: "#/components/schemas/BenderFlexStateType"
          description: The flex state type changes according to the exponential moving average and is used as a reference to bring more couriers to suffice the demand in a given delivery zone.
        zoneId:
          description: Zone profile delivery zone id.
          example: 53c3afb5-fcs5-4941-be6d-2179f812sc8d
          type: string
      type: object
    acceptance-requested:
      example:
        Currency: GBP
        Customer:
          Id: 12345
          Name: Bruce Wayne
          PreviousRestaurantOrderCount: 5
          PreviousTotalOrderCount: 83
        CustomerNotes:
          noteForDelivery: delivery note
          noteForRestaurant: restaurant note
        FriendlyOrderReference: REF0001
        Fulfilment:
          Address:
            City: London
            Geolocation:
              Latitude: 51.51641
              Longitude: -0.103198
            Lines:
              - Fleet Place House
              - Fleet Pl
            PostalCode: EC4M 7RD
          CustomerDueAsap: false
          CustomerDueDate: 2018-03-10T14:45:28Z
          Method: Delivery
          PhoneMaskingCode: "9999999"
          PhoneNumber: "+441234567890"
          PreparationTime: 0:23:32
        IsTest: true
        Items:
          - Items:
              - Items: []
                Name: Fries
                Quantity: 1
                Reference: "9876"
                Synonym: Regular
                UnitPrice: 0
              - Items: []
                Name: Pepsi
                Quantity: 2
                Reference: "6789"
                Synonym: 330ml
                UnitPrice: 0
            Name: Chicken Box Meal
            Quantity: 2
            Reference: "1234"
            Synonym: ""
            TotalPrice: 10
            UnitPrice: 5
          - Items: []
            Name: Milkshake
            Quantity: 1
            Reference: "4321"
            Synonym: ""
            TotalPrice: 7.25
            UnitPrice: 7.25
        OrderId: ABCD654321
        Payment:
          Lines:
            - Paid: false
              Type: AccountCredit
              Value: 19.25
            - Paid: true
              Type: CreditCard
              Value: 19.25
        PlacedDate: 2018-03-10T14:45:28Z
        PriceBreakdown:
          Discount: 0
          Fees:
            Delivery: 1
            Other: 0
            ServiceCharge: 0.5
          Items: 17.25
          Taxes: 3.85
          Tips: 0.5
        Restaurant:
          Address:
            City: London
            Geolocation:
              Latitude: 51.4484
              Longitude: -0.1504
            Lines:
              - Oldridge Road
            PostalCode: SW12 8PW
          Id: I12345
          Name: Just Eat Test Restaurant
          PhoneNumber: "+441200000000"
          Refererence: R99999
          TimeZone: Australia/Sydney (IANA format)
        Restrictions:
          - Type: Alcohol
        TotalPrice: 19.25
      properties:
        Currency:
          type: string
        Customer:
          properties:
            Id:
              nullable: true
              type: number
            Name:
              type: string
            PreviousRestaurantOrderCount:
              description: The customer's previous total number of orders made to this restaurant
              type: number
            PreviousTotalOrderCount:
              description: The customer's previous total number of orders made to all restaurants
              type: number
          type: object
        CustomerNotes:
          additionalProperties:
            type: string
          type: object
        FriendlyOrderReference:
          type: string
        Fulfilment:
          properties:
            Address:
              $ref: "#/components/schemas/order-address"
            CustomerDueAsap:
              type: boolean
            CustomerDueDate:
              format: date-time
              type: string
            Method:
              enum:
                - Delivery
                - Collection
              type: string
            PhoneMaskingCode:
              description: Code to use when calling customer phone masking number about this order. null if phone masking not enabled
              type: string
            PhoneNumber:
              description: Customer phone number (will be phone masking number if enabled)
              type: string
            PreparationTime:
              format: timespan
              type: string
          type: object
        IsTest:
          type: boolean
        Items:
          $ref: "#/components/schemas/order-item"
        OrderId:
          type: string
        Payment:
          properties:
            Lines:
              items:
                properties:
                  Paid:
                    type: boolean
                  Type:
                    type: string
                  Value:
                    format: money
                    type: number
                type: object
              type: array
          type: object
        PlacedDate:
          format: date-time
          type: string
        PriceBreakdown:
          properties:
            Discount:
              format: money
              nullable: true
              type: number
            Fees:
              properties:
                Delivery:
                  format: money
                  nullable: true
                  type: number
                Other:
                  format: money
                  nullable: true
                  type: number
                ServiceCharge:
                  format: money
                  nullable: true
                  type: number
              type: object
            Items:
              format: money
              nullable: true
              type: number
            Taxes:
              format: money
              nullable: true
              type: number
            Tips:
              format: money
              nullable: true
              type: number
          type: object
        Restaurant:
          properties:
            Address:
              $ref: "#/components/schemas/order-address"
            Id:
              description: Restaurant Id
              type: string
            Name:
              type: string
            PhoneNumber:
              type: string
            Reference:
              type: string
            TimeZone:
              type: string
          type: object
        Restrictions:
          description: This is a list of types of restricted items contained in the order.
          items:
            $ref: "#/components/schemas/order-item-restriction"
          type: array
        TotalPrice:
          format: money
          type: number
      type: object
    address:
      properties:
        AddressLines:
          items:
            type: string
          type: array
        City:
          type: string
        Postcode:
          type: string
      type: object
    address-v2:
      properties:
        City:
          type: string
        GeoLocation:
          $ref: "#/components/schemas/location-v2"
        Lines:
          items:
            type: string
          type: array
        PostalCode:
          type: string
      required:
        - Lines
        - City
        - PostalCode
        - Geolocation
      type: object
    applicationState:
      description: The application state i.e. Open, Approved etc.
      enum:
        - OpenApplication
        - ManualInterventionRequired
        - ReadyForInitialReview
        - InitialReviewRejected
        - ReadyForFinalReview
        - FinalReviewRejected
        - Approved
      type: string
    applicationSubmitResponse:
      properties:
        applicationState:
          $ref: "#/components/schemas/applicationState"
          description: The current application state i.e. Open, Approved etc.
      type: object
    assessmentStatusTypes:
      description: Denotes the type of segmentation status that restaurant can have
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
      example: 1
      format: enum
      type: integer
      x-enumNames:
        - Unknown
        - LocalLegend
        - Gold
        - Silver
        - New
    attempted-delivery-created:
      example:
        OrderId: wiej234idf09i29jijgf4
        Reason: Customer did not answer the door
        RestaurantId: 110230
        Tenant: uk
      properties:
        OrderId:
          description: The id of the order
          type: string
        Reason:
          description: The reason for creating the attempted delivery
          type: string
        RestaurantId:
          description: The id of the restaurant
          type: number
        Tenant:
          description: The tenant associated with the order
          type: string
      type: object
    attempted-delivery-resolved:
      example:
        OrderId: wiej234idf09i29jijgf4
        Resolution:
          Redelivery:
            CustomerTimeZone: Europe/London
            NewDueDate: 2018-03-10T14:45:28Z
            Status: repreparing
          Type: redeliver_order
        Tenant: uk
      properties:
        OrderId:
          description: The ID of the order for which an attempted delivery query has been resolved
          type: string
        Resolution:
          description: Details of the resolution to the query
          properties:
            Cancellation:
              description: The cancellation properties. Only required if the order has been cancelled, otherwise null
              properties:
                Reason:
                  description: The reason for cancelling the order
                  enum:
                    - new_address_not_within_area
                    - unable_to_reprepare
                    - driver_not_available
                    - area_unsafe
                    - customer_doesnt_want_anymore
                  type: string
              type: object
            Redelivery:
              description: The redelivery properties. Only required if the order is being redelivered, otherwise null
              properties:
                CustomerTimeZone:
                  description: The IANA TZ database name of the time zone the customer that placed the order is in
                  type: string
                NewDueDate:
                  description: Updated due date for delivery of the order in ISO 8601 format
                  format: date-time
                  type: string
                Status:
                  description: The current status of the order
                  enum:
                    - driver_at_address
                    - repreparing
                  type: string
              type: object
            Type:
              description: The type of resolution to the query, either cancellation or redelivery
              enum:
                - order_cancelled
                - redeliver_order
              type: string
          type: object
        Tenant:
          description: The tenant of the restaurant the order was placed at
          enum:
            - uk
            - dk
            - es
            - ie
            - it
            - no
            - au
            - nz
          type: string
      type: object
    attempted-delivery-response-received:
      example:
        Notes: Please press 123 on the door
        OrderId: wiej234idf09i29jijgf4
        Tenant: uk
        Update: Please redeliver
      properties:
        Notes:
          type: string
        OrderId:
          type: string
        Tenant:
          type: string
        Update:
          type: string
      type: object
    availability-result:
      properties:
        message:
          description: Error description when something went wrong or `unprocessedPartnerProductIds` any
          type: string
        processedPartnerProductIds:
          description: Array of partner product identifiers that have been successfully processed
          items:
            type: string
          type: array
        unprocessedPartnerProductIds:
          description: Array of partner product identifiers that have not been processed
          items:
            type: string
          type: array
      type: object
    availability-result-error:
      properties:
        message:
          description: Short error description
          type: string
      type: object
    binary-object:
      format: binary
      type: string
    bulk-delivery-details:
      properties:
        EtaAtDeliveryAddress:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the delivery address.
          example: 2020-12-25T16:45:28.7537228+00:00
          format: date-time
          type: string
        EtaAtRestaurant:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the restaurant.
          example: 2020-12-25T16:30:28.7537228+00:00
          format: date-time
          type: string
        Location:
          $ref: "#/components/schemas/location"
        OrderId:
          description: Just Eat order identifier
          type: string
        TimeStampWithUtcOffset:
          description: This should represent the bulk delivery updated timestamp.
          format: date-time
          type: string
      type: object
    bulk-delivery-details-list:
      items:
        $ref: "#/components/schemas/bulk-delivery-details"
      type: array
    campaignId:
      properties:
        campaignId:
          description: Id of the campaign
          type: string
      type: object
    connectorder:
      properties:
        BasketInfo:
          description: Basket data
          properties:
            BasketId:
              description: Unique Basket Id for the Order.
              example: ABCb8DzdnUy7G481b0JN5g
              type: string
            DeliveryCharge:
              description: Amount of cost that comes from delivery.
              example: 5
              format: double
              type: number
            Discount:
              description: The discount amount, used in conjunction with `DiscountType`.
              example: 4.78
              format: double
              type: number
            Discounts:
              description: Any Discounts applied to the Order.
              items:
                description: Discount data
                properties:
                  Discount:
                    description: The discount amount, used in conjunction with `DiscountType`.
                    example: 10
                    format: int32
                    type: number
                  DiscountType:
                    description: The type of discount, e.g. a percentage or the order or fixed amount.
                    example: Percent
                    type: string
                  Id:
                    description: Basket item id.
                    example: 21950
                    format: int32
                    type: number
                  QualifyingValue:
                    description: The minimum order amount in order for this discount to be applicable.
                    example: 4.78
                    format: double
                    type: number
                type: object
              type: array
            GroupedBasketItems:
              description: Grouped basket items
              items:
                description: An item in the Basket.
                properties:
                  BasketItem:
                    description: An item in the Basket.
                    properties:
                      CombinedPrice:
                        description: Unit Price plus individual Meal Part item cost.
                        example: 3.58
                        format: double
                        type: number
                      Discounts:
                        description: Any discounts applied to this specific item.
                        items:
                          description: Discount data
                          properties:
                            Amount:
                              description: Amount of the discount applied
                              example: 4.5
                              format: double
                              type: number
                            DiscountType:
                              description: Type of the discount applied
                              example: Percent
                              type: string
                          type: object
                        type: array
                      MealParts:
                        description: Represents sub-parts of a meal.
                        items:
                          description: Meal part data
                          properties:
                            GroupId:
                              description: The group Id.
                              example: 1
                              format: int32
                              type: number
                            MealPartId:
                              description: The meal part Id.
                              example: 45822750
                              format: int32
                              type: number
                            Name:
                              description: The name of the meal part.
                              example: Any Sides?
                              type: string
                            OptionalAccessories:
                              description: Optional accessories
                              items:
                                description: Optional accessory
                                properties:
                                  Name:
                                    description: The name of the accessory.
                                    example: Add Bacon
                                    type: string
                                  OptionalAccessoryId:
                                    description: The accessory Id.
                                    example: 56168
                                    format: int32
                                    type: number
                                  Quantity:
                                    description: The quantity of the accessory.
                                    example: 1
                                    format: int32
                                    type: number
                                  UnitPrice:
                                    description: The unit price of the accessory.
                                    example: 0.5
                                    format: double
                                    type: number
                                type: object
                              type: array
                            RequiredAccessories:
                              description: Required accessories
                              items:
                                description: Required accessory
                                properties:
                                  GroupId:
                                    description: The group Id of the accessory.
                                    example: 3
                                    format: int32
                                    type: number
                                  Name:
                                    description: The name of the accessory.
                                    example: Coca-Cola Original Taste
                                    type: string
                                  RequiredAccessoryId:
                                    description: The accessory Id.
                                    example: 225025
                                    format: int32
                                    type: number
                                  UnitPrice:
                                    description: The unit price of the accessory.
                                    example: 0.16
                                    format: double
                                    type: number
                                type: object
                              type: array
                            Synonym:
                              description: The synonym of the meal part.
                              type: string
                          type: object
                        type: array
                      MenuCardNumber:
                        description: Menu card number.
                        example: "1"
                        type: string
                      MultiBuyDiscounts:
                        description: Any multi-purchase discounts applied to this item.
                        items:
                          description: Multi-purchase discount data
                          properties:
                            Amount:
                              description: Amount of the discount applied
                              example: 4.5
                              format: double
                              type: number
                            DiscountType:
                              description: Type of the discount applied
                              example: Percent
                              type: string
                            OrderItemId:
                              description: Id of the Order item.
                              type: string
                            ProductTypeId:
                              description: The Id of the product type the discount applies to.
                              format: int32
                              type: number
                          type: object
                        type: array
                      Name:
                        description: The Item name, e.g. Chicken Tikka Masala or Family Meal Deal 3.
                        example: Mini Fillet Burger
                        type: string
                      OptionalAccessories:
                        description: An option item added to the Basket Item, this may be options such as Garlic Bread or a bottle of Coke.
                        items:
                          description: Optional accessory
                          properties:
                            Name:
                              description: The name of the accessory.
                              example: Add Bacon
                              type: string
                            OptionalAccessoryId:
                              description: The accessory Id.
                              example: 56168
                              format: int32
                              type: number
                            Quantity:
                              description: The quantity of the accessory.
                              example: 1
                              format: int32
                              type: number
                            UnitPrice:
                              description: The unit price of the accessory.
                              example: 0.5
                              format: double
                              type: number
                          type: object
                        type: array
                      ProductId:
                        description: Id of the Product.
                        example: 45858074
                        format: int32
                        type: number
                      ProductTypeId:
                        description: Id of the Product.
                        example: 428
                        format: int32
                        type: number
                      RequiredAccessories:
                        description: Items required as part of the Item, for example, Pizza base sauce.
                        items:
                          description: Required accessory
                          properties:
                            GroupId:
                              description: The group Id of the accessory.
                              example: 3
                              format: int32
                              type: number
                            Name:
                              description: The name of the accessory.
                              example: Large Meal
                              type: string
                            RequiredAccessoryId:
                              description: The accessory Id.
                              example: 225025
                              format: int32
                              type: number
                            UnitPrice:
                              description: The unit price of the accessory.
                              example: 0.1
                              format: double
                              type: number
                          type: object
                        type: array
                      Synonym:
                        description: Legacy - ignore.
                        type: string
                      UnitPrice:
                        description: The price of the item.
                        example: 1.79
                        format: double
                        type: number
                    type: object
                  CombinedPrice:
                    description: The total price of the Basket Item (including discounts).
                    example: 3.58
                    format: double
                    type: number
                  MenuCardNumber:
                    description: Menu card number.
                    example: "1"
                    type: string
                  OrderSubId:
                    description: Order `SubId`
                    example: 0
                    format: int32
                    type: number
                  Quantity:
                    description: The quantity of Basket Items requested.
                    example: 2
                    format: int32
                    type: number
                type: object
              type: array
            MenuId:
              description: Id of the Restaurant's menu.
              example: 777890
              format: int32
              type: number
            MultiBuyDiscount:
              description: MultiBuy discount.
              example: 0
              format: double
              type: number
            SubTotal:
              description: The Basket total cost, excluding any discounts.
              example: 47.75
              format: double
              type: number
            ToSpend:
              description: Amount to spend.
              example: 0
              format: double
              type: number
            Total:
              description: Total price of the Order.
              example: 47.97
              format: double
              type: number
          type: object
        CustomerInfo:
          description: Customer data
          properties:
            Address:
              description: Customer Address. Note that Address is comma delimited.
              example: Fleet Place House, 2 Fleet Place, London
              type: string
            City:
              description: The name of the city where the Customer is located.
              example: London
              type: string
            DisplayPhoneNumber:
              description: The customer's masked phone number.
              example: (01) 872 7863
              type: string
            Email:
              description: Email address for the Customer.
              example: contact@just-eat.com
              type: string
            Id:
              description: The JUST EAT Customer Id.
              example: "123456"
              type: string
            Latitude:
              description: Customer address latitude. Will be 0 if not provided.
              example: 51.50015
              format: double
              type: number
            LocationAccuracyDescription:
              description: Location accuracy description
              example: ROOFTOP
              type: string
            LocationAccuracyInMeters:
              description: Accuracy of the location data in meters.
              example: 0
              format: double
              type: number
            LocationSource:
              description: Provider of the location data.
              example: GeodataGeocoder
              type: string
            Longitude:
              description: Customer address longitude. Will be 0 if not provided.
              example: -0.12624
              format: double
              type: number
            Name:
              description: The name of the Customer.
              example: Just Eat
              type: string
            PhoneMaskingCode:
              description: Code to use when calling customer phone masked number (`DisplayPhoneNumber`) about this order. Null if phone masking not enabled
              example: "444333222"
              type: string
            PhoneNumber:
              description: The customer's unmasked phone number. Please don't expose this to drivers, instead use this number to provide your own phone masking number or use the JustEat masked number `DisplayPhoneNumber` below
              example: "018727863"
              type: string
            Postcode:
              description: The post code where Customer is located.
              example: EC4M 7RF
              type: string
            PreviousRestuarantOrderCount:
              description: The number of Orders the Customer has placed at this Restaurant via JUST EAT
              format: int32
              type: number
            TimeZone:
              description: Customer timezone, e.g. 'Central European Standard Time'.
              example: GMT Standard Time
              type: string
          type: object
        CustomerOrderId:
          deprecated: true
          description: This is a deprecated customer-facing ID that we maintain to support existing implementations.
          example: 348322088
          format: int32
          type: number
        FriendlyOrderReference:
          description: The customer facing identifier for the order, which should be used in any UI or receipts to identify the order to the customer, driver or restaurant. This identifier is not guaranteed to be globally unique.
          example: "348322088"
          type: string
        Id:
          deprecated: true
          description: The unique identifier for an order within the country. You can provide this ID whenever sending requests related to the order. Note that further messages from Just Eat relating to this order may not use this same identifier, use `OrderId` for a more consistent identifier.
          example: "348322088"
          type: string
        IsAMiniFistPumpOrder:
          deprecated: true
          description: Legacy Promotion - Ignore.
          type: boolean
        Order:
          description: Order data
          properties:
            DueDate:
              deprecated: true
              description: Ignore - use `DueDateWithUtcOffset`.
              format: date-time
              type: string
            DueDateWithUtcOffset:
              description: The DateTime when the Customer has been told they will receive the Order.
              format: date-time
              type: string
            InitialDueDate:
              deprecated: true
              description: Ignore - use `IntialDueDateWithUtcOffset`.
              format: date-time
              type: string
            InitialDueDateWithUtcOffset:
              description: When the Customer was originally told the order would be delivered (prior to Restaurant adjustment)
              format: date-time
              type: string
            NoteToRestaurant:
              description: Notes from the customer about their order. In addition to notes for the restaurant, this field can also delivery instructions - and should be displayed to the delivery driver.
              example: Contact-free delivery
              type: string
            PickupNoticePeriod:
              description: Desired minimum amount of notice needed before the driver arrives to pickup the order at the restaurant. This is to allow restaurant enough time to prepare the order. If less notice is given the driver may have to wait for the order to be prepared. Field is in the format "hh:mm:ss"
              example: 00:10:00
              format: timespan
              type: string
            PlacedDate:
              description: Date Customer placed the order. Note that JUST EAT accepts pre-orders therefore there may be a significant difference between Placed Date and Due Date This Date/Time is set as UTC without an offset, regardless of Country.
              format: date-time
              type: string
            PromptAsap:
              description: Did the Customer request the Order to ready ASAP
              type: boolean
            RdsPickupTimeWithUtcOffset:
              description: When the Delivery Partner needs to be at the Restaurant to pickup the Order.
              format: date-time
              type: string
            ServiceType:
              description: Type of the Order.
              enum:
                - Collection
                - Delivery
              type: string
          type: object
        OrderId:
          description: Globally unique Identifier for the order. Please use this whenever sending requests related to this order. Just Eat will provide this same identifier on any further messages relating to this order.
          example: ijdhpy7bdusgtc28bapspa
          type: string
        OrderReference:
          deprecated: true
          description: This field is used to store external references to the order. This is defined by either Just Eat or the partner that created the order.
          example: 39cce3f0-0278-dd25-ae32-e8effe1ce4eb
          type: string
        PaymentInfo:
          description: Payment data
          properties:
            CashOnDelivery:
              description: Is the Customer paying on Delivery.
              type: boolean
            DriverTipValue:
              description: The value of the tip given to the Driver.
              example: 0
              format: double
              type: number
            PaidDate:
              description: DateTime when the Order was Paid (excludes UTC offset).
              format: date-time
              type: string
            PaymentLines:
              description: How the Customer has paid for the Order.
              items:
                description: Payment line data
                properties:
                  CardFee:
                    description: Was there a fee for the payment mechanism.
                    example: 0.5
                    format: double
                    type: number
                  Type:
                    description: How was the order Paid.
                    enum:
                      - Card
                    type: string
                  Value:
                    description: The value of the payment.
                    example: 22.05
                    format: double
                    type: number
                type: object
              type: array
            Total:
              description: The total order value.
              example: 22.55
              format: double
              type: number
            TotalComplementary:
              description: Order amount covered by JUST EAT.
              example: 0
              format: double
              type: number
          type: object
        RestaurantInfo:
          description: Restaurant data
          properties:
            AddressLines:
              description: Restaurant address.
              items:
                description: Address line
                example: Fleet Place House 2, Fleet Place, London
                type: string
              type: array
            City:
              description: The name of the city where the Restaurant is located
              example: London
              type: string
            DispatchMethod:
              description: "`DispatchMethod` to use."
              example: Phone
              type: string
            EmailAddress:
              description: Email address for the Restaurant.
              example: contact@testrestaurant.com
              type: string
            Id:
              description: Unique ID of the Restaurant.
              example: "123456"
              type: string
            Latitude:
              description: Restaurant address latitude. Will be 0 if not provided.
              example: 51.50015
              format: double
              type: number
            Longitude:
              description: Restaurant address longitude. Will be 0 if not provided.
              example: -0.12624
              format: double
              type: number
            Name:
              description: The name of the Restaurant.
              example: Test Restaurant
              type: string
            PhoneNumber:
              description: The Restaurant phone number.
              example: "07123456789"
              type: string
            PickupNotes:
              description: Order pickup instructions for the Delivery Partner.
              example: Use the back entrance
              type: string
            Postcode:
              description: The post code where Restaurant is located
              example: EC4M 7RF
              type: string
          type: object
        Restrictions:
          description: This is a list of types of restricted items contained in the order.
          items:
            $ref: "#/components/schemas/order-item-restriction"
          type: array
      type: object
    connectorder-list:
      items:
        $ref: "#/components/schemas/connectorder"
      type: array
    consumerMarketingPreference:
      items:
        properties:
          channelName:
            description: The channel name.
            enum:
              - Email
              - Push
              - Sms
            type: string
          dateUpdated:
            description: The date of the marketing preference change
            format: date-time
            type: string
          isSubscribed:
            description: Should the channel be subscribed to?
            type: boolean
        type: object
      type: array
    consumerMarketingPreferencev2:
      example:
        emailAddress: consumer@just-eat.com
        updates:
          - channelName: Email
            dateUpdated: 2020-07-20T15:07:23.000Z
            isSubscribed: true
      properties:
        emailAddress:
          description: The email address of the consumer
          type: string
        updates:
          $ref: "#/components/schemas/consumerMarketingPreference"
          description: Collection of marketing channel subscription updates
      type: object
    create-attempted-delivery:
      example:
        ReasonCode: problem_with_address
      properties:
        ReasonCode:
          description: The reason the attempted delivery event was created
          enum:
            - problem_with_address
            - no_answer
          type: string
      type: object
    create-delivery-pool:
      example:
        name: Toronto - West
        restaurants:
          - 123
          - 456
      properties:
        name:
          description: The name of the pool, used by operations teams, in reports, etc.
          type: string
        restaurants:
          description: A list of Just Eat restaurant ids served by the delivery pool.
          items:
            format: int32
            type: number
          type: array
      required:
        - name
      type: object
    customer:
      properties:
        Address:
          $ref: "#/components/schemas/address"
        CustomerReference:
          type: string
        Email:
          type: string
        Location:
          $ref: "#/components/schemas/location"
        Name:
          type: string
        PhoneNumber:
          type: string
      type: object
    customer-v2:
      properties:
        Address:
          $ref: "#/components/schemas/address-v2"
        DisplayPhoneNumber:
          description: If you implement phone masking provide a masked number here
          type: string
        Email:
          type: string
        Name:
          type: string
        PhoneNumber:
          description: The customer's real phone number
          type: string
      required:
        - Name
        - PhoneNumber
        - Address
      type: object
    customerExperienceScoreDetail:
      description: Details of how customer experience score has contributed to get the segmentation status
      example:
        hasPassed: false
        maximumScore: 50
        requiredScore: 40
        score: 12
        scoreType: 0
      properties:
        hasPassed:
          description: Represent if the restaurant has passed the customer experience score criteria
          type: boolean
        maximumScore:
          description: Represent the maximum customer experience score that can be achieved by the restaurant
          type: number
        requiredScore:
          description: Represent the customer experience score required to pass the customer experience score criteria
          type: number
        score:
          description: Represent the customer experience score achieved by the restaurant
          type: number
        scoreType:
          $ref: "#/components/schemas/scoreTypes"
          description: Represent the type of score data. It would always be number (0) customer experience score.
      type: object
    delivery-abort-with-reason:
      example:
        deliveryPartnerReasonCode: courier_issue
        reason: driver_problem
      properties:
        deliveryPartnerReasonCode:
          description: The original reason code from the delivery partner
          example: package_damaged
          format: string
          type: string
        reason:
          description: The detailed Just Eat delivery partner cancellation reason code
          enum:
            - cancelled_by_requester
            - package_not_available
            - restaurant_closed
            - package_damaged
            - address_error
            - driver_problem
            - could_not_reach_customer
            - technical_problem
            - incorrect_package
            - other
          example: incorrect_package
          type: string
      type: object
    delivery-details:
      example:
        TimeStampWithUtcOffset: 2018-03-10T14:45:28.7537228+00:00
      properties:
        Location:
          $ref: "#/components/schemas/location"
        TimeStampWithUtcOffset:
          description: This should represent the delivery detailed updated timestamp.
          format: date-time
          type: string
      type: object
    delivery-driver-assigned-details:
      properties:
        DriverContactNumber:
          description: This should represent the driver's contact number.
          example: "07123456789"
          type: string
        DriverName:
          description: This should represent the driver's name.
          example: David
          type: string
        EtaAtDeliveryAddress:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the delivery address.
          example: 2020-12-25T16:45:28.7537228+00:00
          format: date-time
          type: string
        EtaAtRestaurant:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the restaurant. In other words, it should not just contain the pick-up time initially requested by Just Eat.
          example: 2020-12-25T15:30:28.7537228+00:00
          format: date-time
          type: string
        Location:
          $ref: "#/components/schemas/location"
        TimeStampWithUtcOffset:
          description: This should represent the driver assigned timestamp.
          example: 2020-12-25T15:45:28.7537228+00:00
          format: date-time
          type: string
        VehicleDetails:
          $ref: "#/components/schemas/vehicle-details"
      type: object
    delivery-driver-details-with-eta:
      example:
        EtaAtDeliveryAddress: 2018-03-10T15:45:28.7537228+00:00
        Location:
          Accuracy: 12.814
          Heading: 357.10382
          Latitude: 51.51641
          Longitude: -0.103198
          Speed: 8.68
        TimeStampWithUtcOffset: 2018-03-10T14:45:28.7537228+00:00
      properties:
        EtaAtDeliveryAddress:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the delivery address.
          format: date-time
          type: string
        Location:
          $ref: "#/components/schemas/location"
        TimeStampWithUtcOffset:
          description: This should represent the Eta calculated timestamp.
          format: date-time
          type: string
      type: object
    delivery-driver-location:
      properties:
        EtaAtDeliveryAddress:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the delivery address.
          example: 2020-12-25T16:45:28.7537228+00:00
          format: date-time
          type: string
        EtaAtRestaurant:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the restaurant.
          example: 2020-12-25T16:30:28.7537228+00:00
          format: date-time
          type: string
        Location:
          $ref: "#/components/schemas/location"
          example:
            Accuracy: 12.814
            Heading: 357.10382
            Latitude: 51.51641
            Longitude: -0.103198
            Speed: 8.68
        TimeStampWithUtcOffset:
          description: This should represent the location updated timestamp.
          example: 2020-12-25T15:45:28.7537228+00:00
          format: date-time
          type: string
      type: object
    delivery-driver-unassigned-details:
      properties:
        Comment:
          description: This should represent the comment on the unassignment.
          example: Order was not ready
          type: string
        DriverContactNumber:
          description: This should represent the driver's contact number.
          example: "07123456789"
          type: string
        DriverName:
          description: This should represent the driver's name.
          example: David McDriverson
          type: string
        EtaAtDeliveryAddress:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the delivery address.
          example: 2020-12-25T16:45:28.7537228+00:00
          format: date-time
          type: string
        EtaAtRestaurant:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the restaurant. In other words, it should not just contain the pick-up time initially requested by Just Eat.
          example: 2020-12-25T16:30:28.7537228+00:00
          format: date-time
          type: string
        "Location:":
          $ref: "#/components/schemas/location"
          description: This should represent the driver's geographic location (longitude and latitude)
        Reason:
          description: This should represent the delivery partner's reason for unassigning themselves from the order.
          example: package_not_ready
          type: string
        TimeStampWithUtcOffset:
          description: This should represent the driver unassigned timestamp.
          example: 2020-12-25T15:30:28.7537228+00:00
          format: date-time
          type: string
        UnassignedBy:
          description: This should represent the actor who triggered unassignment.
          example: operation
          type: string
      type: object
    delivery-eta-minutes:
      example:
        Approximate: null
        RangeLower: 35
        RangeUpper: 50
      nullable: true
      properties:
        Approximate:
          description: Approximate delivery eta in minutes
          format: int32
          nullable: true
          type: integer
        RangeLower:
          description: Lower bound of delivery eta in minutes
          format: int32
          nullable: true
          type: integer
        RangeUpper:
          description: Upper bound of delivery eta in minutes
          format: int32
          nullable: true
          type: integer
      type: object
    delivery-pool:
      example:
        name: Toronto - West
        restaurants:
          - 123
          - 456
      properties:
        name:
          description: The name of the pool, used by operations teams, in reports, etc.
          type: string
        restaurants:
          description: A list of Just Eat restaurant ids served by the delivery pool.
          items:
            format: int32
            type: number
          type: array
      type: object
    delivery-pool-hours:
      example:
        friday:
          closed: false
          poolTimes:
            - endTime: 01:00
              startTime: 12:00
        monday:
          closed: false
          poolTimes:
            - endTime: 21:00
              startTime: 09:00
        saturday:
          closed: false
          poolTimes:
            - endTime: 23:00
              startTime: 11:00
        sunday:
          closed: false
          poolTimes:
            - endTime: 19:00
              startTime: 13:00
        thursday:
          closed: false
          poolTimes:
            - endTime: 03:00
              startTime: 12:00
        tuesday:
          closed: true
          poolTimes:
            - endTime: 19:00
              startTime: 10:00
        wednesday:
          closed: false
          poolTimes:
            - endTime: 18:00
              startTime: 08:00
      properties:
        friday:
          properties:
            closed:
              description: true if the pool is closed for the day
              type: boolean
            poolTimes:
              description: pool start and end times for the day
              items:
                properties:
                  endTime:
                    description: pool end time for Friday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Friday (HH:mm)
                    type: string
                required:
                  - startTime
                  - endTime
                type: object
              type: array
          required:
            - poolTimes
          type: object
        monday:
          properties:
            closed:
              description: true if the pool is closed for the day
              type: boolean
            poolTimes:
              description: pool start and end times for the day
              items:
                properties:
                  endTime:
                    description: pool end time for Monday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Monday (HH:mm)
                    type: string
                required:
                  - startTime
                  - endTime
                type: object
              type: array
          required:
            - poolTimes
          type: object
        saturday:
          properties:
            closed:
              description: true if the pool is closed for the day
              type: boolean
            poolTimes:
              description: pool start and end times for the day
              items:
                properties:
                  endTime:
                    description: pool end time for Saturday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Saturday (HH:mm)
                    type: string
                required:
                  - startTime
                  - endTime
                type: object
              type: array
          required:
            - poolTimes
          type: object
        sunday:
          properties:
            closed:
              description: true if the pool is closed for the day
              type: boolean
            poolTimes:
              description: pool start and end times for the day
              items:
                properties:
                  endTime:
                    description: pool end time for Sunday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Sunday (HH:mm)
                    type: string
                required:
                  - startTime
                  - endTime
                type: object
              type: array
          required:
            - poolTimes
          type: object
        thursday:
          properties:
            closed:
              description: true if the pool is closed for the day
              type: boolean
            poolTimes:
              description: pool start and end times for the day
              items:
                properties:
                  endTime:
                    description: pool end time for Thursday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Thursday (HH:mm)
                    type: string
                required:
                  - startTime
                  - endTime
                type: object
              type: array
          required:
            - poolTimes
          type: object
        tuesday:
          properties:
            closed:
              description: true if the pool is closed for the day
              type: boolean
            poolTimes:
              description: pool start and end times for the day
              items:
                properties:
                  endTime:
                    description: pool end time for Tuesday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Tuesday (HH:mm)
                    type: string
                required:
                  - startTime
                  - endTime
                type: object
              type: array
          required:
            - poolTimes
          type: object
        wednesday:
          properties:
            closed:
              description: true if the pool is closed for the day
              type: boolean
            poolTimes:
              description: pool start and end times for the day
              items:
                properties:
                  endTime:
                    description: pool end time for Wednesday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Wednesday (HH:mm)
                    type: string
                required:
                  - startTime
                  - endTime
                type: object
              type: array
          required:
            - poolTimes
          type: object
      required:
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday
        - sunday
      type: object
    delivery-restaurantslist:
      properties:
        restaurants:
          description: A list of Just Eat restaurant ids served by the pool.
          example:
            - 10202
            - 10203
          items:
            format: int32
            type: number
          type: array
      type: object
    document:
      properties:
        documentMetadata:
          $ref: "#/components/schemas/documentMetadata"
          description: Metadata of document being added
        documentType:
          $ref: "#/components/schemas/documentType"
          description: Type of document being added
      type: object
    documentContentType:
      description: The content type of this document. Can be used by the client to display the file correctly
      enum:
        - image/jpeg
        - image/png
        - application/pdf
        - application/msword
      type: string
    documentLinkResponse:
      example:
        headers:
          x-amz-meta-documenttype: Menu
          x-amz-server-side-encryption: AES256
        href: https://s3.eu-west-1.amazonaws.com/uk/restaurants/restaurantId/fileName?X-Amz-Expires=180
      properties:
        documentKey:
          description: The name of the document
          type: string
        headers:
          additionalProperties:
            type: string
          description: Headers that will be passed when calling S3
          type: object
        href:
          description: The signed URL for S3. It includes the random generated file name which is usually a GUID.
          type: string
        method:
          description: The method the client should use when calling S3
          enum:
            - GET
            - PUT
            - DELETE
          type: string
      type: object
    documentMetadata:
      properties:
        contentType:
          $ref: "#/components/schemas/documentContentType"
          description: Content type of the document
        dateAdded:
          description: When the document is added [YYYY-MM-DDThh:mm:ssZ (UTC)]
          format: date-time
          type: string
        documentKey:
          description: Key of document being added. This is the s3 object key that you have already added
          example: images/signup/menu-1.jpg
          type: string
      type: object
    documentRejectionType:
      description: The rejection reason of a document
      enum:
        - Other
        - IncorrectDocument
        - NotClearEnough
        - Outdated
        - NoOwnersName
        - NoOwnersPhoto
        - NoBusinessAddress
        - NoBusinessName
        - MissingPages
        - Handwritten
        - MissingInformation
        - NoAllergenKey
        - LogoNameDoesNotMatch
        - CopyrightInfringement
        - PhotoFromInternet
      type: string
    documentReviews:
      properties:
        rejectionReasons:
          description: An array of rejection reasons
          items:
            properties:
              comment:
                description: Any other review comments
                type: string
              type:
                $ref: "#/components/schemas/documentRejectionType"
            type: object
          maxItems: 10
          minItems: 0
          type: array
      type: object
    documentState:
      description: The state of a document
      enum:
        - NotAvailable
        - Received
        - ReadyForInitialReview
        - InitialToBeRejected
        - InitialNoIssuesFound
        - InitialReviewRejected
        - ReadyForFinalReview
        - FinalReviewNoIssuesFound
        - FinalReviewToBeRejected
        - FinalReviewRejected
        - Approved
      type: string
    documentStateUpdate:
      properties:
        documentState:
          $ref: "#/components/schemas/documentState"
          description: The new state of the document
          type: string
      type: object
    documentType:
      description: The type of the document
      enum:
        - Menu
        - PhotoId
        - AddressProof
        - FsaCertificate
        - Logo
        - OwnershipInfo
        - Shopfront
      type: string
    driver-location:
      properties:
        Location:
          $ref: "#/components/schemas/location-v2"
        OrderId:
          type: string
        TimeStamp:
          format: date-time
          type: string
      type: object
    driver-status:
      properties:
        DriverContactNumber:
          type: string
        DriverName:
          type: string
        EstimatedDeliveryTime:
          format: date-time
          type: string
        EstimatedPickupTime:
          format: date-time
          type: string
        Event:
          enum:
            - DriverAssigned
            - DriverAtRestaurant
            - OnItsWay
            - AtDeliveryAddress
            - Delivered
          type: string
        OrderId:
          type: string
        TimeStamp:
          format: date-time
          type: string
      type: object
    emailaddress:
      properties:
        EmailAddress:
          description: An email address for an account.
          type: string
      type: object
    estimated-delivery-time:
      properties:
        DurationInMinutes:
          type: string
        RestaurantReference:
          type: string
      type: object
    estimated-time:
      example:
        bestGuess: 00:35:00
      properties:
        bestGuess:
          description: Your best estimation (hh:mm:ss)
          type: string
      type: object
    eta-estimate:
      properties:
        bestGuess:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the restaurant.
          format: date-time
          type: string
        estimatedAt:
          description: This is the time at which you are doing the estimation
          format: date-time
          type: string
      type: object
    extensibleObject:
      additionalProperties: true
      type: object
    fee:
      properties:
        Type:
          type: string
        Value:
          format: money
          type: number
      type: object
    fulfillment:
      properties:
        Method:
          type: string
        PickupTime:
          format: date-time
          type: string
        Table:
          type: string
      type: object
    fulfilment-v2:
      example:
        DueAsap: false
        DueDate: 2020-01-01T09:00:00.000Z
        Method: Delivery
      properties:
        DueAsap:
          description: If food should be delivered ASAP
          type: boolean
        DueDate:
          description: The time the customer expects the food. Time must be in the future
          format: date-time
          type: string
        Method:
          enum:
            - Delivery
            - Collection
          type: string
      required:
        - Method
        - DueDate
      type: object
    hygieneScheme:
      description: Denotes the type of hygiene scheme supported
      enum:
        - 0
        - 1
        - 2
      example: 1
      type: integer
      x-enumNames:
        - Unknown
        - FHRS
        - FHIS
    hygieneScoreDetail:
      description: Details of hygiene rating experience score has contributed to get the segmentation status
      example:
        hasPassed: true
        maximumScore: 5
        requiredScore: 3
        scheme: 1
        score: 5
        scoreType: 0
      properties:
        hasPassed:
          description: Represent if the restaurant has passed the hygiene score criteria
          type: boolean
        maximumScore:
          anyOf:
            - type: number
            - type: string
            - type: object
          description: Represent the maximum hygiene score that can be achieved. Based in the score type value, type of this field can be string or number of in future anything else
          nullable: true
        requiredScore:
          anyOf:
            - type: number
            - type: string
            - type: object
          description: Represent the hygiene score required to pass hygiene criteria. Based in the score type value, type of this field can be string or number of in future anything else
        scheme:
          $ref: "#/components/schemas/hygieneScheme"
          description: Represent the hygiene scheme used by the restaurant
        score:
          anyOf:
            - type: number
            - type: string
            - type: object
          description: Represent the hygiene score achieved by restaurant. Based in the score type value, type of this field can be string or number of in future anything else
        scoreType:
          $ref: "#/components/schemas/scoreTypes"
          description: Represent the type of score data. Value of this field will depend which hygiene method is supported by restaurant.
      type: object
    initialRestaurantRequest:
      example:
        address:
          city: London
          lines:
            - Fleet Place House
            - Fleet Place
          postalCode: EC4M 7RF
        name: Test Restaurant
        owner:
          emailAddress: restaurant@example.com
          phoneNumber: "0791231234"
      properties:
        address:
          description: The address of the restaurant
          properties:
            city:
              description: The name of the city the restaurant is located
              type: string
            lines:
              description: The address lines the restaurant is located
              items:
                type: string
              maxItems: 3
              minItems: 1
              type: array
            postalCode:
              description: The post code the restaurant is located
              type: string
          type: object
        name:
          description: The name of the restaurant
          type: string
        owner:
          description: The owner of the restaurant
          properties:
            emailAddress:
              description: The email address of the restaurant owner
              type: string
            familyName:
              description: The last name of the restaurant owner
              type: string
            givenName:
              description: The first name of the restaurant owner
              type: string
            phoneNumber:
              description: The phone number of the restaurant owner
              type: string
          type: object
      required:
        - name
        - address
        - owner
      type: object
    item:
      properties:
        Description:
          type: string
        Items:
          items:
            $ref: "#/components/schemas/item"
          type: array
        OptionReference:
          type: string
        Quantity:
          format: int32
          type: number
        Reference:
          type: string
      type: object
    item-v2:
      properties:
        Items:
          items:
            $ref: "#/components/schemas/item-v2"
          type: array
        Name:
          type: string
        Quantity:
          type: integer
        Reference:
          type: string
        UnitPrice:
          format: money
          type: integer
      type: object
    items-v2:
      properties:
        Items:
          items:
            $ref: "#/components/schemas/item-v2"
          type: array
        Name:
          type: string
        Quantity:
          minimum: 1
          type: integer
        Reference:
          description: The item's ID that you hold
          type: string
        TotalPrice:
          description: Price of this item x quantity and all sub items
          format: money
          type: number
        UnitPrice:
          format: money
          type: integer
      required:
        - TotalPrice
        - Reference
        - Name
        - Quantity
      type: object
    late-order-compensation-options:
      items:
        $ref: "#/components/schemas/LateOrderCompensationOption"
        type: object
      type: array
    late-order-compensation-query:
      example:
        CompensationOptions:
          - Amount: 200
            IsRecommended: false
          - Amount: 300
            IsRecommended: true
          - Amount: 400
            IsRecommended: false
        OrderId: wiej234idf09i29jijgf4
        RestaurantId: "110230"
        Tenant: uk
      properties:
        compensationOptions:
          $ref: "#/components/schemas/late-order-compensation-options"
          description: List of possible options for compensation
        orderId:
          description: Just Eat order identifier
          type: string
        restaurantId:
          description: Just Eat restaurant identifier
          type: string
        tenant:
          description: Tenant (Country) of order restaurant.
          type: string
      type: object
    late-order-query:
      example:
        OrderId: wiej234idf09i29jijgf4
        RestaurantId: "110230"
        Tenant: uk
      properties:
        orderId:
          description: Just Eat order identifier
          type: string
        restaurantId:
          description: Just Eat restaurant identifier
          type: string
        tenant:
          description: Tenant (Country) of order restaurant.
          type: string
      type: object
    lines-v2:
      properties:
        LastCardDigits:
          type: string
        Paid:
          type: boolean
        ServiceFee:
          format: double
          type: number
        Type:
          enum:
            - Cash
            - Card
            - AccountCredit
            - Voucher
          type: string
        Value:
          format: money
          type: number
      required:
        - Type
      type: object
    local-date-time:
      description: A local date time object, conforming to `ISO-8601`, but with only a partial time representation and no time offset.
      pattern: ^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?$
      type: string
    location:
      description: GeoLocation object containing latitude and longitude values.
      example:
        Accuracy: 12.814
        Heading: 357.10382
        Latitude: 51.51641
        Longitude: -0.103198
        Speed: 8.68
      properties:
        Accuracy:
          description: This should represent the accuracy of driver's location.
          format: double
          type: number
        Heading:
          description: This should represent the degree of heading direction, for example, 0 is north, 90 is east.
          format: double
          type: number
        Latitude:
          description: This should represent the latitude of the driver's location.
          format: double
          type: number
        Longitude:
          description: This should represent the longitude of the driver's location.
          format: double
          type: number
        Speed:
          description: This should represent the travel speed of the driver.
          format: double
          type: number
      required:
        - Latitude
        - Longitude
      type: object
    location-v2:
      example:
        Latitude: 51.51641
        Longitude: -0.103198
      properties:
        Latitude:
          format: double
          type: number
        Longitude:
          format: double
          type: number
      required:
        - Latitude
        - Longitude
      type: object
    menu-ingestion-complete:
      example:
        correlationId: 64bef5ee-7265-47f8-9aee-28bc74f00b13
        fault:
          errors:
            - code: "123"
              description: "Invalid variation: 15237d6c-c866-55da-9e61-b4f59dcab9ae - variations must be associated with at least one availability"
            - code: "145"
              description: "Invalid availability ID: menu-105369-availabilities - availability IDs must be integers"
          id: 70e307df-0156-4d3c-ab92-dd57a103350b
        restaurantId: "123456"
        result: fail
        tenant: uk
        timestamp: 2020-01-01T00:00:00Z
      properties:
        correlationId:
          description: The ID of the execution which has been completed
          type: string
        fault:
          description: Details of the fault which caused the menu ingestion to fail. This is only present if menu ingestion did not complete successfully
          properties:
            errors:
              description: Details of errors which caused the fault
              items:
                properties:
                  code:
                    description: An alphanumeric code for the error
                    type: string
                  description:
                    description: A description of the error to help you resolve the issue
                    type: string
                type: object
              type: array
            id:
              description: A unique ID for the fault
              type: string
          type: object
        restaurantId:
          description: The Just Eat restaurant ID
          type: string
        result:
          description: The result of the menu ingestion process
          enum:
            - success
            - fail
          format: enum
          type: string
        tenant:
          description: Country code for the market the restaurant is in
          enum:
            - au
            - dk
            - es
            - ie
            - it
            - no
            - uk
            - nz
          format: enum
          type: string
        timestamp:
          description: The ISO-8601 datetime at which the menu ingestion completed
          format: date-time
          type: string
      type: object
    object:
      type: object
    on-its-way-details:
      properties:
        EstimatedArrivalTime:
          description: This should represent the delivery partner's best guess at when the driver will arrive at the customer's address. In other words, it should not just contain the delivery time initially requested by Just Eat.
          example: 2020-12-25T16:45:28.7537228+00:00
          format: date-time
          type: string
        Location:
          $ref: "#/components/schemas/location"
        TimeStampWithUtcOffset:
          description: This should represent the driver on its ways timestamp.
          example: 2020-12-25T15:30:28.7537228+00:00
          format: date-time
          type: string
      type: object
    onItsWayPercentage:
      description: Details of how on its way experience score has contributed to get the segmentation status
      example:
        hasPassed: true
        requiredScore: 70
        score: 84
        scoreType: 1
      properties:
        hasPassed:
          description: Represent if the restaurant has passed the on-its-way threshold
          type: boolean
        requiredScore:
          description: Represent the on its way percentage required to pass the on-its-way threshold
          type: number
        score:
          description: Represent the on-its-way percentage of restaurant
          type: number
        scoreType:
          $ref: "#/components/schemas/scoreTypes"
          description: Represent the type of score data. It would always be percentage (1) for on-its-way.
      type: object
    order-accept-request:
      example:
        TimeAcceptedFor: 2018-03-10T14:45:28Z
      properties:
        TimeAcceptedFor:
          format: date-time
          type: string
      type: object
    order-accepted:
      example:
        AcceptedFor: 2018-03-10T14:45:28Z
        Event: OrderAccepted
        OrderId: "123456"
      properties:
        AcceptedFor:
          format: date-time
          type: string
        Event:
          type: string
        OrderId:
          type: string
      type: object
    order-address:
      properties:
        City:
          type: string
        Geolocation:
          properties:
            Latitude:
              format: double
              type: number
            Longitude:
              format: double
              type: number
          type: object
        Lines:
          items:
            type: string
          type: array
        PostalCode:
          type: string
      type: object
    order-cancel-request:
      example:
        Message: Customer requested the order to be cancelled
      properties:
        Message:
          description: Reason why this order is being cancelled.
          type: string
      type: object
    order-cancelled:
      example:
        Event: OrderCancelled
        OrderId: ijdhpy7bdusgtc28bapspa
        Reason: system_cancelled_other
      properties:
        Event:
          type: string
        OrderId:
          type: string
        Reason:
          description: The reason the order was cancelled.
          enum:
            - cust_cancelled_changed_mind
            - cust_cancelled_delivery_too_long
            - cust_cancelled_made_mistake
            - cust_cancelled_other
            - delivery_partner_cancelled
            - rest_cancelled_customer_absent
            - rest_cancelled_customer_requested
            - rest_cancelled_declined
            - rest_cancelled_drivers_unavailable
            - rest_cancelled_fake_order
            - rest_cancelled_other
            - rest_cancelled_out_of_stock
            - rest_cancelled_too_busy
            - system_cancelled_other
            - system_cancelled_test_order
          type: string
      type: object
    order-due-date-request:
      example:
        DueDate: 2019-12-25T14:45:28Z
      properties:
        DueDate:
          description: The updated ETA for the order
          format: date-time
          type: string
      type: object
    order-item:
      items:
        properties:
          Items:
            $ref: "#/components/schemas/order-item"
          Name:
            type: string
          Quantity:
            type: number
          Reference:
            type: string
          TotalPrice:
            format: money
            type: number
          UnitPrice:
            format: money
            type: number
        type: object
      type: array
    order-item-restriction:
      properties:
        Type:
          description: The type of restricted item contained in the order. The only supported value is 'Alcohol'.
          enum:
            - Alcohol
          type: string
      type: object
    order-ready-for-preparation:
      example:
        Currency: GBP
        Customer:
          Id: Batman
          Name: Bruce Wayne
        CustomerNotes:
          - Key: Floor
            Value: 5th floor
          - Key: Code
            Value: Code 1234
        Fulfilment:
          Address:
            City: London
            Geolocation:
              Latitude: 51.51641
              Longitude: -0.103198
            Lines:
              - Fleet Place House
              - Fleet Pl
            PostalCode: EC4M 7RD
          CustomerDueAsap: false
          CustomerDueDate: 2018-03-10T14:45:28Z
          Method: Delivery
          PhoneNumber: "+441234567890"
        IsTest: true
        Items:
          - Items:
              - Items: []
                Name: Fries
                Quantity: 1
                Reference: "9876"
                Synonym: Regular
                UnitPrice: 0
              - Items: []
                Name: Pepsi
                Quantity: 2
                Reference: "6789"
                Synonym: 330ml
                UnitPrice: 0
            Name: Chicken Box Meal
            Quantity: 2
            Reference: "1234"
            Synonym: ""
            TotalPrice: 10
            UnitPrice: 5
          - Items: []
            Name: Milkshake
            Quantity: 1
            Reference: "4321"
            Synonym: ""
            TotalPrice: 7.25
            UnitPrice: 7.25
        OrderId: XYZ123456
        Payment:
          Lines:
            - Paid: false
              Type: card
              Value: 19.25
        PlacedDate: 2018-03-10T14:45:28Z
        PriceBreakdown:
          Discount: 0
          Fees:
            Delivery: 1
            Other: 0
            ServiceCharge: 0.5
          Items: 17.25
          Taxes: 3.85
          Tips: 0.5
        Restaurant:
          Address:
            City: London
            Geolocation:
              Latitude: 51.4484
              Longitude: -0.1504
            Lines:
              - Oldridge Road
            PostalCode: SW12 8PW
          Id: "99999"
          Name: Just Eat Test Restaurant
          PhoneNumber: "+441200000000"
          Refererence: R99999
        TotalPrice: 19.25
      properties:
        Currency:
          type: string
        Customer:
          properties:
            Id:
              type: string
            Name:
              type: string
          type: object
        CustomerNotes:
          additionalProperties:
            type: string
          type: object
        Fulfilment:
          properties:
            Address:
              properties:
                City:
                  type: string
                Geolocation:
                  $ref: "#/components/schemas/location"
                Lines:
                  items:
                    type: string
                  type: array
                PostalCode:
                  type: string
              type: object
            CustomerDueAsap:
              type: boolean
            CustomerDueDate:
              format: date-time
              type: string
            Method:
              enum:
                - Delivery
                - Collection
              type: string
            PhoneNumber:
              type: string
            PreparationTime:
              format: timespan
              type: string
            PrepareFor:
              format: date-time
              type: string
          type: object
        IsTest:
          type: boolean
        Items:
          items:
            $ref: "#/components/schemas/item-v2"
          type: array
        OrderId:
          type: string
        Payment:
          properties:
            Lines:
              items:
                properties:
                  Paid:
                    type: boolean
                  Type:
                    enum:
                      - card
                      - cash
                      - credit
                      - other
                    type: string
                  Value:
                    format: money
                    type: number
                type: object
              type: array
          type: object
        PlacedDate:
          format: date-time
          type: string
        PriceBreakdown:
          properties:
            Discount:
              format: money
              type: number
            Fees:
              properties:
                Delivery:
                  format: money
                  type: number
                Other:
                  format: money
                  type: number
                ServiceCharge:
                  format: money
                  type: number
              type: object
            Items:
              format: money
              type: number
            Taxes:
              format: money
              type: number
            Tips:
              format: money
              type: number
          type: object
        Restaurant:
          properties:
            Address:
              properties:
                City:
                  type: string
                Geolocation:
                  $ref: "#/components/schemas/location"
                Lines:
                  items:
                    type: string
                  type: array
                PostalCode:
                  type: string
              type: object
            Id:
              type: string
            Name:
              type: string
            PhoneNumber:
              type: string
            Reference:
              type: string
          type: object
        TotalPrice:
          format: money
          type: number
      type: object
    order-reject-request:
      example:
        Message: Kitchen overloaded
      properties:
        Message:
          description: Reason why this order is being rejected.
          type: string
      type: object
    order-rejected:
      example:
        Event: OrderRejected
        RejectedAt: 2018-03-10T14:45:28Z
        RejectedBy: "123456"
        RejectedReason: Kitchen overloaded
      properties:
        Event:
          type: string
        RejectedAt:
          format: date-time
          type: string
        RejectedBy:
          type: string
        RejectedReason:
          type: string
      type: object
    order-request:
      properties:
        Basket:
          type: string
        Customer:
          $ref: "#/components/schemas/customer"
        CustomerNote:
          type: string
        DueDate:
          format: date-time
          type: string
        EventUpdateUri:
          type: string
        FriendlyOrderReference:
          type: string
        Fulfillment:
          $ref: "#/components/schemas/fulfillment"
        IsRds:
          type: boolean
        OrderReference:
          type: string
        PartnerName:
          type: string
        PartnerSubscriptionId:
          type: integer
        Payment:
          $ref: "#/components/schemas/payment"
        PlacedDate:
          format: date-time
          type: string
        RestaurantDetails:
          $ref: "#/components/schemas/restaurant-details"
        RestaurantReference:
          type: string
        TimeStampAccepted:
          format: date-time
          type: string
      required:
        - PlacedDate
        - DueDate
        - OrderReference
        - Payment
        - Customer
        - Basket
        - RestaurantDetails
        - PartnerSubscriptionId
      type: object
    order-request-v2:
      properties:
        Customer:
          $ref: "#/components/schemas/customer-v2"
        CustomerNotes:
          example:
            NoteForDelivery: Red door
            NoteForRestaurant: Make it spicy
          properties:
            NoteForDelivery:
              type: string
            NoteForRestaurant:
              type: string
          type: object
        FriendlyOrderReference:
          type: string
        Fulfilment:
          $ref: "#/components/schemas/fulfilment-v2"
        IsTest:
          type: boolean
        Items:
          items:
            $ref: "#/components/schemas/items-v2"
          type: array
        OrderReference:
          type: string
        Payment:
          $ref: "#/components/schemas/payment-v2"
        Restaurant:
          $ref: "#/components/schemas/restaurant-v2"
        TotalPrice:
          format: double
          type: number
      required:
        - OrderReference
        - TotalPrice
        - Restaurant
        - Customer
        - Fulfilment
        - Payment
        - Items
      type: object
    order-status-request:
      example:
        Status: Accepted
        TimeStamp: 2018-03-10T14:45:28Z
      properties:
        Data:
          additionalProperties:
            type: string
          type: object
        Message:
          type: string
        Status:
          description: The requested new state of the order
          enum:
            - InKitchen
            - FailedToSendToKitchen
            - Accepted
            - Rejected
          type: string
        TimeAcceptedFor:
          format: date-time
          type: string
        TimeStamp:
          format: date-time
          type: string
      required:
        - Status
        - TimeStamp
      type: object
    order-time-updated:
      example:
        dayOfWeek: Monday
        lowerBoundMinutes: 35
        restaurantId: "123456"
        serviceType: Delivery
        upperBoundMinutes: 50
      properties:
        dayOfWeek:
          description: The day of the week that has been updated.
          enum:
            - Sunday
            - Monday
            - Tuesday
            - Wednesday
            - Thursday
            - Friday
            - Saturday
          format: enum
          type: string
        lowerBoundMinutes:
          description: Order time lower bound value, in minutes.
          format: int32
          type: integer
        restaurantId:
          description: The Just Eat restaurant ID
          type: string
        serviceType:
          description: Service type of the order time.
          enum:
            - Delivery
            - Collection
          format: enum
          type: string
        upperBoundMinutes:
          description: Order time upper bound value, in minutes.
          format: int32
          type: integer
      type: object
    orderScoreDetail:
      description: Details of how order score has contributed to get the segmentation status
      example:
        hasPassed: true
        maximumScore: 50
        requiredScore: 20
        score: 48
        scoreType: 0
      properties:
        hasPassed:
          description: Represent if the restaurant has passed the order score criteria
          type: boolean
        maximumScore:
          description: Represent the maximum order score that can be achieved by the restaurant
          type: number
        requiredScore:
          description: Represent the order score required to pass the order score criteria
          type: number
        score:
          description: Represent the order score achieved by the restaurant
          type: number
        scoreType:
          $ref: "#/components/schemas/scoreTypes"
          description: Represent the type of score data. It would always be number (0) customer experience score.
      type: object
    orderTime:
      description: The object representing order time entry
      example:
        dayOfWeek: Monday
        lowerBoundMinutes: 35
        serviceType: Delivery
        upperBoundMinutes: 50
      properties:
        dayOfWeek:
          description: Day of week for order time
          enum:
            - Sunday
            - Monday
            - Tuesday
            - Wednesday
            - Thursday
            - Friday
            - Saturday
          type: string
        lowerBoundMinutes:
          description: Order time lower bound value, in minutes.
          format: int32
          type: integer
        serviceType:
          description: Service type of the order time
          enum:
            - Delivery
            - Collection
          type: string
        upperBoundMinutes:
          description: Order time upper bound value, in minutes.
          format: int32
          type: integer
      type: object
    partner-restaurant-temporary-offline-status:
      example:
        Message: Too busy
        Status: TempOffline
      properties:
        Message:
          type: string
        Status:
          enum:
            - TempOffline
            - ClosedToday
            - None
          type: string
      type: object
    password:
      properties:
        Password:
          description: A password for a consumers account.
          type: string
      type: object
    patch-delivery-pool:
      example:
        name: Toronto - North
      properties:
        name:
          description: The name of the pool, used by operations teams, in reports, etc.
          type: string
        restaurants:
          description: A list of Just Eat restaurant ids served by the delivery pool.
          items:
            format: int32
            type: number
          type: array
      type: object
    payment:
      properties:
        CardCharges:
          format: money
          type: number
        CashOnDelivery:
          type: boolean
        DeliveryCharge:
          format: money
          type: number
        DriverTipValue:
          format: money
          type: number
        Fees:
          items:
            $ref: "#/components/schemas/fee"
          type: array
        RestaurantTipValue:
          format: money
          type: number
        Total:
          format: money
          type: number
      type: object
    payment-v2:
      example:
        Fees:
          - Type: card
            Value: 0.25
          - Type: delivery
            Value: 3.5
        Lines:
          - LastCardDigits: "1234"
            Paid: true
            ServiceFee: 0
            Type: Card
            Value: 19.95
        Tips:
          - Type: driver
            Value: 2.5
      properties:
        Fees:
          items:
            $ref: "#/components/schemas/fee"
          type: array
        Lines:
          items:
            $ref: "#/components/schemas/lines-v2"
          type: array
        PaidDate:
          format: date-time
          type: string
        Taxes:
          items:
            $ref: "#/components/schemas/tax-v2"
          type: array
        Tips:
          items:
            $ref: "#/components/schemas/fee"
          type: array
      required:
        - Lines
      type: object
    product-id-list:
      items:
        description: Array of partner product identifiers
        type: string
      type: array
    ready-for-pickup:
      properties:
        Event:
          enum:
            - Ready for pickup
          type: string
        Timestamp:
          format: date-time
          type: string
      type: object
    resolve-attempted-delivery-cancel:
      example:
        ReasonCode: new_address_not_within_area
      properties:
        ReasonCode:
          description: The reason the order has been cancelled
          enum:
            - new_address_not_within_area
            - unable_to_reprepare
            - driver_not_available
            - area_unsafe
            - customer_doesnt_want_anymore
          type: string
      type: object
    resolve-attempted-delivery-redeliver:
      example:
        NewDueDate: 2018-03-10T14:45:28Z
        Status: driver_at_address
      properties:
        NewDueDate:
          description: Updated due date for delivery of the order
          format: date-time
          type: string
        Status:
          description: The current status of the order
          enum:
            - driver_at_address
            - repreparing
          type: string
      type: object
    restaurant:
      example:
        address:
          city: London
          lines:
            - Fleet Place House
            - Fleet Place
          postalCode: EC4M 7RF
        applicationMetadata:
          applicationType: NonStandard
          occupancyType: MultipleBusinessMultipleOwnership
          premiseType: Van
        applicationState: OpenApplication
        bankDetails:
          accountHolderName: John Doe
          bankAccountNumber: "12345678"
          bankName: Best Bank
          bankSortCode: 12-34-56
        createdDate: 2019-10-16T12:18:34.000Z
        fulfilment:
          description: The fulfillment options for the restaurant
          type: DeliveryAndCollection
        hygiene:
          rating: "4"
        lastUpdatedDate: 2019-10-16T12:18:34.000Z
        menu:
          requestedCuisines:
            - Greek
            - European
        name: Test Restaurant
        owner:
          emailAddress: restaurant@example.com
          familyName: Doe
          givenName: John
          phoneNumber: "0791231234"
      properties:
        address:
          description: The address of the restaurant
          properties:
            city:
              description: The name of the city the restaurant is located
              type: string
            lines:
              description: The address lines the restaurant is located
              items:
                type: string
              maxItems: 3
              minItems: 1
              type: array
            postalCode:
              description: The post code the restaurant is located
              type: string
          type: object
        applicationMetadata:
          description: Extra information about the restaurant, like the premises and ownership status
          nullable: true
          properties:
            applicationType:
              description: The type of sign up application i.e. Standard, Non-Standard.
              enum:
                - Unknown
                - Standard
                - NonStandard
              nullable: true
              type: string
            occupancyType:
              description: The nature of occupancy that restaurant is using e.g Single, Multiple businesses under one ownership, Multiple businesses under multiple ownership etc...
              enum:
                - Unknown
                - Single
                - MultipleBusinessSingleOwnership
                - MultipleBusinessMultipleOwnership
                - Other
              nullable: true
              type: string
            premiseType:
              description: The type of premises that restaurant is using e.g Pub, Hotel, Stall etc...
              enum:
                - Unknown
                - HighStreet
                - GhostKitchen
                - Residential
                - PubOrHotelSameName
                - PubOrHotelDifferentName
                - PubOrHotelLeased
                - PubOrHotelUnknown
                - Unit
                - Stall
                - ShoppingCentre
                - Van
                - Other
              nullable: true
              type: string
          type: object
        applicationState:
          $ref: "#/components/schemas/applicationState"
          description: The current application state of the restaurant
        bankDetails:
          description: Account holder information for the restaurant
          properties:
            accountHolderName:
              description: The name on the bank account
              type: string
            bankAccountNumber:
              description: The bank account number
              type: string
            bankName:
              description: The name of the bank
              type: string
            bankSortCode:
              description: The sort code
              type: string
          type: object
        createdDate:
          description: When the restaurant was created [YYYY-MM-DDThh:mm:ssZ (UTC)]
          format: date-time
          type: string
        fulfilment:
          description: The delivery type of the restaurant
          properties:
            type:
              description: The delivery type of the restaurant
              enum:
                - DeliveryAndCollection
                - CollectionOnly
                - JustEatDelivery
              type: string
          type: object
        hygiene:
          description: The food hygiene rating for the restaurant
          properties:
            rating:
              description: The rating score
              type: string
          type: object
        lastUpdatedDate:
          description: When the restaurant was last updated [YYYY-MM-DDThh:mm:ssZ (UTC)]
          format: date-time
          type: string
        menu:
          description: The restaurant menu
          properties:
            requestedCuisines:
              description: The restaurant cuisines
              items:
                type: string
              maxItems: 2
              minItems: 1
              type: array
          type: object
        name:
          description: The name of the restaurant
          type: string
        owner:
          description: The restaurant owner
          properties:
            emailAddress:
              description: The email address of the restaurant owner
              type: string
            familyName:
              description: The last name of the restaurant owner
              type: string
            givenName:
              description: The first name of the restaurant owner
              type: string
            phoneNumber:
              description: The phone number of the restaurant owner
              type: string
          type: object
      type: object
    restaurant-details:
      properties:
        Address:
          type: string
        City:
          type: string
        Email:
          type: string
        Id:
          type: integer
        Location:
          $ref: "#/components/schemas/location"
        Name:
          type: string
        PhoneNumber:
          type: string
        Postcode:
          type: string
      required:
        - Id
        - Email
        - Name
        - Address
        - Location
      type: object
    restaurant-details-updated:
      properties:
        event:
          enum:
            - RestaurantUpdated
          format: enum
          type: string
        restaurants:
          items:
            properties:
              city:
                type: string
              firstLine:
                type: string
              id:
                description: The JUST EAT restaurant id
                format: integer
                type: number
              latitude:
                format: float
                type: number
              longitude:
                format: float
                type: number
              name:
                type: string
              postcode:
                type: string
            type: object
          type: array
        tenant:
          description: The country the restaurant(s) exists in
          type: string
      type: object
    restaurant-hours-changed:
      properties:
        Event:
          enum:
            - OpenHoursForRestaurantChanged
          format: enum
          type: string
        OpenHours:
          items:
            properties:
              CloseTime:
                description: The close time (HH:mm) (Wide clock, i.e. if before start it is following day)
                type: string
              Closed:
                description: The restaurant is closed for the day
                type: boolean
              DayOfWeek:
                description: The day of the week the times are for.
                enum:
                  - Sunday
                  - Monday
                  - Tuesday
                  - Wednesday
                  - Thursday
                  - Friday
                  - Saturday
                format: enum
                type: string
              OpenTime:
                description: The open time (HH:mm)
                type: string
            type: object
          type: array
        RestaurantReference:
          description: The JUST EAT Restaurant Id
          type: string
        Tenant:
          description: The country the restaurant exists in
          type: string
      type: object
    restaurant-information-updated:
      properties:
        RestaurantInformationUpdated:
          properties:
            RestaurantId:
              description: The JUST EAT Restaurant Id
              type: string
            RestaurantInfo:
              properties:
                address:
                  properties:
                    city:
                      type: string
                    firstLine:
                      type: string
                    location:
                      properties:
                        lat:
                          format: double
                          type: number
                        lng:
                          format: double
                          type: number
                      type: object
                    postcode:
                      type: string
                  type: object
                allergenPhoneNumber:
                  type: string
                allergenUrl:
                  type: string
                alternativeOwnerName:
                  type: string
                alternativeOwnerNumber:
                  type: string
                brandName:
                  type: string
                companyNo:
                  type: string
                email:
                  type: string
                id:
                  type: integer
                legalName:
                  type: string
                logoUrl:
                  type: string
                mobileNumber:
                  type: string
                name:
                  type: string
                openingClosingTimes:
                  properties:
                    fridayClosed:
                      type: boolean
                    fridayClosingTimeOfDay:
                      type: string
                    fridayOpeningTimeOfDay:
                      type: string
                    mondayClosed:
                      type: boolean
                    mondayClosingTimeOfDay:
                      type: string
                    mondayOpeningTimeOfDay:
                      type: string
                    saturdayClosed:
                      type: boolean
                    saturdayClosingTimeOfDay:
                      type: string
                    saturdayOpeningTimeOfDay:
                      type: string
                    sundayClosed:
                      type: boolean
                    sundayClosingTimeOfDay:
                      type: string
                    sundayOpeningTimeOfDay:
                      type: string
                    thursdayClosed:
                      type: boolean
                    thursdayClosingTimeOfDay:
                      type: string
                    thursdayOpeningTimeOfDay:
                      type: string
                    tuesdayClosed:
                      type: boolean
                    tuesdayClosingTimeOfDay:
                      type: string
                    tuesdayOpeningTimeOfDay:
                      type: string
                    wednesdayClosed:
                      type: boolean
                    wednesdayClosingTimeOfDay:
                      type: string
                    wednesdayOpeningTimeOfDay:
                      type: string
                  type: object
                ownerName:
                  type: string
                phoneNumber:
                  type: string
                seoName:
                  type: string
                signupReference:
                  type: string
              type: object
            Tenant:
              description: The country the restaurant exists in
              type: string
          type: object
        event:
          enum:
            - RestaurantInformationUpdated
          format: enum
          type: string
      type: object
    restaurant-offline-status:
      properties:
        Event:
          enum:
            - RestaurantOfflineStatus
          format: enum
          type: string
        RestaurantOfflineStatus:
          $ref: "#/components/schemas/RestaurantOfflineStatus"
        RestaurantReference:
          description: The JUST EAT Restaurant Id
          type: string
      type: object
    restaurant-status:
      properties:
        Event:
          enum:
            - RestaurantStatusChange
          format: enum
          type: string
        Message:
          deprecated: true
          description: This field should not be used but has been left in the callback for backwards compatibility purposes
          type: string
        RestaurantReference:
          description: The JUST EAT Restaurant Id
          type: string
        Status:
          enum:
            - online
            - offline
          format: enum
          type: string
      type: object
    restaurant-v2:
      oneOf:
        - properties:
            Id:
              description: Our restaurant ID
              type: integer
          type: object
        - properties:
            Reference:
              description: If we hold a mapping for your restaurant IDs to ours - use your ID here
              type: string
          type: object
    restaurantEmailAddress:
      properties:
        emailAddress:
          description: The email address of the restaurant that the login link will be sent to
          type: string
      type: object
    scoreTypes:
      description: Represent the type of score data. Value of this field will depend on the category.
      enum:
        - 0
        - 1
        - 2
      example: 2
      type: integer
      x-enumNames:
        - Number
        - Percentage
        - Custom
    search-address:
      description: The address of the restaurant
      properties:
        City:
          description: City the restaurant is in
          type: string
        FirstLine:
          description: First line of the restaurant's address
          type: string
        Latitude:
          description: Latitude of the restaurant
          format: double
          type: number
        Longitude:
          description: Longitude of the restaurant
          format: double
          type: number
        Postcode:
          description: Postcode of the restaurant
          type: string
      type: object
    search-restaurant:
      properties:
        Address:
          $ref: "#/components/schemas/search-address"
          description: The restaurant's address
        DeliveryEtaMinutes:
          $ref: "#/components/schemas/delivery-eta-minutes"
          description: Information about the approximate delivery time
        DriveDistance:
          description: The distance to drive from restaurant to delivery location in miles
          format: double
          type: number
        DriveInfoCalculated:
          description: Flag indicating that the driving information has been calculated
          type: boolean
        Id:
          description: The id of the restaurant
          format: double
          type: number
        IsOpenNowForDelivery:
          description: Indicates the restaurant is now open for delivery
          type: boolean
        Name:
          description: The name of the restaurant
          type: string
        UniqueName:
          description: The unique name of the restaurant on Just Eat
          type: string
        Url:
          description: The URL of the restaurant's menu page
          type: string
      type: object
    search-restaurants:
      properties:
        Restaurants:
          description: A list of restaurants matching the search criteria
          items:
            $ref: "#/components/schemas/search-restaurant"
          type: array
      type: object
    segmentationHistory:
      description: Represents list of last four segmentation statuses, sorted reverse chronologically by assessment date.
      example:
        dateAssessed: 2019-12-31T00:00:00Z
        hasLocalLegendCriteriaBeenMet: true
        status: 1
      properties:
        dateAssessed:
          description: Date and time when the segmentation assessment was made
          format: date-time
          type: string
        hasLocalLegendCriteriaBeenMet:
          description: Represents if the restaurant achieved local legend status at that point or not
          type: boolean
        status:
          $ref: "#/components/schemas/assessmentStatusTypes"
          description: The segmentation status for restaurant
      type: object
    segmentationHistoryList:
      description: Represents list of last four segmentation statuses, sorted reverse chronologically by assessment date.
      items:
        $ref: "#/components/schemas/segmentationHistory"
      type: array
    segmentationStatus:
      properties:
        details:
          $ref: "#/components/schemas/segmentationStatusDetail"
          description: Represent the details of segmentation status
        id:
          description: The JUST EAT restaurant id
          format: integer
          type: number
        lastUpdated:
          description: Timestamp of last status change
          format: date-time
          type: string
        status:
          $ref: "#/components/schemas/assessmentStatusTypes"
          description: The segmentation status for restaurant
      type: object
    segmentationStatusDetail:
      description: Represent the details of segmentation status sub-scores
      properties:
        customerExperienceScore:
          $ref: "#/components/schemas/customerExperienceScoreDetail"
          description: Details of how customer experience score has contributed to get the segmentation status
        hygiene:
          $ref: "#/components/schemas/hygieneScoreDetail"
          description: Details of hygiene rating experience score has contributed to get the segmentation status
        onItsWayPercentage:
          $ref: "#/components/schemas/onItsWayPercentage"
          description: Details of how on its way experience score has contributed to get the segmentation status
        orderScore:
          $ref: "#/components/schemas/orderScoreDetail"
          description: Details of how order score has contributed to get the segmentation status
      type: object
    send-to-pos-failed:
      properties:
        OrderId:
          type: string
      type: object
    supportRequest:
      properties:
        body:
          description: Detail of the request
          type: string
        orderid:
          description: The id of the order this request relates to
          type: string
        subject:
          description: What is this request about?
          type: string
      type: object
    tax-v2:
      properties:
        Percentage:
          format: double
          type: number
        Type:
          type: string
        Value:
          format: money
          type: number
      required:
        - Value
        - Type
        - Percentage
      type: object
    tenants:
      enum:
        - au
        - ca
        - dk
        - es
        - ie
        - it
        - nz
        - uk
      type: string
    updateOrderTimeRequest:
      description: Request object for order time update
      example:
        lowerBoundMinutes: 35
        upperBoundMinutes: 50
      properties:
        lowerBoundMinutes:
          description: Order time lower bound value, in minutes.
          format: int32
          type: integer
        upperBoundMinutes:
          description: Order time upper bound value, in minutes.
          format: int32
          type: integer
      type: object
    vehicle-details:
      properties:
        Vehicle:
          example: Motorbike
          type: string
        VehicleRegistration:
          example: JU51 SAY
          type: string
      type: object
  securitySchemes:
    Bearer:
      bearerFormat: JWT
      description: Bearer token authentication using a JSON Web Token (JWT).
      scheme: bearer
      type: http
    api_key:
      description: APIs for delivery partners require an API key that will have been issued to you.
      in: header
      name: Authorization
      type: apiKey
    basic_auth:
      description: A few services allow the use of basic authentication when a partner doesn't support OAuth based authentication.
      scheme: basic
      type: http
    justeat_adfs:
      description: ADFS authentication provider for internal Just Eat tools.
      openIdConnectUrl: https://adfs.just-eat.com/adfs/.well-known/openid-configuration
      type: openIdConnect
    restaurantsignup_jwt:
      bearerFormat: JWT token with payload `RestaurantId` and Role `[RestaurantRead | VerifyEmail | RestaurantWrite | FullAccess | DocumentRead]`
      description: Bearer token authentication using a JSON Web Token (JWT), used by the restaurant sign up system
      scheme: bearer
      type: http
x-tagGroups:
  - name: Consumer Experience
    tags:
      - Authorization
      - Consumers
      - ConsumerOffers
      - ConsumerQueries
      - Consumer Queries Webhooks
      - ConsumerOrders
      - Search
      - Basket
      - Payments
      - Giftcards
      - Experiments
      - Vouchers
      - Promoted Placement
      - Menu
      - Recommendations
      - Location Services
  - name: Manage Order Journey
    tags:
      - Order Acceptance API
      - Order Acceptance Webhooks
      - Order Delivery API
      - Order Delivery Webhooks
      - Order API
      - Order Webhooks
      - Customer Order Details
      - DeliveryFee
      - Delivery Pools API
      - Attempted Delivery API
      - Attempted Delivery Webhooks
      - Checkout
      - Courier Feedback
  - name: Restaurant Management
    tags:
      - Restaurant Product
      - Restaurants
      - RestaurantOffers
      - Restaurant OrderTimes
      - Restaurants Webhooks
      - RestaurantSignup
      - RestaurantQueries
      - RestaurantQueries Webhooks
      - Restaurant Claims
      - Restaurant Events
      - Restaurant Events Webhooks
      - Restaurant API
      - Restaurant Webhooks
      - Products
      - Logistics POS Restaurants
      - Restaurant Smiley Rating
