openapi: 3.0.0
info:
  contact:
    name: Integration enquiries
    url: https://developers.just-eat.com/
    email: david.handley@justeattakeaway.com
  license:
    name: Apache 2
    url: https://www.apache.org/licenses/LICENSE-2.0.txt
  version: 0.0.1
  title: JET Connect API
  x-logo:
    url: ./logo.png
  description: "JET Connect offers services for our various business partners and our consumer applications.\n\n<!-- How you interact with the API depends on the services you wish to interact with. -->\n\n## Security\n\n### HTTPS\n\nAll API calls and callbacks require HTTPS. <!-- Your service will need a valid SSL certificate and be accessible via the standard SSL port (port 443). -->\n\n## Making an API request\n\nAPI calls require either an API key (`X-Flyt-Api-Key`) or a web token, to authenticate the partner calling the API.\n\nFor example,\n\n```http\nGET https://order-reporting-connector.flyt-platform.com/brands/je-uk-mcdonalds/orders HTTP/1.1\nX-Flyt-Api-Key: abcd123456789\n```\n\nOther calls require a user token in the form of a JWT.\n\n```http\nGET https://takeaway.io/consumer/me/orders/uk HTTP/1.1\nAuthorization: Bearer abcd123456789\n```\n\n## Date Formats\n\n### Date and time formats\n\nAll dates and times should use the [ISO 8601 standard for representation of dates and times](https://www.rfc-editor.org/rfc/rfc3339).\n\n#### For instance:\n\n-\t`\"2015-05-26T14:52:35.5444292+01:00\"`\n\t-\tLocal time: `14:52`\n\t-\tUTC time: `13:52`\n\t-\tUTC offset: `+1hr` (due to daylight time saving)\n-\t`\"2015-02-03T11:10:00.0000000+00:00\"`\n\t-\tLocal time: `11:10`\n\t-\tUTC time: `11:10`\n\t-\tUTC offset: `0` (no daylight time saving, local time is equivalent to UTC)\n\nNote that the offset may be for a timezone different to your own, so you should always convert to your own local time for display purposes (e.g. on receipts and terminals).\n\n### Callback timestamps\n\nTimestamps sent to JET Connect 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.\n\nIf it is not possible to record timestamps in local time, timestamps may be recorded in UTC time with a 00:00 offset.\n\n<!--\n## Async Webhooks\n\nSome of the webhooks on the platform are configured as being 'async' webhooks. These are for long-running operations, and work as follows:\n\n1.  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.\n2.  Return an immediate `202 Accepted` response from the webhook endpoint, to indicate that you have received the request.\n3.  Perform the long-running operation. This can be deemed either a *success*; or a *failure*.\n4.  If the result is a ***success***, return the following:\n\n    ```\n    POST {returnUrl} HTTP/1.1\n\n    {\n        \"status\": \"Success\",\n        \"message\": \"{successMessage}\",\n        \"data\": {}   // webhook-specific response object\n    }\n    ```\n\n5.  Otherwise, if the result is a ***failure***, return the following:\n\n    ```\n    POST {returnUrl} HTTP/1.1\n\n    {\n        \"status\": \"Failure\",\n        \"message\": \"{failureMessage}\",\n        \"data\": {}   // webhook-specific response object\n    }\n    ```\n -->\n"
x-tagGroups:
  - name: Customer Experience
    tags:
      - Accept JET Payments
      - Accept Payments
      - Analyse Customer Activity
      - Analyse Order Fulfilment
      - Customer Services Analytics
      - Handle Customer Compensation
      - Handle Customer Queries
      - Handle Partner Compensation
      - Handle Partner Queries
      - Handle Problem Orders
      - Manage Business Customer Information
      - Manage Customer Information
      - Operate Basket Pricing
      - Operate Customer Reviews
      - Operate Customer Security
      - Operate Item Selection
      - Process Customer Purchases
      - Promote Partner Products to Customers
      - Promote Partners to Customers
      - Support Contact Center Capabilities
  - name: Market Partners
    tags:
      - Manage Partner Marketing Content
      - Manage Promotions for Partners
      - Manage and Operate JET Pay
      - Manage media campaigns
      - Operate Stored Value Programs
  - name: Partner Management
    tags:
      - Analyse Partner Performance
      - Manage Partner Availability
      - Manage Partner Information
      - Manage Partner Security
      - Manage Product Catalogue
      - Manage Products
      - Process Partner Certifications
      - Process Partner Onboarding
      - Promote Offers to Partners
  - name: Manage Order Journey
    tags:
      - Accept Delivery
      - Analyze Order Delivery
      - Define Fulfillment Plan
      - Dispatch Orders
      - Handle Partner Problems
      - Manage Partner Devices
      - Operate Order History
      - Operate Order Status
      - Operate Shopping
      - Process Order Fulfilment
  - name: Logistic Management
    tags:
      - Analyse Delivery Demand
      - Analyse Delivery Effectiveness
      - Define Courier Delivery Areas
      - Define Delivery Associate Assignments
      - Define Delivery Plan
      - Define Partner Delivery Areas
      - Manage Delivery Suppliers
      - Process Delivery
  - name: Delivery Associate Experience
    tags:
      - Manage Delivery Associate Application
      - Manage Delivery Associate Info
      - Manage Delivery Associate Orientation and Deployment
      - Manage Delivery Associate Performance
      - Manage Delivery Associate Training
      - Operate Delivery Associate Communication
  - name: Finance & Accounts
    tags:
      - Manage Partner Finance
      - Process Business Customer Invoices
      - Process Delivery Associate Invoices
      - Process Partner Invoices
  - name: Operate Platform
    tags:
      - Build software
      - Deploy software
      - Manage Alerting
      - Manage Analytics
      - Manage App Config
      - Manage Application Infrastructure
      - Manage Backup and Restore
      - Manage Cloud Accounts
      - Manage Cloud Cost
      - Manage Cloud RBAC
      - Manage DNS
      - Manage Data Compliance
      - Manage Data Infrastructure
      - Manage Data Ingestion
      - Manage Debugging
      - Manage IP Space
      - Manage Incidents
      - Manage Logging
      - Manage Messaging
      - Manage Metrics
      - Manage Public Ingress Gateway
      - Manage Resilience
      - Manage Secrets
      - Manage Support
      - Manage Tracing
      - Operate Application Connectivity
      - Operate Cloud Scheduling
      - Operate Data Transformation
      - Operate Inter-Platform Connectivity
      - Operate Intra-Platform Connectivity
      - Operate Machine Learning
      - Operate Platform Security
      - Operate Security Analysis
      - Provide Insights
      - Verify Insfrastructure Quality
      - Verify software quality
  - name: Manage EIT
    tags:
      - Handle Workplace issues
      - Manage Workplace content
      - Operate Workplace Security
      - Support Workplace communications
  - name: JET Connect
    tags:
      - Edeka Integration
      - REWE Integration
  - name: Miscellaneous
    tags:
      - Vendor Specific Endpoints
      - uncategorized
  - name: gateways
    tags:
      - 10bis Notifications Gateway
      - 10bis Web API Gatgeway
      - API Applicant Tracking System
      - API Courier
      - API Courier Chat
      - API Courier Management
      - API Internal
      - API LiveOps
      - API Partner Management Gateway
      - API Restaurant
      - API Restaurant Management
      - API Restaurant Order Fulfillment
      - API SkipTheDishes
      - BFF Customer Partner
      - Chat Services GraphQL
      - Chat User Assistent Gateway
      - Consumer Web BFF
      - Content As A Service Gateway
      - Courier Auth Gateway
      - Courier Notification Gateway
      - Courier Operations GraphQL
      - Courier Portal Restaurant Delivery Dashboard BFF
      - Customer Service Ops Webhooks
      - DaaS Logistics Tracker
      - Device Gateway
      - Google Trip Gateway
      - Help Center Gateway
      - Ibis Api Gateway
      - JET Connect App
      - JET Connect Bespoke Integration
      - JET Connect for Dispatch Orders
      - JET Connect for Just Eat
      - JET Connect for Manage Order Status
      - JET Connect for Manage Partner Availability
      - JET Connect for Manage Product Catalogue
      - JET Connect for Manage Products
      - JET Connect for Operate Basket Pricing
      - JET Connect for Process Order Fulfilment
      - JET Connect for Process Partner Onboarding
      - JET Connect for Skip
      - JET Connect for Takeaway
      - Just Eat Integration Gateway
      - Live Orders BFF
      - Live Orders Sockets
      - Location Services Gateway
      - Loyalty Consumer BFF
      - Menu Consumer Orchestrator
      - Menu GraphQL
      - Notifications Gateway
      - Order Dispatch for McDonald's
      - Order Management BFF
      - Order Orchestrator
      - Orderpad App BFF
      - Partner Centre App BFF
      - PayPo Gateway
      - Restaurant Menu GraphQL
      - Restaurant Order Fulfillment GraphQL
      - Restaurant Portal BFF
      - Salesforce Integration Gateway
      - Sanity CMS Webhook Gateway
      - Scoober Apps
      - Scoober Courier GraphQl Gateway
      - Scoober Delivery Updates Gateway
      - Scoober LiveOps
      - Search Orchestrator
      - Skip Menu Editor Gateway
      - Smart IAM Gateway
      - T-Connect Gateway
      - TKWY Auth Gateway
      - TMS BFF
      - TMS Micro Frontend BFF
      - Takeaway Integration Gateway
      - Takeaway Notifications Gateway
      - Takeaway Pay API Gateway
      - TakeawayPay Admin BFF
      - Tall Desk Gateway
      - Trustbox Gateway
      - Turnover Workday Integration
      - WhatsApp Middleware
servers:
  - url: https://api.flytplatform.com
    description: The Flyt Platform (Flyt is now JET Connect)
  - url: https://{service}.flyt-platform.com
    description: Production environment
    variables:
      service:
        default: service-name
        description: The service in question, e.g. order-reporting-connector.
paths:
  /final/{finalPickedOrder}:
    post:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Final Picked Order
      description: |-
        Final picked order is for brands that may make amendments to an order and want to receive a copy of the order in its final state i.e. after all amendments have applied. This can be integrated or non integrated. please contact your brand manager for more information. after the initial order injection has already taken place (e.g. due to items potentially being out of stock), and would like to be notified of these changes to the initial order.

        Once the order has been picked (currently the trigger point for this is the "last mile delivered" event), the platform will check for any amendments on the order, and send the "final picked" order back to the specified endpoint.

        The "final picked" order could be different from the original order, as items may have been marked out of stock during the order pick. As such the total price, or item quantities may have changed.

        In the event you would like to receive the final order, there are several combinations of injections you can subscribe to.

        ### Scenario 1 (receive only the initial order)

        Receive only the initial order  in the state it was originally placed, at the point the driver is prep time away from the store. JET Connect  will send the order to the "Received Order" endpoint, as a `POST` request. Your endpoint must be able to receive orders in the same format documented in the "Received Order" section.

        ### Scenario 2 (receive only the final pick order)

        When the order is picked, the JET Connect Platform will check for amendments, and send a request to the final picked order endpoint you provided with any changes, as a `POST` request. Your endpoint must be able to receive orders in the format documented under "request format".

        ### Scenario 3 (receive both the initial order, and the final pick order)

        If you would like to receive both of the requests documented above, this is also possible. Please contact your brand manager to have this configured.

        #### Request format

        As an additional security measure, orders can be sent from the same static IP address as the initial order. You can request this feature from your brand manager.
      operationId: finalFinalPickedOrderPost
      parameters:
        - name: finalPickedOrder
          in: path
          description: The endpoint you have provided to us.
          required: true
          schema:
            type: string
          example: https://www.your-base-url.com/finalPickedOrders
        - $ref: '#/paths/~1initial~1%7BreceiveOrder%7D/post/parameters/1'
        - $ref: '#/paths/~1initial~1%7BreceiveOrder%7D/post/parameters/2'
      requestBody:
        description: |-
          The endpoint you provide to JET Connect must be able to receive orders in the following format. The type property will determine fulfillment type.

          As an additional security measure, orders can be sent from a static IP address. You can request this feature from your integration team.
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - third_party_order_reference
                - type
                - posLocationId
                - location
                - items
                - created_at
                - channel
                - payment_method
                - payment
                - promotions
              properties:
                id:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterId'
                third_party_order_reference:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterThirdPartyOrderReference'
                type:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterType'
                posLocationId:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPosLocationId'
                location:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterLocation'
                items:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterFinalPickedItems'
                created_at:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterCreatedAt'
                channel:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterChannel'
                collect_at:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterCollectAt'
                collection_notes:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterCollectionNotes'
                deliver_at:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterDeliverAt'
                delivery_notes:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterDeliveryNotes'
                kitchen_notes:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterKitchenNotes'
                payment_method:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPaymentMethod'
                tender_type:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterTenderType'
                payment:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPayment'
                driver:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPerson'
                collector:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPerson'
                delivery:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterDelivery'
                extras:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterExtras'
                promotions:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPromotions'
              x-examples:
                example-1:
                  id: 38bbeb45-f520-4438-a44f-0fcdbb29e166
                  third_party_order_reference: '22721763'
                  type: delivery-by-delivery-partner
                  posLocationId: AKZ12
                  location:
                    id: 1296
                    timezone: Europe/London
                  items:
                    - name: Cheeseburger
                      description: ''
                      plu: M2
                      price: 1700
                      notes: ''
                      children:
                        - name: Extra Sauce
                          description: ''
                          plu: R3
                          price: 100
                          unitDepositAmount: 10
                  created_at: '1606780145'
                  channel:
                    name: Just Eat
                    id: 32
                  collect_at: '1606780980'
                  collection_notes: Driver will be wearing a blue shirt
                  kitchen_notes: ''
                  payment_method: CARD
                  tender_type: Flyt
                  payment:
                    items_in_cart:
                      inc_tax: 2160
                      tax: 360
                    adjustments: []
                    final:
                      inc_tax: 2160
                      tax: 360
                    deposit: 10
                  driver:
                    first_name: John
                    last_name: Smith
                    phone_number: 555-111-3344
                  delivery:
                    first_name: '****************'
                    last_name: '****************'
                    phone_number: 55555 113 000
                    phone_masking_code: ''
                    line_one: '**********************'
                    line_two: ''
                    city: '*****'
                    postcode: '*****'
                    email: customer@email.hidden
                    coordinates:
                      latitude: 49.898498728223224
                      longitude: -97.13560152293131
                      latitude_as_string: '49.8984'
                      longitude_as_string: '-122.2966'
                  extras: {}
                  promotions:
                    - type: FREE_ITEM_MIN_BASKET
                      items:
                        - name: Crispy Chicken Twist
                          description: ''
                          plu: ''
                          price: 419
                          notes: ''
                          children: []
                      promotion_id: string
                      discount_value: 419
                      offer_id: string
            examples:
              Delivery by partner:
                value:
                  id: 38bbeb45-f520-4438-a44f-0fcdbb29e166
                  third_party_order_reference: '22721763'
                  type: delivery-by-delivery-partner
                  posLocationId: AKZ12
                  location:
                    id: 1296
                    timezone: Europe/London
                  items:
                    - name: Cheeseburger
                      description: ''
                      plu: M2
                      price: 1700
                      notes: ''
                      children:
                        - name: Extra Sauce
                          description: ''
                          plu: R3
                          price: 100
                          unitDepositAmount: 10
                  created_at: '1606780145'
                  channel:
                    name: Just Eat
                    id: 32
                  collect_at: '1606780980'
                  collection_notes: Driver will be wearing a blue shirt
                  kitchen_notes: ''
                  payment_method: CARD
                  tender_type: Flyt
                  payment:
                    items_in_cart:
                      inc_tax: 2160
                      tax: 360
                    adjustments: []
                    final:
                      inc_tax: 2160
                      tax: 360
                    deposit: 10
                  driver:
                    first_name: John
                    last_name: Smith
                    phone_number: 555-111-3344
                  delivery:
                    first_name: '****************'
                    last_name: '****************'
                    phone_number: 55555 113 000
                    phone_masking_code: ''
                    line_one: '**********************'
                    line_two: ''
                    city: '*****'
                    postcode: '*****'
                    email: customer@email.hidden
                    coordinates:
                      latitude: 49.898498728223224
                      longitude: -97.13560152293131
                      latitude_as_string: '49.8984'
                      longitude_as_string: '-122.2966'
                  extras: {}
                  promotions:
                    - type: FREE_ITEM_MIN_BASKET
                      items:
                        - name: Crispy Chicken Twist
                          description: ''
                          plu: ''
                          price: 419
                          notes: ''
                          children: []
                      promotion_id: string
                      discount_value: 419
                      offer_id: string
              Delivery by restaurant:
                value:
                  id: 7494e975-4d24-4ea5-bdd6-306b444ccc51
                  third_party_order_reference: '207217603'
                  type: delivery-by-merchant
                  posLocationId: '22617'
                  location:
                    id: 2267
                    timezone: US/Mountain
                  items:
                    - name: Cheesy Pasta
                      description: ''
                      plu: MMcc0
                      price: 500
                      unitDepositAmount: 10
                      notes: please make it extra cheesy
                      children: []
                  created_at: '1606780145'
                  channel:
                    name: Skip
                    id: 52
                  deliver_at: '1606780980'
                  delivery_notes: It's the blue house at the end of the block.
                  kitchen_notes: ''
                  payment_method: CARD
                  tender_type: Flyt
                  payment:
                    items_in_cart:
                      inc_tax: 600
                      tax: 100
                    adjustments:
                      - name: deliveryFee
                        price:
                          inc_tax: 240
                          tax: 40
                    final:
                      inc_tax: 840
                      tax: 140
                    deposit: 10
                  delivery:
                    first_name: John
                    last_name: Doe
                    phone_number: 555-113-0000
                    phone_masking_code: ''
                    line_one: 1234 Spicy Street
                    line_two: ''
                    city: Winnipeg
                    postcode: R3B 0P4
                    email: customer@email.hidden
                    coordinates:
                      latitude: 49.898498728223224
                      longitude: -97.13560152293131
                      latitude_as_string: '49.8984'
                      longitude_as_string: '-122.2966'
                  extras: {}
                  promotions:
                    - type: FREE_ITEM_MIN_BASKET
                      items:
                        - name: Crispy Chicken Twist
                          description: ''
                          plu: ''
                          price: 419
                          notes: ''
                          children: []
                      promotion_id: string
                      discount_value: 419
                      offer_id: string
              Pick-up:
                value:
                  id: 7494e975-4d24-4ea5-bdd6-306b444ccc51
                  third_party_order_reference: '122669877'
                  type: collection-by-customer
                  posLocationId: 32c8b122-f599-441f-aa3a-5081fb89f0e8
                  location:
                    id: 12642
                    timezone: Australia/Sydney
                  items:
                    - name: Cheese Pizza (Large)
                      description: ''
                      plu: b048118f-87e7-417b-b45e-b123b2b97a52
                      price: 1000
                      unitDepositAmount: 10
                      notes: ''
                      children: []
                  created_at: '1606780145'
                  channel:
                    name: Menulog
                    id: 59
                  collect_at: '1606780980'
                  collection_notes: I will be wearing a green dress
                  kitchen_notes: Please add extra cheese to the pizza
                  payment_method: CARD
                  tender_type: Flyt
                  payment:
                    items_in_cart:
                      inc_tax: 1000
                      tax: 0
                    adjustments: []
                    final:
                      inc_tax: 1000
                      tax: 0
                    deposit: 10
                  collector:
                    first_name: John
                    last_name: Doe
                    phone_number: 020 7946 0504
                    phone_masking_code: '1234567890'
                  extras: {}
                  promotions:
                    - type: FREE_ITEM_MIN_BASKET
                      items:
                        - name: Crispy Chicken Twist
                          description: ''
                          plu: C1
                          price: 419
                          notes: ''
                          children: []
                      promotion_id: string
                      discount_value: 419
                      offer_id: string
      responses:
        '200':
          description: To indicate that the order was successfully processed, return a `200` status code with an Order Number. JET Connect will notify your delivery partner that the order was successfully processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterOrderSuccess'
        '202':
          description: If you would like to handle the order asynchronously, return a 202 status code. JET Connect will place the order in a pending state, which will fail after 3 minutes if you do not notify JET Connect through the Update Order Status endpoint. If this endpoint is not called within 3 minutes, the order will be marked as failed to inject.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterOrderAccepted'
        '400':
          description: Any non-2xx status codes will be taken as a failure and redirected to the tablet to be hand-keyed into your POS.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterOrderFailed'
        '401':
          description: Unauthorized. Authorization failed or the HMAC validation did not match.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterOrderUnauthorized'
      servers:
        - url: https://www.your-base-url.com
          description: The URL that you have provided to us
      x-component-name: orderinjectionstatusupdater
      x-status: Stable
      x-webhook: 'Yes'
  /initial/{receiveOrder}:
    post:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Receive Order
      description: |-
        When an order is received for your integrated restaurant on a delivery website, the JET Connect Platform will send it to the endpoint you provided, as a `POST` request. Your endpoint must be able to receive orders in the format documented below.

        As an additional security measure, orders can be sent from a static IP address. You can request this feature from your brand manager.
      operationId: initialReceiveOrderPost
      security:
        - X-Flyt-Api-Key: []
      parameters:
        - name: receiveOrder
          in: path
          description: The endpoint you have provided to us.
          required: true
          schema:
            type: string
          example: https://www.your-base-url.com/receiveOrders
        - name: Authorization
          in: header
          description: The API key that you have provided to JET Connect to send with order requests. This header will be omitted if no API key was provided.
          schema:
            type: string
        - name: X-JET-Connect-Hash
          in: header
          description: |-
            The HMAC secret that you have provided to JET to sign order requests, this header will be omitted if no secret was provided. The signature is created using SHA256, Base64 to encode and UTF-8 for character encoding. An example is below:

            `HMAC-SHA256 t=1673428038618,signature=gy7evLHPTUadsmEVw7h6HmOHafCLq4gLKlss1VCV8lI=`
            - `t` represents the UNIX timestamp of when the body was signed in milliseconds.
            - `signature` is the body of the request which has been JSON encoded and hashed using a shared secret.

            Given the following secret of `key` and a body of `example`, the following hash will be generated `FGwot7AqiDIthEv6TippJm35DaRpRac5NSLd/wSp9go=`
          schema:
            type: string
      requestBody:
        description: |-
          The endpoint you provide to JET Connect must be able to receive orders in the following format. The type property will determine fulfillment type.

          As an additional security measure, orders can be sent from a static IP address. You can request this feature from your integration team.
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - third_party_order_reference
                - type
                - posLocationId
                - location
                - items
                - created_at
                - channel
                - payment_method
                - payment
                - promotions
              properties:
                id:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterId'
                third_party_order_reference:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterThirdPartyOrderReference'
                type:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterType'
                posLocationId:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPosLocationId'
                location:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterLocation'
                items:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterItems'
                created_at:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterCreatedAt'
                channel:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterChannel'
                collect_at:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterCollectAt'
                collection_notes:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterCollectionNotes'
                deliver_at:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterDeliverAt'
                delivery_notes:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterDeliveryNotes'
                kitchen_notes:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterKitchenNotes'
                payment_method:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPaymentMethod'
                tender_type:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterTenderType'
                payment:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPayment'
                driver:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPerson'
                collector:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPerson'
                delivery:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterDelivery'
                extras:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterExtras'
                promotions:
                  $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPromotions'
              x-examples:
                example-1:
                  id: 38bbeb45-f520-4438-a44f-0fcdbb29e166
                  third_party_order_reference: '22721763'
                  type: delivery-by-delivery-partner
                  posLocationId: AKZ12
                  location:
                    id: 1296
                    timezone: Europe/London
                  items:
                    - name: Cheeseburger
                      description: ''
                      plu: M2
                      price: 1700
                      notes: ''
                      children:
                        - name: Extra Sauce
                          description: ''
                          plu: R3
                          price: 100
                          unitDepositAmount: 10
                      substitution:
                        preference: bestmatch
                  created_at: '1606780145'
                  channel:
                    name: Just Eat
                    id: 32
                  collect_at: '1606780980'
                  collection_notes: Driver will be wearing a blue shirt
                  kitchen_notes: ''
                  payment_method: CARD
                  tender_type: Flyt
                  payment:
                    items_in_cart:
                      inc_tax: 2160
                      tax: 360
                    adjustments: []
                    final:
                      inc_tax: 2160
                      tax: 360
                    deposit: 10
                  driver:
                    first_name: John
                    last_name: Smith
                    phone_number: 555-111-3344
                  delivery:
                    first_name: '****************'
                    last_name: '****************'
                    phone_number: 55555 113 000
                    phone_masking_code: ''
                    line_one: '**********************'
                    line_two: ''
                    city: '*****'
                    postcode: '*****'
                    email: customer@email.hidden
                    coordinates:
                      latitude: 49.898498728223224
                      longitude: -97.13560152293131
                      latitude_as_string: '49.8984'
                      longitude_as_string: '-122.2966'
                  extras: {}
                  promotions:
                    - type: FREE_ITEM_MIN_BASKET
                      items:
                        - name: Crispy Chicken Twist
                          description: ''
                          plu: ''
                          price: 419
                          notes: ''
                          children: []
                      promotion_id: string
                      discount_value: 419
                      offer_id: string
            examples:
              Delivery by partner:
                value:
                  id: 38bbeb45-f520-4438-a44f-0fcdbb29e166
                  third_party_order_reference: '22721763'
                  type: delivery-by-delivery-partner
                  posLocationId: AKZ12
                  location:
                    id: 1296
                    timezone: Europe/London
                  items:
                    - name: Cheeseburger
                      description: ''
                      plu: M2
                      price: 1700
                      notes: ''
                      substitution:
                        preference: bestmatch
                      children:
                        - name: Extra Sauce
                          description: ''
                          plu: R3
                          price: 100
                          unitDepositAmount: 10
                  created_at: '1606780145'
                  channel:
                    name: Just Eat
                    id: 32
                  collect_at: '1606780980'
                  collection_notes: Driver will be wearing a blue shirt
                  kitchen_notes: ''
                  payment_method: CARD
                  tender_type: Flyt
                  payment:
                    items_in_cart:
                      inc_tax: 2160
                      tax: 360
                    adjustments: []
                    final:
                      inc_tax: 2160
                      tax: 360
                    deposit: 10
                  driver:
                    first_name: John
                    last_name: Smith
                    phone_number: 555-111-3344
                  delivery:
                    first_name: '****************'
                    last_name: '****************'
                    phone_number: 55555 113 000
                    phone_masking_code: ''
                    line_one: '**********************'
                    line_two: ''
                    city: '*****'
                    postcode: '*****'
                    email: customer@email.hidden
                    coordinates:
                      latitude: 49.898498728223224
                      longitude: -97.13560152293131
                      latitude_as_string: '49.8984'
                      longitude_as_string: '-122.2966'
                  extras: {}
                  promotions:
                    - type: FREE_ITEM_MIN_BASKET
                      items:
                        - name: Crispy Chicken Twist
                          description: ''
                          plu: ''
                          price: 419
                          notes: ''
                          children: []
                      promotion_id: string
                      discount_value: 419
                      offer_id: string
              Delivery by restaurant:
                value:
                  id: 7494e975-4d24-4ea5-bdd6-306b444ccc51
                  third_party_order_reference: '207217603'
                  type: delivery-by-merchant
                  posLocationId: '22617'
                  location:
                    id: 2267
                    timezone: US/Mountain
                  items:
                    - name: Cheesy Pasta
                      description: ''
                      plu: MMcc0
                      price: 500
                      unitDepositAmount: 10
                      notes: please make it extra cheesy
                      children: []
                      substitution:
                        preference: bestmatch
                  created_at: '1606780145'
                  channel:
                    name: Skip
                    id: 52
                  deliver_at: '1606780980'
                  delivery_notes: It's the blue house at the end of the block.
                  kitchen_notes: ''
                  payment_method: CASH
                  tender_type: Flyt
                  payment:
                    items_in_cart:
                      inc_tax: 600
                      tax: 100
                    adjustments:
                      - name: deliveryFee
                        price:
                          inc_tax: 240
                          tax: 40
                      - name: serviceCharge
                        price:
                          inc_tax: 15
                          tax: 0
                    final:
                      inc_tax: 855
                      tax: 140
                    deposit: 10
                  delivery:
                    first_name: John
                    last_name: Doe
                    phone_number: 555-113-0000
                    phone_masking_code: ''
                    line_one: 1234 Spicy Street
                    line_two: ''
                    city: Winnipeg
                    postcode: R3B 0P4
                    email: customer@email.hidden
                    coordinates:
                      latitude: 49.898498728223224
                      longitude: -97.13560152293131
                      latitude_as_string: '49.8984'
                      longitude_as_string: '-122.2966'
                  extras: {}
                  promotions:
                    - type: FREE_ITEM_MIN_BASKET
                      items:
                        - name: Crispy Chicken Twist
                          description: ''
                          plu: ''
                          price: 419
                          notes: ''
                          children: []
                      promotion_id: string
                      discount_value: 419
                      offer_id: string
              Pick-up:
                value:
                  id: 7494e975-4d24-4ea5-bdd6-306b444ccc51
                  third_party_order_reference: '122669877'
                  type: collection-by-customer
                  posLocationId: 32c8b122-f599-441f-aa3a-5081fb89f0e8
                  location:
                    id: 12642
                    timezone: Australia/Sydney
                  items:
                    - name: Cheese Pizza (Large)
                      description: ''
                      plu: b048118f-87e7-417b-b45e-b123b2b97a52
                      price: 1000
                      unitDepositAmount: 10
                      notes: ''
                      children: []
                      substitution:
                        preference: bestmatch
                  created_at: '1606780145'
                  channel:
                    name: Menulog
                    id: 59
                  collect_at: '1606780980'
                  collection_notes: I will be wearing a green dress
                  kitchen_notes: Please add extra cheese to the pizza
                  payment_method: CARD
                  tender_type: Flyt
                  payment:
                    items_in_cart:
                      inc_tax: 1000
                      tax: 0
                    adjustments: []
                    final:
                      inc_tax: 1000
                      tax: 0
                    deposit: 10
                  collector:
                    first_name: John
                    last_name: Doe
                    phone_number: 020 7946 0504
                    phone_masking_code: '1234567890'
                  extras: {}
                  promotions:
                    - type: FREE_ITEM_MIN_BASKET
                      items:
                        - name: Crispy Chicken Twist
                          description: ''
                          plu: C1
                          price: 419
                          notes: ''
                          children: []
                      promotion_id: string
                      discount_value: 419
                      offer_id: string
      responses:
        '200':
          description: To indicate that the order was successfully processed, return a `200` status code with an Order Number. JET Connect will notify your delivery partner that the order was successfully processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterOrderSuccess'
        '202':
          description: If you would like to handle the order asynchronously, return a 202 status code. JET Connect will place the order in a pending state, which will fail after 3 minutes if you do not notify JET Connect through the Update Order Status endpoint. If this endpoint is not called within 3 minutes, the order will be marked as failed to inject.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterOrderAccepted'
        '400':
          description: Any non-2xx status codes will be taken as a failure and redirected to the tablet to be hand-keyed into your POS.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterOrderFailed'
        '401':
          description: Unauthorized. Authorization failed or the HMAC validation did not match.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterOrderUnauthorized'
      servers:
        - url: https://www.your-base-url.com
          description: The URL that you have provided to us
      x-component-name: orderinjectionstatusupdater
      x-status: Stable
      x-webhook: 'Yes'
  /item-availability:
    post:
      tags:
        - JET Connect for Manage Product Catalogue
        - jet-connect
        - publicly-accessible
      summary: Update the availability of menu items
      description: |-
        The Item Availability API allows you to manage which items on a menu are available for ordering via your delivery partner (Just Eat, Skip The Dishes, Menulog or Takeaway).

        Menu items are marked as available or unavailable via requests to the Update Item Availability endpoint described below.

        # Features

        - Static endpoints for updating Item Availability. These endpoints do not include brand and location references in the endpoint URL, making it easier for operations teams to onboard new restaurants.
        - The ability to update multiple menu item availabilities in a single request.
        - Coming soon: more detailed error messages, including whether the operation failed when attempting to publish your update to the delivery partner (Just Eat, Skip The Dishes or Menulog).

        # Response

        If the menu and PLU references are valid and the request was accepted, you will receive a 202 Accepted response. The specified menu item should appear as available or unavailable on the delivery partner website (e.g. Just Eat, Skip The Dishes, Takeaway) automatically within less than 5 minutes.
      operationId: ItemAvailability
      security:
        - X-Flyt-Api-Key: []
      parameters:
        - $ref: '#/paths/~1menus/post/parameters/0'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectMenusUtfConnectorItemAvailability'
            examples:
              Marking an item available:
                value:
                  event: AVAILABLE
                  itemReferences:
                    - 1234-3324332-23423-234
                    - 5678-5566778-87658-576
                  restaurant: '8282340'
                  happenedAt: '2018-10-11T14:56:18.234284+01:00'
              Marking an item unavailable:
                value:
                  event: UNAVAILABLE
                  itemReferences:
                    - string
                  restaurant: string
                  happenedAt: '2018-10-11T14:56:18.234284+01:00'
                  nextAvailableAt: '2018-10-11T14:56:18.234284+01:00'
      responses:
        '202':
          description: Item Availability updates accepted for processing by upstream services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectMenusUtfConnectorAcceptedResponse'
        '400':
          $ref: '#/components/responses/JetConnectMenusUtfConnectorBadRequestResponse'
        '403':
          $ref: '#/components/responses/JetConnectMenusUtfConnectorForbiddenResponse'
        '500':
          $ref: '#/components/responses/JetConnectMenusUtfConnectorServerErrorResponse'
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: menusutfconnector
      x-status: Stable
  /menus:
    post:
      tags:
        - JET Connect for Manage Product Catalogue
        - jet-connect
        - publicly-accessible
      summary: Ingest menu from POS
      description: |-
        Use this endpoint to ingest menu(s), creating a baseline per menu received.

        # How it works

        The JET Connect Platform API allows anyone with a Just Eat, Skip The Dishes, Menulog or Takeaway account to automatically publish menus from their POS to the respective delivery partner. For this to work, client applications need to:

        1. Extract menu data from their POS
        2. Use this data to create an HTTP request in `JSON` format (see format details below)
        3. Send the request to the menu API endpoint: `https://api.flytplatform.com/menus`

        The API endpoint will validate the incoming request and, if checks are successful, publish the new menu to the delivery partner. We recommend checking the delivery partner page to see if the new menu has been updated as intended.

        # Features

        - Static endpoints for publishing menus. These endpoints do not include brand and location references in the endpoint URL, making it easier for operations teams to onboard new restaurants.
        - Ability to update menus for multiple restaurants using a single request.

        # Response Format

        If the menus are valid and the request was accepted, you will receive a `202 Accepted` response. The new menu should appear on the delivery partner website (e.g. Just Eat, Skip The Dishes, Takeaway) website automatically within less than 5 minutes.

        Note: currently, our platform only checks if the menu structure is valid. However, a valid menu may still fail to publish on the corresponding delivery partner platform. Currently, this endpoint does not indicate whether the publish operation was successful, however this is an item on our future roadmap

        # Asynchronous Callbacks

        If a valid callback address has been specified, shortly after the synchronous response indicating initial acceptance or rejection of the menu, a POST request will be made to the address detailing the eventual menu state.

        See the callback object for more details.

        ## Nutrition and Servings in menus - Under Development

        **Please note that it is mandatory in the UK to have nutritional information for brands/restaurant groups with over 250 employees ([UK government guidance](https://www.gov.uk/government/publications/calorie-labelling-in-the-out-of-home-sector/calorie-labelling-in-the-out-of-home-sector-implementation-guidance#displaying-calorie-information) link).**

        See sample payload "Menu with nutrition and servings".

        ## Translations - Under Development

        We will be beginning support for menu translations shortly, to any platform which supports it.

        This section will contain further information on supported platforms in the future.
      operationId: menusPost
      security:
        - X-Flyt-Api-Key: []
      callbacks:
        myEvent:
          '{$request.body#/callback_url}':
            post:
              description: |-
                # Asynchronous Callbacks

                If a valid callback address has been specified, shortly after the synchronous response indicating initial acceptance or rejection of the menu, a POST request will be made to the address detailing the eventual menu state.

                As a single address is defined for a collection of menus which may be associated with multiple restaurants, a separate request will be made to the address for each restaurant.
              requestBody:
                content:
                  application/json:
                    schema:
                      type: object
                      required:
                        - restaurant
                        - ingestion_succeeded
                      properties:
                        restaurant:
                          $ref: '#/components/schemas/JetConnectMenusUtfConnectorRestaurantId'
                        error:
                          description: Object detailing the error, will be omitted if ingestion has succeeded
                          type: object
                          required:
                            - code
                            - message
                          properties:
                            code:
                              description: A categorisation of the failure
                              type: string
                              pattern: ^(ERROR_UNKNOWN|CONNECTION_FAILED|INVALID_FORMAT|INVALID_CONFIGURATION)$
                            message:
                              description: The reason for the error
                              type: string
                        ingestion_succeeded:
                          description: Indicates whether the menu has been successfully accepted by the delivery partner
                          type: boolean
                      example:
                        restaurant: '1234'
                        error:
                          code: INVALID_FORMAT
                          message: example error message
                        ingestion_succeeded: true
              responses:
                '200':
                  description: OK
      parameters:
        - name: Content-Type
          in: header
          description: Specifies the content type of your request. Should always be set to application/json.
          schema:
            type: string
            pattern: ^application\/json$
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectMenusUtfConnectorMenus'
            examples:
              Basic menu:
                value:
                  restaurants:
                    - '11232'
                    - '99234'
                  menus:
                    - name: Burger Zone Summer Menu
                      default_language: en-US
                      translations:
                        es-ES:
                          name: Populate translated name here
                          description: Populate description name here
                      reference: burger-zone-summer-5521
                      type: DELIVERY
                      availability:
                        monday:
                          - 08:00 - 23:59
                        tuesday:
                          - 08:00 - 23:59
                        wednesday:
                          - 08:00 - 23:59
                        thursday:
                          - 08:00 - 23:59
                        friday:
                          - 08:00 - 23:59
                        saturday:
                          - 08:00 - 23:59
                        sunday:
                          - 10:00 - 20:00
                      categories:
                        - name: Burgers
                          description: Classic burgers.
                          translations:
                            es-ES:
                              name: Populate translated name here
                              description: Populate description name here
                          items:
                            - name: Veggie Burger
                              description: A classic vegetarian hamburger with all the fixings.
                              translations:
                                es-ES:
                                  name: Populate translated name here
                                  description: Populate description name here
                              plu: ABC1F
                              price: 1550
                              reference: breakfast-ABC1F
                              gallery:
                                - url: https://www.burgerzone.com/vegburger.jpg
                              is_alcoholic: false
                              spiciness: MILD
                              dietary_restrictions:
                                - VEGETARIAN
                              low_stock_threshold: 5
                              product_types:
                                - PACKAGED_FOOD
                  callback_url: https://example.com/menu-status
              Menu with modifiers:
                value:
                  restaurants:
                    - '11232'
                    - '99234'
                  menus:
                    - name: Burger Zone Winter Menu
                      reference: ''
                      type: DELIVERY
                      availability:
                        monday:
                          - 08:00 - 20:00
                        tuesday:
                          - 08:00 - 20:00
                        wednesday:
                          - 08:00 - 20:00
                        thursday:
                          - 08:00 - 20:00
                        friday:
                          - 08:00 - 20:00
                        saturday:
                          - 00:00 - 00:00
                        sunday:
                          - 00:00 - 00:00
                      categories:
                        - name: Burgers
                          description: Burger Zone's Specialty.
                          items:
                            - name: Cheeseburger
                              description: The classic burger, but with cheese added.
                              plu: XYZ123
                              reference: breakfast-ABC1F
                              modifiers:
                                - name: Cheese
                                  description: The type of cheese on the burger.
                                  pick:
                                    exactly: 1
                                    pick_same_option: false
                                  options:
                                    - name: Cheddar,
                                      description: ''
                                      plu: 2B
                                      price: 0
                                      reference: ''
                                      product_types:
                                        - PACKAGED_FOOD
                                    - name: Swiss,
                                      description: ''
                                      plu: A2
                                      price: 100
                                      reference: ''
                                      product_types:
                                        - PACKAGED_FOOD
                  callback_url: https://example.com/menu-status
              Menu with subcategories:
                value:
                  restaurants:
                    - '11232'
                    - '99234'
                  menus:
                    - name: Burger Bar Menu
                      default_language: en-US
                      reference: burger-bar-5521
                      type: DELIVERY
                      availability:
                        monday:
                          - 08:00 - 23:59
                        tuesday:
                          - 08:00 - 23:59
                        wednesday:
                          - 08:00 - 23:59
                        thursday:
                          - 08:00 - 23:59
                        friday:
                          - 08:00 - 23:59
                        saturday:
                          - 08:00 - 23:59
                        sunday:
                          - 10:00 - 20:00
                      categories:
                        - name: Main Menu
                          description: Our full selection of food and drinks
                          type: root
                          categories:
                            - name: Burgers
                              description: Our delicious burger selection
                              type: subcategory
                              categories:
                                - name: Beef Burgers
                                  description: Premium beef burgers
                                  type: subcategory
                                  items:
                                    - name: Cheeseburger
                                      description: Classic beef with cheese
                                      plu: BRGB1
                                      price: 1550
                                    - name: Bacon Burger
                                      description: Beef with crispy bacon
                                      plu: BRGB2
                                      price: 1650
                                - name: Vegetarian Burgers
                                  description: Meat-free alternatives
                                  type: subcategory
                                  items:
                                    - name: Plant-based Burger
                                      description: Made with plant protein
                                      plu: BRGV1
                                      price: 1450
                                    - name: Mushroom Burger
                                      description: Grilled mushroom
                                      plu: BRGV2
                                      price: 1350
                            - name: Vegetarian Options
                              description: Meat-free dishes and drinks
                              type: subcategory
                              categories:
                                - name: Vegan Burgers
                                  description: Plant-based alternatives
                                  type: subcategory
                                  items:
                                    - name: Plant-based Burger
                                      description: Made with plant protein
                                      plu: BRGV1
                                      price: 1450
                                    - name: Mushroom Burger
                                      description: Grilled mushroom
                                      plu: BRGV2
                                      price: 1350
                      callback_url: https://example.com/menu-status
              Menu with nutrition and servings:
                value:
                  restaurants:
                    - '11232'
                  menus:
                    - name: Burger Zone Winter Menu
                      reference: ''
                      type: DELIVERY
                      availability:
                        monday:
                          - 08:00 - 20:00
                        tuesday:
                          - 08:00 - 20:00
                        wednesday:
                          - 08:00 - 20:00
                        thursday:
                          - 08:00 - 20:00
                        friday:
                          - 08:00 - 20:00
                        saturday:
                          - 00:00 - 00:00
                        sunday:
                          - 00:00 - 00:00
                      categories:
                        - name: Burgers
                          description: Burger Zone's Specialty.
                          items:
                            - name: Cheeseburger
                              description: The classic burger, but with cheese added.
                              plu: XYZ123
                              reference: breakfast-ABC1F
                              modifiers:
                                - name: Cheese
                                  description: The type of cheese on the burger.
                                  pick:
                                    exactly: 1
                                    pick_same_option: false
                                  options:
                                    - name: Cheddar,
                                      description: ''
                                      plu: 2B
                                      price: 0
                                      reference: ''
                                      nutritional_info_range:
                                        kcal_range:
                                          min: -1
                                          max: 2
                                        kj_range:
                                          min: 2
                                          max: 4
                                      servings_range:
                                        min: -2
                                        max: 4
                                    - name: Swiss,
                                      description: ''
                                      plu: A2
                                      price: 100
                                      reference: ''
                              nutritional_info_range:
                                kcal_range:
                                  min: -1
                                  max: 2
                                kj_range:
                                  min: 2
                                  max: 4
                              servings_range:
                                min: -2
                                max: 4
                  callback_url: https://example.com/menu-status
              Menu with pick options:
                value:
                  restaurants:
                    - '11232'
                    - '99234'
                  menus:
                    - name: Pick Menu
                      reference: ''
                      type: DELIVERY
                      categories:
                        - name: Burgers
                          description: ''
                          items:
                            - name: Hamburger
                              description: ''
                              plu: f37b78df-16c4-4036-96c5-ed61d439ae26
                              price: 1000
                              reference: ''
                              modifiers:
                                - name: '"Pick Exactly" Modifier'
                                  description: The customer will be able to choose exactly 3 options from this group, and they will be able to pick the same option twice.
                                  pick:
                                    exactly: 3
                                    pick_same_option: true
                                  options: null
                                - name: '"Pick Range" Modifier'
                                  description: The customer will be able to choose between 1 and 2 options from this group, and will be able to pick the same option twice.
                                  pick:
                                    range:
                                      from: 1
                                      to: 2
                                    pick_same_option: true
                                  options: []
                                - name: '"Pick Unlimited" Modifier'
                                  description: The customer will be able to pick an unlimited amount of options, but will not be able to pick the same option twice.
                                  pick:
                                    pick_same_option: false
                  callback_url: https://example.com/menu-status
              Menu with portions:
                value:
                  restaurants:
                    - '11232'
                  menus:
                    - name: Portions Menu
                      reference: ''
                      type: DELIVERY
                      availability:
                        monday:
                          - 08:00 - 20:00
                        tuesday:
                          - 08:00 - 20:00
                        wednesday:
                          - 08:00 - 20:00
                        thursday:
                          - 08:00 - 20:00
                        friday:
                          - 08:00 - 20:00
                        saturday:
                          - 00:00 - 00:00
                        sunday:
                          - 00:00 - 00:00
                      categories:
                        - name: Burgers
                          description: ''
                          items:
                            - name: Chicken Pizza
                              description: Freshly diced tomatoes, Spanish onions and feta on a tomato base topped with fresh basil and balsamic glaze.
                              plu: '1'
                              price: 0
                              portions:
                                - name: Small Chicken Pizza
                                  description: Freshly diced tomatoes, Spanish onions and feta on a tomato base topped with fresh basil and balsamic glaze.
                                  plu: '2'
                                  price: 950
                                  modifiers: []
                                - name: Large Chicken Pizza
                                  description: Freshly diced tomatoes, Spanish onions and feta on a tomato base topped with fresh basil and balsamic glaze.
                                  plu: '3'
                                  price: 1250
                                  modifiers:
                                    - name: Extras
                                      description: Optional
                                      pick:
                                        range:
                                          from: 0
                                          to: 5
                                        pick_same_option: true
                                      options:
                                        - name: Anchovies
                                          plu: Anchovies
                                          price: 75
                                          modifiers: []
                                          includes: []
                                          ingredients: []
                                          product_types:
                                            - PACKAGED_FOOD
                                        - name: Bacon
                                          plu: Bacon
                                          price: 75
                                          modifiers: []
                                          includes: []
                                          ingredients: []
                  callback_url: https://example.com/menu-status
              Menu with swaps:
                value:
                  restaurants:
                    - '11232'
                    - '99234'
                  menus:
                    - name: City Sandwich Shop
                      reference: ''
                      type: DELIVERY
                      categories:
                        - name: Sub Sandwiches
                          description: Customized Subs.
                          items:
                            - name: Classic Sub
                              description: A sub sandwich with your choice of meat.
                              plu: ''
                              price: 0
                              reference: ''
                              modifiers:
                                - name: Condiments
                                  description: Condiments for your sub.
                                  pick:
                                    pick_same_option: false
                                  options:
                                    - name: Mustard
                                      description: ''
                                      plu: BBB-703
                                      price: 0
                                      reference: ''
                              swap:
                                name: Choose Meat
                                options:
                                  - name: Beef Sub
                                    plu: ABC1
                                    price: 1500
                                    reference: beef-sub-ABC1
                                  - name: Smoked Chicken Sub
                                    plu: ABC2
                                    price: 1700
                                    reference: chicken-sub-ABC2
                              gallery:
                                - url: https://citysandwiches.com/sub.jpg
                  callback_url: https://example.com/menu-status
              Menu with grocery items:
                value:
                  restaurants:
                    - '11232'
                    - '99234'
                  menus:
                    - name: Burger Zone Summer Menu
                      reference: burger-zone-summer-5521
                      type: DELIVERY
                      availability:
                        monday:
                          - 08:00 - 23:59
                        tuesday:
                          - 08:00 - 23:59
                        wednesday:
                          - 08:00 - 23:59
                        thursday:
                          - 08:00 - 23:59
                        friday:
                          - 08:00 - 23:59
                        saturday:
                          - 08:00 - 23:59
                        sunday:
                          - 10:00 - 20:00
                      categories:
                        - name: Burgers
                          description: Classic burgers.
                          items:
                            - name: Veggie Burger
                              description: A classic vegetarian hamburger with all the fixings.
                              plu: ABC1F
                              price: 1550
                              reference: breakfast-ABC1F
                              gallery:
                                - url: https://www.burgerzone.com/vegburger.jpg
                              is_alcoholic: false
                              spiciness: MILD
                              dietary_restrictions:
                                - VEGETARIAN
                              allergens:
                                - CELERY
                              additives:
                                - SULFITES
                              nutritional_info:
                                kcal: 500
                                kj: 2000
                              servings: 2
                              tax_percentage: 8
                              caffeine:
                                unit: mg
                                value: 0.02
                              alcohol_percentage: 5.2
                              volume:
                                unit: l
                                gross_value: 1.3
                                net_value: 1.2
                              weight:
                                unit: g
                                gross_value: 1300
                                net_value: 1200
                              deposit:
                                type: single_use
                                amount: 200
                                included_in_total_price: true
                              manufacturer:
                                name: Manufacturer name
                                brand: Manufacturer brand
                                country_of_origin: England
                                additional_details: free text, can be manufacturer address, customer service phone number.
                              storage:
                                type: FROZEN
                                additional_details: free text
                              gtin: 12345678905
                              low_stock_threshold: 5
                              product_types:
                                - PACKAGED_FOOD
              Menu with quantity restrictions:
                value:
                  restaurants:
                    - '11232'
                    - '99234'
                  menus:
                    - name: Pharmacy Menu
                      reference: pharmacy-5521
                      type: DELIVERY
                      availability:
                        monday:
                          - 08:00 - 23:59
                        tuesday:
                          - 08:00 - 23:59
                        wednesday:
                          - 08:00 - 23:59
                        thursday:
                          - 08:00 - 23:59
                        friday:
                          - 08:00 - 23:59
                        saturday:
                          - 08:00 - 23:59
                        sunday:
                          - 10:00 - 20:00
                      categories:
                        - name: Pain Relief
                          description: Over-the-counter pain relief medications.
                          items:
                            - name: Paracetamol 500mg Tablets
                              description: or relief of mild to moderate pain and fever.
                              plu: ABC1F
                              price: 399
                              reference: pharmacy-ABC1F
                              gtin: 12345678905
                      quantity_restrictions:
                        - id: PARA_RESTRICT
                          name: Paracetamol Restriction
                          maximum: 2
                          restricted_quantity_plus:
                            - plu: ABC1F
                              contributing_quantity: 1
                  callback_url: https://example.com/menu-status
      responses:
        '202':
          description: Menu(s) accepted for processing by upstream services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectMenusUtfConnectorAcceptedResponse'
        '400':
          $ref: '#/components/responses/JetConnectMenusUtfConnectorBadRequestResponse'
        '403':
          $ref: '#/components/responses/JetConnectMenusUtfConnectorForbiddenResponse'
        '500':
          $ref: '#/components/responses/JetConnectMenusUtfConnectorServerErrorResponse'
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: menusutfconnector
      x-status: Stable
  /order/{id}/sent-to-pos-failed:
    post:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Update JET Connect with the unsuccessful result of an async order
      description: |-
        Marks the order status of a pending order as failed to inject. 
        This does not mean that the order is rejected, as the order will go through the backup flow, if any.

        Orders are marked pending when you respond to a call to the Receive Order endpoint with a 202 status.

        Requests to this endpoint for an order which is no longer pending will fail.

        If this endpoint is not called within 3 minutes after an order is marked as pending, the order status will switch to "failed to inject".
        If you are receiving multiple transmissions for the same order, e.g. Initial and Final Picked Order, then you need to provide the Transmission ID from the order payload in the request body.
      operationId: SentToPosFailed
      security:
        - X-Flyt-Api-Key: []
      parameters:
        - name: id
          in: path
          description: The identifier for the order for which the status should be updated. Note that this is the JET Connect order ID, received as id in the Receive Order endpoint body.
          required: true
          example: xsfkfwtowkm1mswn2gmjjq
          schema:
            type: string
        - name: Content-Type
          in: header
          description: Specifies the content type of your request. Should always be set to application/json.
          schema:
            type: string
            pattern: ^application\/json$
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterAsyncOrderFailed'
            examples:
              example:
                value:
                  happenedAt: '2019-04-03T00:56:24+00:00'
                  errorCode: MENU_ERROR
                  errorMessage: Items out of stock
      responses:
        '204':
          description: The order was found and its status was updated. The delivery partner will be notified of the order status.
        '400':
          description: Any non-2xx status codes will be taken as a failure and redirected to the tablet to be hand-keyed into your POS.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterFailureResponse'
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: orderinjectionstatusupdater
      x-status: Stable
      x-webhook: 'Yes'
  /order/{id}/sent-to-pos-success:
    post:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Update JET Connect with the successful result of an async order
      description: |-
        Marks the order status of a pending order as successful.

        Orders are marked pending when you respond from a call to the Receive Order endpoint with a 202 status.
        Requests to this endpoint for an order which is no longer pending will fail.

        If this endpoint is not called within 3 minutes after an order is marked as pending, the order status will switch to "failed to inject".
        If you are receiving multiple transmissions for the same order, e.g. Initial and Final Picked Order, then you need to provide the Transmission ID from the order payload in the request body.
      operationId: SentToPosSuccess
      security:
        - X-Flyt-Api-Key: []
      parameters:
        - $ref: '#/paths/~1order~1%7Bid%7D~1sent-to-pos-failed/post/parameters/0'
        - $ref: '#/paths/~1order~1%7Bid%7D~1sent-to-pos-failed/post/parameters/1'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterAsyncOrderSuccess'
            examples:
              example:
                value:
                  happenedAt: '2020-01-31T11:06:11+00:00'
      responses:
        '204':
          description: The order was found and its status was updated. The delivery partner will be notified of the order status.
        '400':
          description: Any non-2xx status codes will be taken as a failure and redirected to the tablet to be hand-keyed into your POS.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterFailureResponse'
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: orderinjectionstatusupdater
      x-status: Stable
      x-webhook: 'Yes'
  /orders/{brandSlug}/{orderId}/amend:
    get:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Get amendment
      description: Get progress about the state of an amended order.
      operationId: ordersBrandSlugOrderIdAmendGet
      security:
        - X-Flyt-Api-Key: []
      parameters:
        - name: brandSlug
          in: path
          required: true
          description: The owning brand in the brand slug format e.g. `je-uk-example` (contact delivery manager if unsure). This field may be removed in a future version.
          example: je-uk-example
          schema:
            type: string
        - name: orderId
          in: path
          required: true
          description: The originating order ID as supplied by the ordering partner.
          example: 00025doahk2txeo9ttd0ma
          schema:
            type: string
      responses:
        '200':
          headers:
            cache-control:
              schema:
                type: string
              description: Information about how the response can be cached
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAmendOrderResp'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: orderinguniversalconnector
      x-status: Stable
    post:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Amend order
      description: Now obsolete. Please use the [modification endpoint](#operation/ordersOrderIdModificationPost) instead. Amends an order to mark items that were out of stock. Upon completion of this amendment process, any failures will reported via the `orderAmendmentFailurePath` webhook. This can be configured inside your brand config defined in `connect.flyt.io`. Contact your delivery manager if you are unsure how to set this.
      operationId: ordersBrandSlugOrderIdAmendPost
      security:
        - X-Flyt-Api-Key: []
      callbacks:
        amendmentFailed:
          /your-failed-amendment-notification-endpoint:
            post:
              summary: Failure processing amendment
              description: When a failure amending an ordering occurs (could when notifying upstream or during any subsequent process), we will send a request to this path.
              responses:
                '202':
                  description: Your server implementation should return this HTTP status code if the data was received successfully.
              requestBody:
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFailedAmendmentBody'
      parameters:
        - name: brandSlug
          in: path
          required: true
          description: The owning brand in the brand slug format e.g. `je-uk-example` (contact delivery manager if unsure). This field may be removed in a future version.
          example: je-uk-example
          schema:
            type: string
        - name: orderId
          in: path
          required: true
          description: The originating order ID as supplied by the ordering partner.
          example: 00025doahk2txeo9ttd0ma
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAmendOrderReq'
      responses:
        '202':
          description: The out of stock items request has been accepted and will be processed.
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '409':
          description: An order can only be amended once so any subsequent attempt will return a conflict.
        '500':
          description: Internal Server Error
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: orderinguniversalconnector
      x-status: Obsolete
  /orders/{orderId}/modification:
    get:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Get modified order state
      description: Get the current state of a modified order request.
      operationId: ordersOrderIdModificationGet
      security:
        - X-Flyt-Api-Key: []
      parameters:
        - name: orderId
          in: path
          required: true
          description: The originating order ID as supplied to you by JET.
          example: 00025doahk2txeo9ttd0ma
          schema:
            type: string
      responses:
        '200':
          headers:
            cache-control:
              schema:
                type: string
              description: Information about how the response can be cached
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorModifyOrderResp'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorUnauthorizedResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFailedModificationBody'
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: orderinguniversalconnector
      x-status: Stable
    post:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Indicate out of stock and substituted items in an order
      description: |
        Allows a partner to mark items that were out of stock and, optionally, to offer substituted items in their place.

        The following constraints apply to substitutions:
        - The substituted item must be of equal or lower cost than the removed item. Substitutions where the added item price exceeds the removed item price will be rejected.
        - Substitutions must be one-to-one per modification pair: one removed item (by PLU) can only be replaced by one added item (by PLU). For example, replacing 2 x 500ml milk with 1 x 1L milk is not supported, and vice versa (replacing 1 x 1L milk with 2 x 500ml milk is also not supported).
      operationId: ordersOrderIdModificationPost
      security:
        - X-Flyt-Api-Key: []
      callbacks:
        modificationCallback:
          /your-modification-notification-endpoint:
            post:
              summary: Notification of modification request processing
              description: |
                Sent when the platform has processed a modification request, whether successful or failed.

                Partners can configure path or URLs for success notifications. Please contact your brand manager to have this configured.

                Note: Information about the state of an order after modification can also be obtained via Final Picked Order - see [Final Injection Documentation](https://uk.api.just-eat.io/docs#operation/finalFinalPickedOrderPost) for details.
              responses:
                '202':
                  description: Your server implementation should return this HTTP status code if the data was received successfully
              requestBody:
                content:
                  application/json:
                    schema:
                      type: object
                      oneOf:
                        - $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorSuccessModificationBody'
                        - $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFailedModificationBody'
      parameters:
        - name: orderId
          in: path
          required: true
          description: The originating order ID as supplied by the ordering partner.
          example: 00025doahk2txeo9ttd0ma
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorModifyOrderReq'
            examples:
              Single out of stock item:
                value:
                  modifications:
                    - removedItems:
                        - plu: plu123
                          missingQuantity: 1
              An item out of stock has been substituted with one item:
                value:
                  modifications:
                    - removedItems:
                        - plu: plu123
                          missingQuantity: 1
                      addedItems:
                        - plu: plu321
                          quantity: 1
      responses:
        '202':
          description: The modification request has been accepted and will be processed.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFailedModificationBodySync'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorUnauthorizedResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '409':
          description: An order can only be modified once so any subsequent attempt will return a conflict.
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFailedModificationBodySync'
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: orderinguniversalconnector
      x-status: Stable
  /orders/{orderId}/validation:
    post:
      tags:
        - JET Connect for Manage Order Status
        - jet-connect
        - publicly-accessible
      summary: Validate an order modification request
      description: Check that a particular modification request meets JET business rules before formally submitting it to the modification endpoint
      operationId: ordersOrderIdValidationPost
      security:
        - X-Flyt-Api-Key: []
      parameters:
        - name: orderId
          in: path
          required: true
          description: The originating order ID as supplied by JET
          example: 00025doahk2txeo9ttd0ma
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorModifyOrderReq'
            examples:
              Single out of stock item:
                value:
                  modifications:
                    - removedItems:
                        - plu: plu123
                          missingQuantity: 1
              An out of stock item has been substituted with an equivalent item:
                value:
                  modifications:
                    - removedItems:
                        - plu: plu123
                          missingQuantity: 1
                      addedItems:
                        - plu: plu321
                          quantity: 1
              Multiple of the same item are out of stock and have been substituted with an equal quantity of a different item:
                value:
                  modifications:
                    - removedItems:
                        - plu: plu123
                          missingQuantity: 2
                      addedItems:
                        - plu: plu321
                          quantity: 2
      responses:
        '200':
          description: The request was checked. Errors that would have been encountered had this request been submitted via the modification endpoint will be returned in the errors array.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFailedModificationBody'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorUnauthorizedResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect Platform
      x-component-name: orderamendments
      x-status: Stable
  /restaurants/{restaurantReference}/offline:
    put:
      tags:
        - JET Connect for Manage Partner Availability
        - jet-connect
        - publicly-accessible
      summary: Set a restaurant offline
      description: Marks a restaurant as offline, i.e. unable to accept new orders.
      operationId: PutRestaurantOffline
      security:
        - X-Flyt-Api-Key: []
      parameters:
        - $ref: '#/paths/~1restaurants~1%7BrestaurantReference%7D~1online/put/parameters/0'
        - name: Content-Type
          in: header
          description: Specifies the content type of your request. Should always be set to application/json if a body is provided.
          schema:
            description: The expected content type.
            type: string
            pattern: ^application\/json$
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiRestaurantOffline'
      responses:
        '202':
          description: Offline notification accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiAcceptedResponse'
        '400':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiBadRequestResponse'
        '403':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiForbiddenResponse'
        '404':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiNotFoundResponse'
        '500':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiInternalServerErrorResponse'
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: restaurantavailabilityapi
      x-status: Stable
  /restaurants/{restaurantReference}/online:
    put:
      tags:
        - JET Connect for Manage Partner Availability
        - jet-connect
        - publicly-accessible
      summary: Set a restaurant online
      description: Marks a restaurant as online, i.e. able to accept new orders.
      operationId: PutRestaurantOnline
      security:
        - X-Flyt-Api-Key: []
      parameters:
        - name: restaurantReference
          in: path
          description: Unique identifier of the restaurant as provided to and configured by JET Connect
          required: true
          schema:
            type: string
      responses:
        '202':
          description: Online notification accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiAcceptedResponse'
        '400':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiBadRequestResponse'
        '403':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiForbiddenResponse'
        '404':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiNotFoundResponse'
        '500':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiInternalServerErrorResponse'
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: restaurantavailabilityapi
      x-status: Stable
  /restaurants/{restaurantReference}/servicetimes:
    put:
      tags:
        - JET Connect for Manage Partner Availability
        - jet-connect
        - publicly-accessible
      summary: Updates restaurant's opening times
      description: |-
        Update the service times in your Just Eat / Menulog restaurants, overriding the ones currently present on the restaurant.

        ## When to use it

        By availabilities on the menu, we mean what times you can order from a specific menu.
        By service times, we mean restaurant opening hours.

        It is possible to push the same menu to multiple locations however, this means that all the restaurants need to share the same availabilities on the menu.

        By using this endpoint you can “override” the service times for a given restaurant, so you will be able to push a single menu and then individually select the service times.

        <span style="color: #FFA500; font-weight: bold; font-size: 1.3em;">Limitations</span>

        The desired restaurant service hours and the actual hours might differ for a restaurant. The times are calculated by the smallest intersection of 3 different time frames.
        - **Restaurant service times**: Set through this endpoint separately for _delivery_ and _collection_.
        - **Menu availability hours**
        - **Delivery pool hours**: Set by our delivery partners.

        Therefore, you cannot override the service hours using this endpoint alone. The actual service hours also depend on the menu availability and the delivery pool hours.

        ### Scenario 1

        You push 1 unique menu with availabilities `17:00-21:00` to ten locations.

        Since one of the locations closes earlier at `20:00` you can now use the service times endpoint to update the opening hours for this location.

        ### Scenario 2

        The breakfast menu runs from `09:00-11:00`  but the restaurant needs to close at `10:00` due to driver shortage. You can use the service times endpoint to update opening hours.

        ### Scenario 3

        Menu availabilities are `8:00-12:00`. The restaurant decides on the day they want to open earlier at `07:00`. The service times endpoint cannot be used to update opening hours as you won't be able to place an order at `07:00` since there is no menu for that time.
        Instead, you would need to re-push the menu with revised availabilities `07:00-12:00`.

        ### Scenario 4 - Overlap

         Menu availabilities are `8:00-12:00`. The restaurant set the delivery opening hours to `7:30-11:30` using the service times endpoint. Therefore, the actual operating hours for the restaurant will be from `8:00-11:30`, which is the overlap between the menu availability and the service times.
      operationId: PutServiceTimes
      security:
        - X-Flyt-Api-Key: []
      parameters:
        - $ref: '#/paths/~1restaurants~1%7BrestaurantReference%7D~1online/put/parameters/0'
        - $ref: '#/paths/~1restaurants~1%7BrestaurantReference%7D~1offline/put/parameters/1'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiServiceTimes'
            examples:
              example:
                value:
                  timezone: Europe/London
                  serviceTimes:
                    - serviceType: Delivery
                      openingTimes:
                        monday:
                          - openingTime: '10:00'
                            closingTime: '18:00'
                          - openingTime: '20:00'
                            closingTime: '23:00'
                        tuesday:
                          - openingTime: '10:00'
                            closingTime: '18:00'
                        wednesday:
                          - openingTime: '10:00'
                            closingTime: '18:00'
                        thursday:
                          - openingTime: '10:00'
                            closingTime: '18:00'
                        friday:
                          - openingTime: '10:00'
                            closingTime: '18:00'
                        saturday:
                          - openingTime: '10:00'
                            closingTime: '18:00'
                        sunday:
                          - openingTime: '10:00'
                            closingTime: '18:00'
                    - serviceType: Collection
                      openingTimes:
                        monday:
                          - openingTime: '10:00'
                            closingTime: '18:00'
      responses:
        '202':
          description: Service Time updates accepted for processing by upstream services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiAcceptedResponse'
        '400':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiBadRequestResponse'
        '403':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiForbiddenResponse'
        '404':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiNotFoundResponse'
        '500':
          $ref: '#/components/responses/JetConnectRestaurantAvailabilityApiInternalServerErrorResponse'
      servers:
        - url: https://api.flytplatform.com
          description: The JET Connect production platform
      x-component-name: restaurantavailabilityapi
      x-status: Stable
  /your-cancel-order-notification-endpoint:
    post:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Cancel Order Notification
      description: When an order for your integrated restaurant has been cancelled, the JET Connect Platform will notify the endpoint you provided via a `POST` request. Your endpoint must be able to receive requests in the format documented below.
      operationId: CancelOrderNotification
      parameters:
        - $ref: '#/paths/~1your-restaurant-temp-offline-endpoint/post/parameters/0'
      requestBody:
        description: The request body we will provide to your endpoint with information about the order.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorCancelledOrder'
            examples:
              Cancelled order:
                value:
                  orderID: 38bbeb45-f520-4438-a44f-0fcdbb29e166
                  reason:
                    code: custCancelledMadeMistake
                  happenedAt: '2022-08-15T10:12:56.371917Z'
      responses:
        '200':
          description: To indicate that the request was successfully received, please return a `200` status code and the same payload we sent you as acknowledgement.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorCancelledOrder'
              examples:
                Cancelled order success:
                  value:
                    orderID: 38bbeb45-f520-4438-a44f-0fcdbb29e166
                    reason:
                      code: custCancelledOther
                    happenedAt: '2022-08-15T10:12:56.371917Z'
        '400':
          description: 'Bad Request: We assume that you received the payload but are unable to handle it in this form.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '401':
          description: 'Unauthorized: The credentials are missing or incorrect in our configuration.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '403':
          description: 'Forbidden: We are not allowed to perform this action, possibly due to a misconfiguration.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '500':
          description: 'Internal Server Error: We will take this as a failure on your side to process the request and will retry up to 5 times.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
      servers:
        - url: https://www.your-base-url.com
          description: The URL that you have provided to us
      x-component-name: orderinguniversalconnector
      x-status: Stable
      x-webhook: 'Yes'
  /your-driver-status-notification-endpoint:
    post:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Driver Status Notification
      description: JET Connect Platform will notify the endpoint you provided via a `POST` request with updates related to the driver status. Your endpoint must be able to receive requests in the format documented below.
      operationId: DriverStatusNotification
      parameters:
        - $ref: '#/paths/~1your-restaurant-temp-offline-endpoint/post/parameters/0'
      requestBody:
        description: The request body we will provide to your endpoint with information about the new driver status.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorDriverStatusUpdate'
            examples:
              Driver status notification success:
                value:
                  orderID: 38bbeb45-f520-4438-a44f-0fcdbb29e166
                  driverStatus:
                    code: driverAtRestaurant
                  happenedAt: '2022-08-15T10:12:56.371917Z'
      responses:
        '200':
          description: To indicate that the request was successfully received, please return a `200` status code and the same payload we sent you as acknowledgement.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorDriverStatusUpdate'
              examples:
                Driver status notification success:
                  value:
                    orderID: 38bbeb45-f520-4438-a44f-0fcdbb29e166
                    driverStatus:
                      code: driverAtRestaurant
                    happenedAt: '2022-08-15T10:12:56.371917Z'
        '400':
          description: 'Bad Request: We assume that you received the payload but are unable to handle it in this form.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '401':
          description: 'Unauthorized: The credentials are missing or incorrect in our configuration.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '403':
          description: 'Forbidden: We are not allowed to perform this action, possibly due to a misconfiguration.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '500':
          description: 'Internal Server Error: We will take this as a failure on your side to process the request and will retry up to 5 times.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
      servers:
        - url: https://www.your-base-url.com
          description: The URL that you have provided to us
      x-component-name: orderinguniversalconnector
      x-status: Stable
      x-webhook: 'Yes'
  /your-failed-order-for-backup-flow-endpoint:
    post:
      tags:
        - JET Connect for Dispatch Orders
        - jet-connect
        - publicly-accessible
      summary: Failed Order For Backup Flow
      description: JET Connect Platform will notify the endpoint you provided via a `POST` request with information related to an order that failed validation on our end so that you can initiate a (manual) backup flow. Your endpoint must be able to receive requests in the format documented below.
      operationId: FailedOrderForBackupFlow
      parameters:
        - $ref: '#/paths/~1your-restaurant-temp-offline-endpoint/post/parameters/0'
      requestBody:
        description: The request body we will provide to your endpoint with information about the order that failed validation.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFailedOrder'
      responses:
        '200':
          description: To indicate that the request was successfully received, please return a `200` status code and the same payload we sent you as acknowledgement.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFailedOrder'
        '400':
          description: 'Bad Request: We assume that you received the payload but are unable to handle it in this form.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '401':
          description: 'Unauthorized: The credentials are missing or incorrect in our configuration.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '403':
          description: 'Forbidden: We are not allowed to perform this action, possibly due to a misconfiguration.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '500':
          description: 'Internal Server Error: We will take this as a failure on your side to process the request and will retry up to 5 times.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
      servers:
        - url: https://www.your-base-url.com
          description: The URL that you have provided to us
      x-component-name: orderinguniversalconnector
      x-status: Stable
      x-webhook: 'Yes'
  /your-restaurant-temp-offline-endpoint:
    post:
      tags:
        - JET Connect for Manage Partner Availability
        - jet-connect
        - publicly-accessible
      summary: Restaurant Temporarily Offline Notification
      description: JET Connect Platform will notify the endpoint you provided via a `POST` request with updates related to restaurant service type being set offline temporarily or back online. Your endpoint must be able to receive requests in the format documented below.
      operationId: RestaurantTempOfflineStatusChanged
      parameters:
        - name: Authorization
          in: header
          description: The API key that you have provided to JET Connect. This header will be omitted if no API key was provided.
          schema:
            type: string
      requestBody:
        description: The request body we will provide to your endpoint with information about the restaurant service that was set offline/online.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorRestaurantTempOfflineStatusChanged'
            examples:
              Restaurant Temp Offline notification success:
                value:
                  restaurantId: 38bbeb45-f520-4438-a44f-0fcdbb29e166
                  lastChangedTimeStampUtc: '2022-08-15T10:12:56.371917Z'
                  collection:
                    isOffline: true
                    allowRestaurantOverride: true
                  delivery:
                    isOffline: true
                    allowRestaurantOverride: true
                  dineIn:
                    isOffline: true
      responses:
        '200':
          description: To indicate that the request was successfully received, please return a `200` status code and the same payload we sent you as acknowledgement.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorRestaurantTempOfflineStatusChanged'
              examples:
                Restaurant Temp Offline notification success:
                  value:
                    restaurantId: 38bbeb45-f520-4438-a44f-0fcdbb29e166
                    lastChangedTimeStampUtc: '2022-08-15T10:12:56.371917Z'
                    collection:
                      isOffline: true
                      allowRestaurantOverride: true
                    delivery:
                      isOffline: true
                      allowRestaurantOverride: true
                    dineIn:
                      isOffline: true
        '400':
          description: 'Bad Request: We assume that you received the payload but are unable to handle it in this form.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '401':
          description: 'Unauthorized: The credentials are missing or incorrect in our configuration.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '403':
          description: 'Forbidden: We are not allowed to perform this action, possibly due to a misconfiguration.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
        '500':
          description: 'Internal Server Error: We will take this as a failure on your side to process the request and will retry up to 5 times.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorError'
      servers:
        - url: https://www.your-base-url.com
          description: The URL that you have provided to us
      x-component-name: restaurantavailabilityapi
      x-status: Stable
      x-webhook: 'Yes'
components:
  schemas:
    4XxErrorSchema:
      description: A HTTP 4xx error response
      properties:
        fault:
          required:
            - faultId
          description: Details of the fault.
          properties:
            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
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            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
          type: object
      type: object
      example:
        fault:
          traceId: H3TKh4QSJUSwVBCBqEtkKw==
          faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
          errors:
            - description: An error has occured because of an issue in the request
              errorCode: ERR401-ERR401
    500ErrorSchema:
      description: A HTTP 500 error response
      properties:
        fault:
          description: Details of the fault.
          required:
            - faultId
          properties:
            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
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            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
          type: object
      type: object
    5XxErrorSchema:
      description: A HTTP 5xx error response
      properties:
        fault:
          required:
            - faultId
          description: An object representing the nature of the failure.
          properties:
            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
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            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
              description: The list of errors.
              type: array
          type: object
      type: object
    EchoHttpError:
      description: A standard http error.
      type: object
      properties:
        message:
          type: string
          description: A message explaining the error.
      required:
        - message
    PagingAfterCursor:
      description: Consists of pagination information.
      type: object
      properties:
        cursors:
          description: Consists of cursors markers used in forward only pagination.
          properties:
            after:
              nullable: true
              description: Cursor parameter to use in the next request to the resource to fetch the next page of data. Value is null when reached end of the set.
              type: string
          type: object
      example:
        cursors:
          after: NDMyNzQyODI3OTQw
    AccountcreditAccountCreditEntry:
      description: A request to retrieve account credit history
      properties:
        transactionDate:
          type: string
          format: date-time
          description: Transaction date
        description:
          type: string
          description: Account credit description
        amount:
          type: number
          format: decimal
          description: Amount
        transactionType:
          type: string
          description: Transaction types - PAYCODE, ORDER, BADORDER, REFUND, CREDIT
        refundReason:
          type: string
          description: Refund reason
        source:
          type: string
          description: Source of Account credit creation
        orderId:
          type: integer
          format: int32
          description: Order Id
        paycode:
          type: string
          description: Paycode
        refundAmount:
          type: number
          format: decimal
          description: Used when account-credit has been refunded against a bad-order
      type: object
    AccountcreditAccountCreditHistoryResponse:
      description: Account credit history response
      properties:
        balance:
          type: number
          format: decimal
          description: Current balance
        entries:
          items:
            $ref: '#/components/schemas/AccountcreditAccountCreditEntry'
          type: array
      example:
        balance: 20
        entries:
          - transactionDate: '2016-03-01T23:20:50.52Z'
            description: //when paycode redeemed - account-credit added
            amount: 20
            paycode: SADHJG23
            transactionType: PAYCODE
          - transactionDate: '2016-03-02T23:20:50.52Z'
            description: //when account-credit is consumed against order
            amount: -10
            orderId: 12345
            transactionType: ORDER
          - transactionDate: '2016-03-03T23:20:50.52Z'
            description: '%BADORDER|10.0000|12345 //when account-credit has been refunded against a bad-order'
            amount: 0
            orderId: 12345
            transactionType: BADORDER
            refundAmount: 10
          - transactionDate: '2016-03-04T23:20:50.52Z'
            description: //generic account credit type that can be used for MGM or Auto Account Credit
            amount: 10
            transactionType: CREDIT
      type: object
    AccountcreditConsumePaycodeResponse:
      description: The response to consuming a Paycode
      properties:
        amount:
          type: number
          format: decimal
          description: Amount
      type: object
    AddressgeocodingAddressGeocodingRequest:
      required:
        - addressLines
      properties:
        addressLines:
          items:
            type: string
          description: Lines of the consumers address, a minimum of 3 is preferred but only 1 is required.
          minItems: 1
          type: array
        addressDisplayParts:
          type: integer
          format: int32
          default: 2
          description: Number of lines the address display parts to split into.
        NoPostcodeFilter:
          type: boolean
          description: Filter to enable and disable postcode filtering on the results.
          example: true
      example:
        addressLines:
          - 2 Fleet Place
          - Fleet Place
          - London
          - EC4M 7RF
      type: object
    AddressgeocodingArea:
      type: object
      description: Extended area information
      properties:
        fullFriendlyName:
          type: string
          description: Area friendly name for display information
        fullCanonicalName:
          type: string
          description: Canonical name for restaurant area search
    AddressgeocodingGeometry:
      properties:
        coordinates:
          maxItems: 2
          type: array
          minItems: 2
          items:
            format: double
            type: number
          description: first element of the array represents longitude, second latitude
        type:
          description: type of primitive
          type: string
      description: Geometry information for consumers location
      example:
        coordinates:
          - -0.10358
          - 51.51469
        type: Point
      type: object
    AddressgeocodingProperties:
      properties:
        geocodingProvider:
          description: the geocoding provider
          type: string
        accuracyScore:
          format: integer
          type: number
          default: 80
          minimum: 1
          maximum: 100
          description: Just Eat Takeaway address accuracy score
        matchScore:
          format: integer
          type: number
          default: 100
          minimum: 1
          maximum: 100
          description: Just Eat Takeaway address match score
        formattedAddress:
          type: string
          description: Address formatted according to country addressing convention
        structuredAddress:
          description: Example key-value pairs describing address fields. These fields are dynamic and are returned if available from the data provider. More fields may be added depending on the request.
          type: object
          properties:
            streetNumberOrBuilding:
              type: string
              description: Address field describing street/building number
            street:
              type: string
              description: Address field describing street address part
            line1:
              type: string
              description: Address field describing the first address line, usually a combination of street number and street
            city:
              type: string
              description: Address field describing city address part
            countryCode:
              type: string
              description: Address field describing country address part
            postcode:
              type: string
              description: Address field describing postcode address part
          additionalProperties:
            type: object
            description: Additional address fields that may be assigned if available
            properties:
              adminAreaLevel1:
                type: string
                description: Address field describing admin area level 1 address part
              adminAreaLevel2:
                type: string
                description: Address field describing admin area level 2 address part
              adminAreaLevel3:
                type: string
                description: Address field describing admin area level 3 address part
              country:
                type: string
                description: Address field describing country (long form) address part
              locality:
                type: string
                description: Address field describing locality address part
              political:
                type: string
                description: Address field describing political address part
              political2:
                type: string
                description: Address field describing political 2 address part
              political3:
                type: string
                description: Address field describing political 3 address part
              premise:
                type: string
                description: Address field describing premise address part
              route:
                type: string
                description: Address field describing route address part
              streetNumber:
                type: string
                description: Address field describing street number address part
              building:
                type: string
                description: Address field describing building address part
        addressDisplayLines:
          description: Shows the address formatted to be displayed on the screen.
          type: object
          properties:
            metadata:
              type: object
              description: Metadata describing how the address lines can be displayed.
              properties:
                isFirstPartFallback:
                  type: boolean
                  description: Is the first item of the `parts` array a fallback to show postcode and city when the full address is not found.
                hasNameInAddressLines:
                  type: boolean
                  description: Describes if the address lines contains a name so that geocoding can act accordingly.
            parts:
              items:
                type: string
              description: The address split into parts based on the requested `addressDisplayParts` property.
              type: array
            full:
              type: string
              description: The full formatted address.
        addressLineMapping:
          description: Shows the address lines to be mapped at the checkout fields.
          type: object
          properties:
            line1:
              type: string
              description: Address field describing the first address line, usually a combination of building name, street number and street. May not be returned if it doesn't exist.
            line2:
              type: string
              description: Address field describing the second address line, usually the area name. May not be returned if it doesn't exist.
            line3:
              type: string
              description: Address field describing the third address line, usually the town or village name. May not be returned if it doesn't exist.
            city:
              type: string
              description: Address field describing city address part. This will return empty field when doesn't exist.
            postcode:
              type: string
              description: Address field describing postcode address part. This will return empty field when doesn't exist.
        area:
          $ref: '#/components/schemas/AddressgeocodingArea'
          description: Geometry information for consumers location.
      example:
        geocodingProvider: Google
        accuracyScore: 100
        matchScore: 100
        structuredAddress:
          streetNumberOrBuilding: '2'
          street: Fleet Place
          line1: 2 Fleet Place
          city: London
          postcode: EC4M 7RF
          countryCode: GB
        addressDisplayLines:
          metadata:
            isPart1Fallback: false
            hasNameInAddressLines: false
          parts:
            - Fleet Place House, 2 Fleet Place
            - London, EC4M 7RF
          full: Fleet Place House, 2 Fleet Place, London, EC4M 7RF
        addressLineMapping:
          line1: Fleet Place House
          line2: 2 Fleet Place
          city: London
          postcode: EC4M 7RF
        formattedAddress: Fleet Place House, 2 Fleet Pl, London EC4M 7RF, UK
        area:
          fullFriendlyName: Fleet Street
          fullCanonicalName: ec4-fleetstreet
      type: object
      description: properties in the geo-coding response
    AddressgeocodingReverseGeocodingResponse:
      properties:
        geometry:
          description: Geometry information for consumers location.
          properties:
            coordinates:
              maxItems: 2
              type: array
              minItems: 2
              items:
                format: double
                type: number
              description: longitude and latitude
            type:
              description: type of primitive
              type: string
          type: object
        properties:
          description: feature metadata
          properties:
            createdDate:
              description: Location context generated date
              format: date-time
              type: string
            entryMethod:
              description: Source of context
              type: object
              properties:
                referrer:
                  type: string
                  description: The page where context was generated
                method:
                  type: string
                  description: Source of context
            area:
              $ref: '#/components/schemas/AddressgeocodingArea'
            address:
              items:
                type: string
              description: list of address chunks
              type: array
            structuredAddress:
              description: Key-value pairs describing address fields
              type: object
              properties:
                streetNumber:
                  type: string
                  description: Address field describing street/building number
                street:
                  type: string
                  description: Address field describing street address part
                line1:
                  type: string
                  description: Address field describing the first address line, usually a combination of street number and street
                locality:
                  type: string
                  description: Address field describing locality address part
                city:
                  type: string
                  description: Address field describing city address part
                country:
                  type: string
                  description: Address field describing country address part
                postcode:
                  type: string
                  description: Address field describing postcode address part
            formattedAddress:
              description: Descriptive delivery address string
              type: string
            addressDisplayLines:
              description: Shows the address formatted to be displayed on the screen.
              type: object
              properties:
                metadata:
                  type: object
                  description: Metadata describing how the address lines can be displayed.
                  properties:
                    isFirstPartFallback:
                      type: boolean
                      description: Is the first item of the `parts` array a fallback to show postcode and city when the full address is not found.
                    hasNameInAddressLines:
                      type: boolean
                      description: Describes if the address lines has name so that geocoding can act accordingly
                parts:
                  items:
                    type: string
                  description: The address split into parts based on the requested `addressDisplayParts` property.
                  type: array
                full:
                  type: string
                  description: The full formatted address.
            addressLineMapping:
              description: Shows the address lines to be mapped at the checkout fields.
              type: object
              properties:
                line1:
                  type: string
                  description: Address field describing the first address line, usually a combination of building name, street number and street. May not be returned if it doesn't exist.
                line2:
                  type: string
                  description: Address field describing the second address line, usually the area name. May not be returned if it doesn't exist.
                line3:
                  type: string
                  description: Address field describing the third address line, usually the town or village name. May not be returned if it doesn't exist.
                city:
                  type: string
                  description: Address field describing city address part. This will return empty field when doesn't exist.
                postcode:
                  type: string
                  description: Address field describing postcode address part. This will return empty field when doesn't exist.
            source:
              type: object
              description: The origin of the location context.
              properties:
                systemId:
                  type: string
                  description: Originating location provider for Location context. (Loqate, Google)
                externalId:
                  type: string
                  description: Google Place Id, Loqate Id
            countryCode:
              type: string
              description: Two digit country code (ISO-3166 alpha-2)
          type: object
        type:
          description: type of primitive
          type: string
      description: Best guess address for passed lat-long
      example:
        geometry:
          coordinates:
            - -0.01938
            - 51.10234
          type: Point
        properties:
          createdDate: '2021-05-26T14:52:35.5444292+01:00'
          entryMethod:
            referrer: home
            method: addressgeocodingapi
          area:
            fullFriendlyName: CM1 4QQ, Essex
            fullCanonicalName: cm1-essex
          address:
            - Flat 3
            - Greystoke House
            - 127 High Street
            - Chelmsford
            - Essex
            - CM1 4QQ
          structuredAddress:
            streetNumber: 11a
            street: High Street
            line1: Flat 3, Greystoke House, 127 High Street
            locality: Chelmsford
            city: Essex
            postcode: CM14QQ
          formattedAddress: Flat 3, Greystoke House, 127 High Street, Chelmsford, Essex, CM14QQ
          addressDisplayLines:
            metadata:
              isPart1Fallback: false
              hasNameInAddressLines: false
            parts:
              - Flat 3, Greystoke House, 127 High Street
              - Chelmsford, CM14QQ
            full: Flat 3, Greystoke House, 127 High Street, Chelmsford, CM14QQ
          addressLineMapping:
            line1: Flat 3
            line2: Greystoke House
            line3: 127 High Street
            city: Chelmsford
            postcode: CM14QQ
          source:
            systemId: Google
            externalId: ChIJJcYS5lIbdkgRDCfBhM3aYms
          countryCode: GB
        type: Feature
      type: object
    AdsAuctionPartnerInput:
      type: object
      title: AuctionPartnerInput
      description: |-
        Represents a partner input for a TopSort auction request.
        Quality score directly affects auction ranking.
      required:
        - partnerId
      properties:
        partnerId:
          type: string
          description: The partner ID. Must be unique within the slot auction.
          minLength: 1
          maxLength: 100
          example: '12345'
        chain:
          type: string
          description: |-
            Optional chain identifier for this partner.
            Partners with the same chain are subject to chain deduplication when enabled.
            Partners without a chain are never deduplicated.
          maxLength: 255
          example: mcdonalds
        qualityScore:
          type: number
          format: double
          description: |-
            Optional quality score for this partner (0 - 1.0, exclusive of 0).
            Directly affects auction rank — higher scores increase win probability.
            If any partner in the auction has a quality score, all partners must have one.
          minimum: 0
          exclusiveMinimum: true
          maximum: 1
          example: 0.8
    AdsAuctionPartnerResult:
      type: object
      title: AuctionPartnerResult
      description: |-
        Represents a partner result from the auction.
        Winners are sorted by rank (1 = highest).
      required:
        - partnerId
        - auctionId
        - rank
        - campaignId
      properties:
        partnerId:
          type: string
          description: The partner ID.
          example: '12345'
        auctionId:
          type: string
          description: |-
            TopSort auction ID (resolvedBidId).
            Used for tracking and analytics.
          example: bid_abc123xyz
        rank:
          type: integer
          format: int32
          description: Rank from the auction. Lower numbers indicate higher ranking (1 is the winner).
          minimum: 1
          example: 1
        campaignId:
          type: string
          description: External TopSort campaign ID that won the auction.
          example: c40e0951-0f4f-4f86-b0a0-fd65e581c844
    AdsAuctionSurface:
      type: string
      title: AuctionSurface
      description: |-
        Response discriminator for auction results returned by POST /ads/{tenant}/auction.
        sponsoredListings identifies sponsored partner auction results.
        displayAds identifies display ad auction results, including banner and product recommendation responses.
      enum:
        - sponsoredListings
        - displayAds
    AdsBasketRecommendationsAuctionResponse:
      type: object
      title: BasketRecommendationsAuctionResponse
      required:
        - auctionSurface
        - slotType
        - key
        - winners
      properties:
        auctionSurface:
          allOf:
            - $ref: '#/components/schemas/AdsAuctionSurface'
            - enum:
                - displayAds
          readOnly: true
          example: displayAds
        slotType:
          allOf:
            - $ref: '#/components/schemas/AdsSlotType'
            - enum:
                - basketRecommendations
          readOnly: true
          example: basketRecommendations
        key:
          type: string
          description: The auction key from the request.
          example: BasketRecommendations_Main
        winners:
          type: array
          description: Auction winners. Empty when the auction timed out or returned no winners.
          items:
            $ref: '#/components/schemas/AdsBasketRecommendationsWinner'
    AdsBasketRecommendationsWinner:
      type: object
      title: BasketRecommendationsWinner
      required:
        - rank
        - productId
        - auctionId
        - campaignId
      properties:
        rank:
          type: integer
          format: int32
          description: Rank from the auction. Lower numbers indicate higher ranking (1 is the winner).
          minimum: 1
          example: 1
        productId:
          type: string
          description: Product ID of the recommended item.
          example: prod-abc123
        auctionId:
          type: string
          description: TopSort auction ID used for tracking and analytics.
          example: bid_basket_123
        campaignId:
          type: string
          description: External TopSort campaign ID that won the auction.
          example: c40e0951-0f4f-4f86-b0a0-fd65e581c844
    AdsBottomSheetAuctionResponse:
      type: object
      title: BottomSheetAuctionResponse
      required:
        - auctionSurface
        - slotType
        - key
      properties:
        auctionSurface:
          allOf:
            - $ref: '#/components/schemas/AdsAuctionSurface'
            - enum:
                - displayAds
          readOnly: true
          example: displayAds
        slotType:
          allOf:
            - $ref: '#/components/schemas/AdsSlotType'
            - enum:
                - bottomSheet
          readOnly: true
          example: bottomSheet
        key:
          type: string
          example: BottomSheet_Pepsi
        bottomSheetImageUrl:
          type: string
        productIds:
          type: array
          items:
            type: string
        bottomSheetText:
          type: string
        bottomSheetAltText:
          type: string
    AdsDisplayAdsAsset:
      type: object
      title: DisplayAdsAsset
      required:
        - url
      properties:
        url:
          type: string
          format: uri
          example: https://cdn.example/banner.jpg
        content:
          type: object
          description: |-
            Optional campaign metadata payload returned by TopSort for the asset.
            The shape varies by display slot type. MidrollBanner commonly returns fields such as
            `title`, `description`, `textLink`, `imageUrl`, `imageUrlWide`, and `target`.
            PostOrderBanner commonly returns fields such as `assetType`, `assetUrlDesktop`,
            `assetUrlMobile`, `targetUrl`, and `actionText`.
          additionalProperties: true
          example:
            title: SOB Burger
            description: National Burger Awards Finalist
            textLink: National Burger Awards Finalist
            imageUrl: https://cdn.example/banner-mobile.jpg
            imageUrlWide: https://cdn.example/banner-wide.jpg
            target: Menu
    AdsLandingPageAuctionResponse:
      type: object
      title: LandingPageAuctionResponse
      required:
        - auctionSurface
        - slotType
        - key
      properties:
        auctionSurface:
          allOf:
            - $ref: '#/components/schemas/AdsAuctionSurface'
            - enum:
                - displayAds
          readOnly: true
          example: displayAds
        slotType:
          allOf:
            - $ref: '#/components/schemas/AdsSlotType'
            - enum:
                - landingPage
          readOnly: true
          example: landingPage
        key:
          type: string
          example: LandingPage_BenAndJerrys
        partners:
          type: array
          items:
            type: string
        mealDealPartners:
          type: array
          items:
            type: string
        brandName:
          type: string
        heroImageUrl:
          type: string
        campaignId:
          type: string
        auctionId:
          type: string
    AdsMidrollBannerAuctionResponse:
      type: object
      title: MidrollBannerAuctionResponse
      required:
        - auctionSurface
        - slotType
        - key
        - winners
      properties:
        auctionSurface:
          allOf:
            - $ref: '#/components/schemas/AdsAuctionSurface'
            - enum:
                - displayAds
          readOnly: true
          example: displayAds
        slotType:
          allOf:
            - $ref: '#/components/schemas/AdsSlotType'
            - enum:
                - midrollBanner
          readOnly: true
          example: midrollBanner
        key:
          type: string
          description: The auction key from the request.
          example: MidrollBanner_Main
        winners:
          type: array
          items:
            $ref: '#/components/schemas/AdsMidrollBannerWinner'
        landingPageCampaigns:
          type: array
          description: |-
            Optional branded landing-page campaigns returned on MidrollBanner responses.
            Ads may return configured campaigns even when no partnerIds were supplied, and de-duplicates campaigns already present in winners.
            Omitted from non-midroll display responses, including PostOrderBanner.
          items:
            $ref: '#/components/schemas/AdsMidrollLandingPageCampaign'
        availableCampaigns:
          type: array
          description: Flattened set of campaign IDs available for the midroll response. Omitted from non-midroll display responses, including PostOrderBanner.
          items:
            type: string
        webViewLink:
          type: string
          description: Optional web view link returned only when applicable for a midroll banner response. Omitted from non-midroll display responses, including PostOrderBanner, and from midroll responses where no link applies.
    AdsMidrollBannerWinner:
      type: object
      title: MidrollBannerWinner
      required:
        - rank
        - id
        - auctionId
        - campaignId
      properties:
        rank:
          type: integer
          format: int32
          minimum: 1
          example: 1
        id:
          type: string
          example: winner-1
        auctionId:
          type: string
          example: bid_ghi111
        campaignId:
          type: string
          example: camp-3
        vendorId:
          type: string
          nullable: true
          example: vendor-1
        assets:
          type: array
          items:
            $ref: '#/components/schemas/AdsDisplayAdsAsset'
    AdsMidrollLandingPageCampaign:
      type: object
      title: MidrollLandingPageCampaign
      required:
        - campaignId
        - auctionId
        - brandName
        - heroImageUrl
        - partners
        - mealDealPartners
      properties:
        campaignId:
          type: string
          example: pepsi
        auctionId:
          type: string
          example: auction-123
        brandName:
          type: string
          example: pepsi
        heroImageUrl:
          type: string
          example: https://cdn.example/hero.png
        partners:
          type: array
          items:
            type: string
          example:
            - '106593'
        mealDealPartners:
          type: array
          items:
            type: string
          example: []
    AdsPostOrderBanner:
      type: object
      title: PostOrderBanner
      required:
        - assetType
        - assetUrlDesktop
        - assetUrlMobile
      properties:
        assetType:
          type: string
          description: Type of asset used by the post-order banner.
          enum:
            - image
          example: image
        assetUrlDesktop:
          type: string
          description: URL of the banner asset for desktop viewports.
          example: https://cdn.example/banner-desktop.png
        assetUrlMobile:
          type: string
          description: URL of the banner asset for mobile viewports.
          example: https://cdn.example/banner-mobile.png
        title:
          type: string
          description: Optional banner title text.
          example: Order now
        actionText:
          type: string
          description: Optional call-to-action text displayed on the banner.
          example: Discover our deals
        targets:
          type: array
          description: Optional navigation targets associated with the banner.
          items:
            $ref: '#/components/schemas/AdsPostOrderBannerTarget'
    AdsPostOrderBannerAuctionResponse:
      type: object
      title: PostOrderBannerAuctionResponse
      required:
        - auctionSurface
        - slotType
        - key
        - winners
      properties:
        auctionSurface:
          allOf:
            - $ref: '#/components/schemas/AdsAuctionSurface'
            - enum:
                - displayAds
          readOnly: true
          example: displayAds
        slotType:
          allOf:
            - $ref: '#/components/schemas/AdsSlotType'
            - enum:
                - postOrderBanner
          readOnly: true
          example: postOrderBanner
        key:
          type: string
          description: The auction key from the request.
          example: PostOrderBanner_Main
        winners:
          type: array
          description: Auction winners. Empty when the auction timed out or returned no winners.
          items:
            $ref: '#/components/schemas/AdsPostOrderBannerWinner'
    AdsPostOrderBannerTarget:
      type: object
      title: PostOrderBannerTarget
      required:
        - type
        - value
      properties:
        type:
          type: string
          description: Target type for the post-order banner action.
          enum:
            - url
          example: url
        value:
          type: string
          description: Destination URL or value for the target.
          example: https://example.com/offer
    AdsPostOrderBannerWinner:
      type: object
      title: PostOrderBannerWinner
      required:
        - rank
        - auctionId
        - campaignId
        - banner
      properties:
        rank:
          type: integer
          format: int32
          description: Rank from the auction. Lower numbers indicate higher ranking (1 is the winner).
          minimum: 1
          example: 1
        auctionId:
          type: string
          description: TopSort auction ID used for tracking and analytics.
          example: bid_postorder_123
        campaignId:
          type: string
          description: External TopSort campaign ID that won the auction.
          example: 019c2896-ed1c-7ed1-bb25-9c4dbd3f47aa
        vendorId:
          type: string
          description: Optional vendor identifier for the winning campaign.
          example: justeattakeaway
        banner:
          description: Display banner asset returned by the post-order auction.
          $ref: '#/components/schemas/AdsPostOrderBanner'
    AdsSlotAuctionRequest:
      type: object
      title: SlotAuctionRequest
      description: |-
        Represents a single slot auction with its partners.
        Each auction runs independently and returns results under the specified auctionKey.
      required:
        - auctionKey
        - page
        - slotType
      properties:
        auctionKey:
          type: string
          description: |-
            Unique key to identify this auction in the response.
            Can be any string (e.g., "TextSearchTier1_ExactMatch", "TopPicks_Localised").
            Must be unique within the request.
          minLength: 1
          maxLength: 200
          example: TopPicks_Localised
        page:
          type: string
          description: |-
            Required JET page context for this auction.
            Ads forwards this into TopSort Page for sponsored listings rather than overloading auctionKey for page identity.
            For displayAds, Ads retains this as endpoint context until the downstream TopSort mapping is clarified.
            Accepted values: search, menu, checkout, postOrder, home, productDetailPage.
          minLength: 1
          maxLength: 200
          example: search
        slotId:
          type: string
          description: |-
            Slot instance identifier for this auction.
            Required for DisplayAds slot types and forwarded to TopSort SlotId where applicable.
          minLength: 1
          maxLength: 200
          example: search-results-main
        location:
          type: string
          description: |-
            Optional per-auction location context.
            SponsoredListings use this as postcode/location targeting for that specific auction.
            MidrollBanner display ads use this as the delivery-district/location input.
            Other display ads slot types, including PostOrderBanner, should omit this field.
          maxLength: 20
          example: SW1A1AA
        slotType:
          description: |-
            The required slot type for this auction. Determines which pipeline handles the request item.
            When TextSearchAutoComplete, only one auction is allowed per request.
            When Vertical, only one auction is allowed per request.
          $ref: '#/components/schemas/AdsSlotType'
        partners:
          type: array
          description: |-
            List of partners to include in the auction for this slot.
            Partners without quality scores will be excluded if ANY partner has a quality score.
            Maximum 3000 partners per slot — excess will be trimmed.
            Partner IDs must be unique within the slot.
            Required for SponsoredListings slot types only.
          minItems: 1
          maxItems: 3000
          items:
            $ref: '#/components/schemas/AdsAuctionPartnerInput'
        categories:
          type: array
          description: |-
            Slot-specific category input.
            For TextSearchAutoComplete this is a small, validated Ads category-tag contract rather than a general-purpose filter language.
            For BottomSheet this uses legacy display-ad category names such as BasketRecommendationEligible and SimpleItem.
            TextSearchAutoComplete accepts a maximum of 3 values in "key:value" format (e.g., "cuisine:pizza").
          items:
            type: string
          example:
            - cuisine:pizza
            - category:fast-food
        searchQuery:
          type: string
          description: |-
            The user's search query text, used for keyword-based campaign matching.
            Optional — omit for non-search contexts such as carousels.
          maxLength: 500
          example: pizza
        slots:
          type: integer
          format: int32
          description: |-
            Number of winners to return for display ads slot types.
            Required for MidrollBanner, PostOrderBanner, and BasketRecommendations.
          minimum: 1
          example: 1
        brandName:
          type: string
          description: Brand name for LandingPage display ads auctions.
          example: BenAndJerrys
        partnerIds:
          type: array
          description: Optional partner IDs for LandingPage display ads auctions and MidrollBanner landing-page fanout.
          items:
            type: string
          example:
            - '106593'
            - '480901'
        campaignId:
          type: string
          description: Campaign ID for BottomSheet display ads auctions.
          example: 019e17b3-b8b6-7283-b24e-204bafc94d27
        partnerId:
          type: string
          description: Partner ID for BasketRecommendations or BottomSheet display ads auctions.
          example: partner-123
    AdsSlotType:
      type: string
      title: SlotType
      description: |-
        The type of slot for the auction. Determines the auction pipeline and number of winners.

        sponsoredListings slot types:
        - textSearchResults — text search SERP, standard 400ms timeout
        - textSearchAutoComplete — autocomplete, 50ms timeout, supports categories
        - carousel — horizontal carousel, each auction gets independent slot positions
        - vertical — vertical listing, single auction per request

        displayAds slot types:
        - midrollBanner — banner ad shown mid-scroll; supports optional partnerIds for landing-page fanout
        - postOrderBanner — banner ad shown on the post-order page; uses the banner auction path without midroll-only landing-page fanout fields
        - basketRecommendations — product recommendations in basket; requires partnerId
        - landingPage — brand landing page; requires brandName and optionally partnerIds
        - bottomSheet — catalogue bottom sheet; requires partnerId and campaignId and optionally accepts categories
      enum:
        - textSearchResults
        - textSearchAutoComplete
        - carousel
        - vertical
        - midrollBanner
        - postOrderBanner
        - basketRecommendations
        - landingPage
        - bottomSheet
    AdsSponsoredListingsAuctionResponse:
      type: object
      title: SponsoredListingsAuctionResponse
      required:
        - auctionSurface
        - slotType
        - key
        - winners
        - slotPositions
      properties:
        auctionSurface:
          allOf:
            - $ref: '#/components/schemas/AdsAuctionSurface'
            - enum:
                - sponsoredListings
          readOnly: true
          example: sponsoredListings
        slotType:
          allOf:
            - $ref: '#/components/schemas/AdsSlotType'
          readOnly: true
          example: textSearchResults
        key:
          type: string
          description: The auction key from the request.
          example: TopPicks_Localised
        slotPositions:
          type: array
          items:
            type: integer
            format: int32
          description: |-
            Ordered list of 0-indexed UI slot positions assigned to the auction winners.
            Length always matches winners length.
          example:
            - 1
            - 3
            - 7
        winners:
          type: array
          description: Auction winners sorted by rank. Empty when the auction timed out or returned no winners.
          items:
            $ref: '#/components/schemas/AdsAuctionPartnerResult'
    AdsTriggerAuctionRequest:
      type: object
      title: TriggerAuctionRequest
      description: |-
        Request model for triggering TopSort auctions across multiple slots.
        Supports running multiple auctions in a single request, each with different slot types and partner lists.
        TopSort requests are automatically batched if more than 5 auctions are provided.
      required:
        - auctions
      properties:
        auctions:
          type: array
          description: |-
            List of auctions to run. Each auction can have a different slot type and partner list.
            Results are returned in the same order as the request, identified by auctionKey.
            auctionKey is correlation only. page is required for all auctions; location is per-auction for SponsoredListings and MidrollBanner; slotId is required for DisplayAds auctions and is carried separately to populate downstream TopSort fields where applicable.
            partnerIds can be used on LandingPage and MidrollBanner. categories can be used on TextSearchAutoComplete and BottomSheet with slot-specific validation.
            Constraints:
            - Maximum 50 auctions per request.
            - Auction keys must be unique within the request.
            - TextSearchAutoComplete and Vertical slot types are limited to one auction per request.
          minItems: 1
          maxItems: 50
          items:
            $ref: '#/components/schemas/AdsSlotAuctionRequest'
          example:
            - auctionKey: TextSearchTier1_ExactMatch
              page: search
              location: SW1A1AA
              slotType: textSearchResults
              searchQuery: pizza
              partners:
                - partnerId: '123'
                  chain: dominoes
                  qualityScore: 0.92
                - partnerId: '456'
                  qualityScore: 0.78
            - auctionKey: TopPicks_Localised
              page: menu
              location: SW1A1AA
              slotType: carousel
              partners:
                - partnerId: '111'
                  qualityScore: 0.8
                - partnerId: '222'
                  qualityScore: 0.95
            - auctionKey: MidrollBanner_Main
              page: menu
              location: SW1A
              slotType: midrollBanner
              slots: 1
              searchQuery: pizza
              slotId: midroll-banner
              partnerIds:
                - '106593'
                - '480901'
            - auctionKey: BottomSheet_Main
              page: checkout
              slotId: bottom-sheet
              slotType: bottomSheet
              partnerId: partner-123
              campaignId: campaign-123
              categories:
                - BasketRecommendationEligible
                - SimpleItem
    AdsTriggerAuctionResponse:
      type: array
      title: TriggerAuctionResponse
      description: |-
        Array of auction results, one per requested auction.
        Results are returned in the same order as the request, each identified by its auctionKey.
        Midroll-specific display fields such as `landingPageCampaigns`, `availableCampaigns`, and `webViewLink` are omitted from non-midroll display responses.
      items:
        oneOf:
          - $ref: '#/components/schemas/AdsSponsoredListingsAuctionResponse'
          - $ref: '#/components/schemas/AdsMidrollBannerAuctionResponse'
          - $ref: '#/components/schemas/AdsPostOrderBannerAuctionResponse'
          - $ref: '#/components/schemas/AdsBasketRecommendationsAuctionResponse'
          - $ref: '#/components/schemas/AdsLandingPageAuctionResponse'
          - $ref: '#/components/schemas/AdsBottomSheetAuctionResponse'
        discriminator:
          propertyName: slotType
          mapping:
            textSearchResults: '#/components/schemas/AdsSponsoredListingsAuctionResponse'
            textSearchAutoComplete: '#/components/schemas/AdsSponsoredListingsAuctionResponse'
            carousel: '#/components/schemas/AdsSponsoredListingsAuctionResponse'
            vertical: '#/components/schemas/AdsSponsoredListingsAuctionResponse'
            midrollBanner: '#/components/schemas/AdsMidrollBannerAuctionResponse'
            postOrderBanner: '#/components/schemas/AdsPostOrderBannerAuctionResponse'
            basketRecommendations: '#/components/schemas/AdsBasketRecommendationsAuctionResponse'
            landingPage: '#/components/schemas/AdsLandingPageAuctionResponse'
            bottomSheet: '#/components/schemas/AdsBottomSheetAuctionResponse'
      example:
        - key: TextSearchTier1_ExactMatch
          auctionSurface: sponsoredListings
          slotType: textSearchResults
          slotPositions:
            - 0
            - 1
          winners:
            - partnerId: '123'
              auctionId: bid_abc123
              rank: 1
              campaignId: camp-1
            - partnerId: '456'
              auctionId: bid_def456
              rank: 2
              campaignId: camp-2
        - key: MidrollBanner_Main
          auctionSurface: displayAds
          slotType: midrollBanner
          winners:
            - rank: 1
              id: winner-1
              auctionId: bid_ghi111
              campaignId: camp-3
              vendorId: vendor-1
              assets:
                - url: https://cdn.example/banner.jpg
                  content:
                    title: SOB Burger
                    description: National Burger Awards Finalist
                    textLink: National Burger Awards Finalist
                    imageUrl: https://cdn.example/banner-mobile.jpg
                    imageUrlWide: https://cdn.example/banner-wide.jpg
                    target: Menu
          landingPageCampaigns:
            - campaignId: pepsi
              auctionId: auction-123
              brandName: pepsi
              heroImageUrl: https://cdn.example/hero.png
              partners:
                - '106593'
              mealDealPartners: []
          availableCampaigns:
            - camp-3
            - pepsi
          webViewLink: https://one-web.example/spotlight-banner-public.html
        - key: PostOrderBanner_NoConsent
          auctionSurface: displayAds
          slotType: postOrderBanner
          winners:
            - rank: 1
              auctionId: bid_postorder_123
              campaignId: 019c2896-ed1c-7ed1-bb25-9c4dbd3f47aa
              vendorId: justeattakeaway
              banner:
                assetType: image
                assetUrlDesktop: https://just-eat-prod-eu-res.cloudinary.com/image/upload/v1772535167/nl/dishes/commercial/VF_Banner_2.png
                assetUrlMobile: https://just-eat-prod-eu-res.cloudinary.com/image/upload/v1772535167/nl/dishes/commercial/VF_Banner_2.png
                title: Eten bestellen. Energie besparen.
                actionText: Ontdek TijdPrijs
        - key: BottomSheet_Main
          auctionSurface: displayAds
          slotType: bottomSheet
          bottomSheetImageUrl: https://cdn.example/bottom-sheet.png
          productIds:
            - prod-1
            - prod-2
          bottomSheetText: Offer text
          bottomSheetAltText: Offer alt text
    ApicustomerorderfulfillmentAdjustmentConfirmation:
      type: object
      properties:
        result:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentSelfServiceResult'
      required:
        - result
    ApicustomerorderfulfillmentAdjustmentPreview:
      type: object
      properties:
        adjustmentId:
          type: string
        total:
          type: integer
          nullable: true
        subtotal:
          type: integer
          nullable: true
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentAdjustmentPreviewLineItem'
        taxes:
          type: object
          additionalProperties:
            type: integer
            nullable: true
        currency:
          type: string
          description: Currency code (e.g., CAD)
      required:
        - adjustmentId
        - lineItems
        - taxes
        - currency
    ApicustomerorderfulfillmentAdjustmentPreviewLineItem:
      type: object
      properties:
        lineItemId:
          type: string
        total:
          type: integer
          nullable: true
        quantity:
          type: integer
        type:
          type: string
        optionGroup:
          type: string
          nullable: true
        optionItem:
          type: string
          nullable: true
      required:
        - lineItemId
        - quantity
        - type
    ApicustomerorderfulfillmentAdminHistory:
      type: object
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentAdminHistoryEntry'
      required:
        - entries
    ApicustomerorderfulfillmentAdminHistoryEntry:
      type: object
      properties:
        userName:
          type: string
        userType:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentUserType'
        changeTime:
          type: integer
          format: int64
        changeType:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentChangeType'
        description:
          type: string
          nullable: true
        pointsDelta:
          type: integer
      required:
        - userName
        - userType
        - changeTime
        - changeType
        - pointsDelta
    ApicustomerorderfulfillmentAdminUser:
      type: object
      properties:
        name:
          type: string
        permissions:
          type: array
          items:
            type: string
          uniqueItems: true
      required:
        - name
        - permissions
    ApicustomerorderfulfillmentCalculationInputs:
      type: object
      properties:
        orderId:
          type: string
        customerId:
          type: string
        type:
          type: string
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentCalculationInputsLineItem'
        locale:
          type: string
          description: Locale code (e.g., en-US)
      required:
        - orderId
        - customerId
        - type
        - lineItems
        - locale
    ApicustomerorderfulfillmentCalculationInputsLineItem:
      type: object
      properties:
        lineItemId:
          type: string
        quantity:
          type: integer
        optionGroup:
          type: string
          nullable: true
        optionItem:
          type: string
          nullable: true
        type:
          type: string
      required:
        - lineItemId
        - quantity
        - type
    ApicustomerorderfulfillmentCelebrationBanner:
      type: object
      properties:
        challengeName:
          type: string
        customerOrderCount:
          type: integer
        customerLiveOrderCount:
          type: integer
        challengeOrderCount:
          type: integer
        description:
          type: string
        rewardsDelta:
          type: integer
        challengeTag:
          type: string
          nullable: true
      required:
        - challengeName
        - customerOrderCount
        - customerLiveOrderCount
        - challengeOrderCount
        - description
        - rewardsDelta
    ApicustomerorderfulfillmentChallenge:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        enDescription:
          type: string
        enTermsConditions:
          type: string
        frDescription:
          type: string
        frTermsConditions:
          type: string
        hasTargetedCohort:
          type: boolean
        publishDate:
          type: integer
          format: int64
        startDate:
          type: integer
          format: int64
        endDate:
          type: integer
          format: int64
        rewardsType:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentRewardsType'
        rewardsDelta:
          type: integer
        numberOfOrders:
          type: integer
        stackable:
          type: boolean
        orderType:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentOrderType'
          uniqueItems: true
        orderSubtotalMinimum:
          type: integer
        timeOfDayStart:
          type: string
          nullable: true
        timeOfDayEnd:
          type: string
          nullable: true
        daysOfWeek:
          type: array
          items:
            type: string
          uniqueItems: true
          nullable: true
        timeZone:
          type: string
          nullable: true
        challengeTag:
          type: string
          nullable: true
        emergencyControlStatus:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentChallengeControlStatus'
          nullable: true
        rewardsTier:
          type: integer
          nullable: true
        city:
          type: string
          nullable: true
        province:
          type: string
          nullable: true
        fileName:
          type: string
          nullable: true
        campaignId:
          type: string
          nullable: true
        challengeNotification:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentChallengeNotification'
          nullable: true
        notificationTime:
          type: string
          nullable: true
        billingType:
          type: string
      required:
        - id
        - name
        - enDescription
        - enTermsConditions
        - frDescription
        - frTermsConditions
        - hasTargetedCohort
        - publishDate
        - startDate
        - endDate
        - rewardsType
        - rewardsDelta
        - numberOfOrders
        - stackable
        - orderType
        - orderSubtotalMinimum
        - billingType
    ApicustomerorderfulfillmentChallengeControlStatus:
      type: string
      enum:
        - PAUSED
        - RESUMED
        - TERMINATED
      description: Status for challenge emergency control
    ApicustomerorderfulfillmentChallengeEmergencyControlIn:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentChallengeControlStatus'
        reason:
          type: string
          nullable: true
      required:
        - status
    ApicustomerorderfulfillmentChallengeEmergencyControlOut:
      type: object
      properties:
        challengeId:
          type: string
        status:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentChallengeControlStatus'
        reason:
          type: string
          nullable: true
        modifiedUser:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentModifiedUser'
      required:
        - challengeId
        - status
        - modifiedUser
    ApicustomerorderfulfillmentChallengeNotification:
      type: object
      properties:
        id:
          type: string
        header:
          type: string
        enTitle:
          type: string
        enMessage:
          type: string
        frTitle:
          type: string
        frMessage:
          type: string
      required:
        - id
        - header
        - enTitle
        - enMessage
        - frTitle
        - frMessage
    ApicustomerorderfulfillmentChangeType:
      type: string
      enum:
        - PURCHASE
        - DISCRETIONARY
        - TIER_CHANGE
        - WELCOME_BONUS
        - REDEMPTION
        - REDEMPTION_ROLLBACK
        - OTHER
        - BONUS
      description: Type of points change
    ApicustomerorderfulfillmentConfirmationInputs:
      type: object
      properties:
        adjustmentId:
          type: string
        customerId:
          type: string
        notes:
          type: string
          nullable: true
      required:
        - adjustmentId
        - customerId
    ApicustomerorderfulfillmentCreateChallenge:
      type: object
      properties:
        name:
          type: string
        enDescription:
          type: string
        enTermsConditions:
          type: string
        frDescription:
          type: string
        frTermsConditions:
          type: string
        publishDate:
          type: integer
          format: int64
          description: Unix timestamp
        startDate:
          type: integer
          format: int64
          description: Unix timestamp
        endDate:
          type: integer
          format: int64
          description: Unix timestamp
        rewardsType:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentRewardsType'
        rewardsDelta:
          type: integer
        numberOfOrders:
          type: integer
        orderType:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentOrderType'
          uniqueItems: true
        orderSubtotalMinimum:
          type: integer
        timeOfDayStart:
          type: string
          nullable: true
        timeOfDayEnd:
          type: string
          nullable: true
        daysOfWeek:
          type: array
          items:
            type: integer
          uniqueItems: true
          nullable: true
        timeZone:
          type: string
          nullable: true
        rewardsTier:
          type: integer
          nullable: true
        city:
          type: string
          nullable: true
        province:
          type: string
          nullable: true
        challengeTag:
          type: string
          nullable: true
        challengeId:
          type: string
          nullable: true
        campaignId:
          type: string
          nullable: true
        challengeNotification:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentCreateChallengeNotification'
          nullable: true
        notificationTime:
          type: string
          nullable: true
        billingType:
          type: string
          nullable: true
      required:
        - name
        - enDescription
        - enTermsConditions
        - frDescription
        - frTermsConditions
        - publishDate
        - startDate
        - endDate
        - rewardsType
        - rewardsDelta
        - numberOfOrders
        - orderType
        - orderSubtotalMinimum
    ApicustomerorderfulfillmentCreateChallengeNotification:
      type: object
      properties:
        id:
          type: string
          nullable: true
        header:
          type: string
        enTitle:
          type: string
        enMessage:
          type: string
        frTitle:
          type: string
        frMessage:
          type: string
      required:
        - header
        - enTitle
        - enMessage
        - frTitle
        - frMessage
    ApicustomerorderfulfillmentCustomerAvailableChallenges:
      type: object
      properties:
        availableChallengesCount:
          type: integer
        challenge:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentCustomerChallenge'
          nullable: true
      required:
        - availableChallengesCount
    ApicustomerorderfulfillmentCustomerChallenge:
      type: object
      properties:
        challengeName:
          type: string
        challengeStartDate:
          type: integer
          format: int64
        challengePublishDate:
          type: integer
          format: int64
        challengeEndDate:
          type: integer
          format: int64
        customerOrderCount:
          type: integer
        customerLiveOrderCount:
          type: integer
        challengeOrderCount:
          type: integer
        description:
          type: string
        termsAndConditions:
          type: string
        rewardsDelta:
          type: integer
        challengeTag:
          type: string
          nullable: true
        readStatus:
          type: string
      required:
        - challengeName
        - challengeStartDate
        - challengePublishDate
        - challengeEndDate
        - customerOrderCount
        - customerLiveOrderCount
        - challengeOrderCount
        - description
        - termsAndConditions
        - rewardsDelta
        - readStatus
    ApicustomerorderfulfillmentCustomerChallengeList:
      type: object
      properties:
        challenges:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentCustomerChallenge'
          uniqueItems: true
      required:
        - challenges
    ApicustomerorderfulfillmentCustomerChallengesHistory:
      type: object
      properties:
        customerId:
          type: string
        challengeId:
          type: string
        challengeName:
          type: string
        description:
          type: string
        customerOrderedCount:
          type: integer
        challengeRequireOrders:
          type: integer
        rewardsDelta:
          type: integer
        readStatus:
          type: string
        startDate:
          type: integer
          format: int64
        endDate:
          type: integer
          format: int64
        orderType:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentOrderType'
          uniqueItems: true
        timeOfDay:
          type: string
          nullable: true
          description: Time range string
          x-assumption: Represented as string due to Range<LocalTime> complexity
        daysOfWeek:
          type: array
          items:
            type: string
          uniqueItems: true
          nullable: true
        timeZone:
          type: string
          nullable: true
        province:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        rewardsTier:
          type: integer
          nullable: true
        orderNumbers:
          type: array
          items:
            type: integer
          uniqueItems: true
        currentChallengeControlStatus:
          type: string
      required:
        - customerId
        - challengeId
        - challengeName
        - description
        - customerOrderedCount
        - challengeRequireOrders
        - rewardsDelta
        - readStatus
        - startDate
        - endDate
        - orderType
        - orderNumbers
        - currentChallengeControlStatus
    ApicustomerorderfulfillmentCustomerChallengesHistoryList:
      type: object
      properties:
        customerId:
          type: string
        historyList:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentCustomerChallengesHistory'
      required:
        - customerId
        - historyList
    ApicustomerorderfulfillmentCustomerHistory:
      type: object
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentCustomerHistoryEntry'
        balance:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentPoints'
          nullable: true
      required:
        - entries
    ApicustomerorderfulfillmentCustomerHistoryEntry:
      type: object
      properties:
        userType:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentUserType'
        changeTime:
          type: integer
          format: int64
        changeType:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentChangeType'
        description:
          type: string
          nullable: true
        pointsDelta:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentPointsWithStatus'
        tier:
          type: integer
          nullable: true
      required:
        - userType
        - changeTime
        - changeType
        - pointsDelta
    ApicustomerorderfulfillmentDataServiceOrder:
      type: object
      properties:
        completionTime:
          type: integer
          format: int64
          nullable: true
    ApicustomerorderfulfillmentDiscretionaryOperationIn:
      type: object
      properties:
        points:
          type: integer
        customerId:
          type: string
        reason:
          type: string
      required:
        - points
        - customerId
        - reason
    ApicustomerorderfulfillmentDiscretionaryOperationInternal:
      type: object
      properties:
        points:
          type: integer
        customerId:
          type: string
        reason:
          type: string
        modifiedUser:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentModifiedUser'
      required:
        - points
        - customerId
        - reason
        - modifiedUser
    ApicustomerorderfulfillmentErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message
        code:
          type: string
          description: Error code
        details:
          type: object
          description: Additional error details
          nullable: true
      required:
        - error
    ApicustomerorderfulfillmentInternalDetailedTax:
      type: object
      properties:
        orderTax:
          type: object
          additionalProperties:
            type: integer
      required:
        - orderTax
    ApicustomerorderfulfillmentInternalHistory:
      type: object
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalHistoryEntry'
      required:
        - entries
    ApicustomerorderfulfillmentInternalHistoryEntry:
      type: object
      properties:
        userName:
          type: string
        userType:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentUserType'
        changeTime:
          type: integer
          format: int64
        changeType:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentChangeType'
        description:
          type: string
          nullable: true
        pointsDelta:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentPointsWithStatus'
        tier:
          type: integer
          nullable: true
      required:
        - userName
        - userType
        - changeTime
        - changeType
        - pointsDelta
    ApicustomerorderfulfillmentInternalLastOrderEntry:
      type: object
      properties:
        customerId:
          type: string
        orderNumber:
          type: integer
        time:
          type: integer
          format: int64
        reward:
          type: integer
      required:
        - customerId
        - orderNumber
        - time
        - reward
    ApicustomerorderfulfillmentInternalLastOrderEntryWithBalance:
      type: object
      properties:
        lastOrderEntry:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalLastOrderEntry'
          nullable: true
        points:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentPoints'
      required:
        - points
    ApicustomerorderfulfillmentInternalLineItem:
      type: object
      properties:
        id:
          type: string
        quantity:
          type: integer
        name:
          type: string
        priceCategory:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentPriceCategory'
        specialInstructions:
          type: string
          nullable: true
        options:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalLineItemOption'
          nullable: true
      required:
        - id
        - quantity
        - name
        - priceCategory
    ApicustomerorderfulfillmentInternalLineItemOption:
      type: object
      properties:
        optionGroup:
          type: string
        optionItem:
          type: string
        quantity:
          type: integer
        priceEach:
          type: integer
          nullable: true
      required:
        - optionGroup
        - optionItem
        - quantity
    ApicustomerorderfulfillmentInternalLineItemPrice:
      type: object
      properties:
        id:
          type: string
        itemName:
          type: string
        quantity:
          type: integer
        priceEach:
          type: integer
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalLineItemPriceDiscount'
        subOptions:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalLineItemOption'
        priceCategoryBreakdown:
          type: object
          additionalProperties:
            type: integer
      required:
        - id
        - itemName
        - quantity
        - priceEach
        - discounts
        - options
        - priceCategoryBreakdown
    ApicustomerorderfulfillmentInternalLineItemPriceDiscount:
      type: object
      properties:
        value:
          type: integer
        quantity:
          type: integer
      required:
        - value
        - quantity
    ApicustomerorderfulfillmentInternalOrderDetails:
      type: object
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        orderStatus:
          type: string
        acceptedTime:
          type: integer
          format: int64
          nullable: true
        acceptedAt:
          type: integer
          format: int64
          nullable: true
        centsTotal:
          type: integer
        alcoholDelivery:
          type: boolean
        restaurant:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalRestaurant'
        orderInformation:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalOrderInformation'
        orderItems:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalLineItem'
        payments:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalPayment'
        detailedTax:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalDetailedTax'
        priceDetails:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalPriceDetails'
      required:
        - orderId
        - orderNumber
        - orderStatus
        - centsTotal
        - alcoholDelivery
        - restaurant
        - orderInformation
        - lineItems
        - payments
        - detailedTax
        - priceDetails
    ApicustomerorderfulfillmentInternalOrderInformation:
      type: object
      properties:
        customerId:
          type: string
        name:
          type: string
      required:
        - customerId
        - name
    ApicustomerorderfulfillmentInternalOrderIssuePreview:
      type: object
      properties:
        total:
          type: integer
          nullable: true
        subtotal:
          type: integer
          nullable: true
        items:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalOrderIssuePreviewItem'
        taxes:
          type: object
          additionalProperties:
            type: integer
            nullable: true
      required:
        - items
        - taxes
    ApicustomerorderfulfillmentInternalOrderIssuePreviewItem:
      type: object
      properties:
        lineItemId:
          type: string
        total:
          type: integer
          nullable: true
        quantity:
          type: integer
        type:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentLineItemType'
        optionGroup:
          type: string
          nullable: true
        optionItem:
          type: string
          nullable: true
      required:
        - lineItemId
        - quantity
        - type
    ApicustomerorderfulfillmentInternalOrderSupportOrder:
      type: object
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        restaurantShortName:
          type: string
        alcoholDelivery:
          type: boolean
        hasOrderIssue:
          type: boolean
        hasAdjustment:
          type: boolean
        centsTotal:
          type: integer
        completionTime:
          type: integer
          format: int64
          nullable: true
      required:
        - orderId
        - orderNumber
        - restaurantShortName
        - alcoholDelivery
        - hasOrderIssue
        - hasAdjustment
        - centsTotal
    ApicustomerorderfulfillmentInternalPayment:
      type: object
      properties:
        id:
          type: string
        paymentStatus:
          type: string
        paymentType:
          type: string
        amount:
          type: integer
      required:
        - id
        - paymentStatus
        - paymentType
        - amount
    ApicustomerorderfulfillmentInternalPriceDetails:
      type: object
      properties:
        lineItemCosts:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentInternalLineItemPrice'
      required:
        - lineItemCosts
    ApicustomerorderfulfillmentInternalRestaurant:
      type: object
      properties:
        restaurantId:
          type: string
        restaurantName:
          type: string
        restaurantShortName:
          type: string
        restaurantLocationName:
          type: string
        currency:
          type: string
        timezone:
          type: string
        city:
          type: string
        country:
          type: string
          description: Country code
          x-assumption: Country enum mapped to string representation
      required:
        - restaurantId
        - restaurantName
        - restaurantShortName
        - restaurantLocationName
        - currency
        - timezone
        - city
        - country
    ApicustomerorderfulfillmentJeRestrictionType:
      type: string
      enum:
        - ALCOHOL
        - UNKNOWN
      description: Just Eat restriction type
    ApicustomerorderfulfillmentLastOrderEntry:
      type: object
      properties:
        customerId:
          type: string
        orderNumber:
          type: integer
        time:
          type: integer
          format: int64
        reward:
          type: integer
      required:
        - customerId
        - orderNumber
        - time
        - reward
    ApicustomerorderfulfillmentLastOrderEntryWithBalance:
      type: object
      properties:
        lastOrderEntry:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentLastOrderEntry'
          nullable: true
        points:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentPoints'
      required:
        - points
    ApicustomerorderfulfillmentLineItemType:
      type: string
      enum:
        - ITEM
        - OPTION
      description: Type of line item
    ApicustomerorderfulfillmentLivewallValidation:
      type: object
      properties:
        winners:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentWinner'
      required:
        - winners
    ApicustomerorderfulfillmentLivewallValidationResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentLivewallValidationResult'
      required:
        - results
    ApicustomerorderfulfillmentLivewallValidationResult:
      type: object
      properties:
        orderId:
          type: string
        customerHash:
          type: string
        success:
          type: boolean
      required:
        - orderId
        - customerHash
        - success
    ApicustomerorderfulfillmentLoggedInUser:
      type: object
      properties:
        id:
          type: string
        userToken:
          type: string
      required:
        - id
        - userToken
    ApicustomerorderfulfillmentLogin:
      type: object
      properties:
        appToken:
          type: string
          description: Application token
        userId:
          type: string
          description: User identifier
        userType:
          type: string
          description: Type of user
        password:
          type: string
          format: password
          description: User password
        isSocialCreatedPassword:
          type: boolean
          nullable: true
          description: Whether password was created via social login
        enabled:
          type: boolean
          nullable: true
          description: Whether the login is enabled
        modifiedUser:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentModifiedUser'
          nullable: true
      required:
        - appToken
        - userId
        - userType
        - password
    ApicustomerorderfulfillmentMarketingOrder:
      type: object
      properties:
        customer:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentMarketingOrderCustomer'
        status:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentMarketingOrderStatus'
      required:
        - customer
        - status
    ApicustomerorderfulfillmentMarketingOrderCustomer:
      type: object
      properties:
        customerId:
          type: string
      required:
        - customerId
    ApicustomerorderfulfillmentMarketingOrderStatus:
      type: string
      enum:
        - PENDING
        - ACCEPTED
        - CANCELLED
        - REJECTED
        - COMPLETED
        - AWAITING_PAYMENT
    ApicustomerorderfulfillmentModifiedUser:
      type: object
      properties:
        id:
          type: string
          description: User identifier
        name:
          type: string
          description: User display name
        type:
          type: string
          description: User type identifier
      required:
        - id
        - name
        - type
    ApicustomerorderfulfillmentNotificationAcknowledgeActionIn:
      type: object
      properties:
        acknowledgeAction:
          type: string
          nullable: true
    ApicustomerorderfulfillmentNotificationAcknowledgeActionInternal:
      type: object
      properties:
        acknowledgeAction:
          type: string
          nullable: true
    ApicustomerorderfulfillmentNotificationEntry:
      type: object
      properties:
        id:
          type: string
        typeToken:
          type: string
        data:
          type: object
          description: Arbitrary notification data
          x-assumption: Dynamic object type - structure depends on notification type
      required:
        - id
        - typeToken
        - data
    ApicustomerorderfulfillmentNotificationType:
      type: string
      enum:
        - REWARDS_TIER_UPGRADE
        - REWARDS_ONBOARDING_TOUR
      description: Type of notification
    ApicustomerorderfulfillmentNotifications:
      type: object
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentNotificationEntry'
          uniqueItems: true
      required:
        - entries
    ApicustomerorderfulfillmentOrder:
      type: object
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        restaurantShortName:
          type: string
        alcoholDelivery:
          type: boolean
        hasOrderIssue:
          type: boolean
        hasAdjustment:
          type: boolean
        centsTotal:
          type: integer
          description: Total amount in cents
        completionTime:
          type: integer
          format: int64
          nullable: true
          description: Unix timestamp
      required:
        - orderId
        - orderNumber
        - restaurantShortName
        - alcoholDelivery
        - hasOrderIssue
        - hasAdjustment
        - centsTotal
    ApicustomerorderfulfillmentOrderDetails:
      type: object
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        completionTime:
          type: integer
          format: int64
          nullable: true
        centsTotal:
          type: integer
        restaurantShortName:
          type: string
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentOrderDetailsLineItem'
      required:
        - orderId
        - orderNumber
        - centsTotal
        - restaurantShortName
        - lineItems
    ApicustomerorderfulfillmentOrderDetailsLineItem:
      type: object
      properties:
        id:
          type: string
        quantity:
          type: integer
        name:
          type: string
        priceCategory:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentPriceCategory'
        specialInstructions:
          type: string
          nullable: true
        options:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentOrderDetailsLineItemOption'
          nullable: true
      required:
        - id
        - quantity
        - name
        - priceCategory
    ApicustomerorderfulfillmentOrderDetailsLineItemOption:
      type: object
      properties:
        optionGroup:
          type: string
        optionItem:
          type: string
        quantity:
          type: integer
      required:
        - optionGroup
        - optionItem
        - quantity
    ApicustomerorderfulfillmentOrderIssuePreview:
      type: object
      properties:
        currency:
          type: string
        total:
          type: integer
          nullable: true
        subtotal:
          type: integer
          nullable: true
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentOrderIssuePreviewItem'
        taxes:
          type: object
          additionalProperties:
            type: integer
            nullable: true
      required:
        - currency
        - lineItems
        - taxes
    ApicustomerorderfulfillmentOrderIssuePreviewItem:
      type: object
      properties:
        lineItemId:
          type: string
        total:
          type: integer
          nullable: true
        quantity:
          type: integer
        type:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentLineItemType'
        optionGroup:
          type: string
          nullable: true
        optionItem:
          type: string
          nullable: true
      required:
        - lineItemId
        - quantity
        - type
    ApicustomerorderfulfillmentOrderIssuePreviewRequest:
      type: object
      properties:
        orderId:
          type: string
        type:
          type: string
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentOrderIssuePreviewRequestItem'
        notes:
          type: string
          nullable: true
      required:
        - orderId
        - type
        - lineItems
    ApicustomerorderfulfillmentOrderIssuePreviewRequestItem:
      type: object
      properties:
        lineItemId:
          type: string
        quantity:
          type: integer
        optionGroup:
          type: string
          nullable: true
        optionItem:
          type: string
          nullable: true
        type:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentLineItemType'
      required:
        - lineItemId
        - quantity
        - type
    ApicustomerorderfulfillmentOrderIssueRequest:
      type: object
      properties:
        orderId:
          type: string
        type:
          type: string
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentOrderIssueRequestItem'
        notes:
          type: string
          nullable: true
      required:
        - orderId
        - type
        - lineItems
    ApicustomerorderfulfillmentOrderIssueRequestItem:
      type: object
      properties:
        lineItemId:
          type: string
        quantity:
          type: integer
        optionGroup:
          type: string
          nullable: true
        optionItem:
          type: string
          nullable: true
        type:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentLineItemType'
        notes:
          type: string
          nullable: true
      required:
        - lineItemId
        - quantity
        - type
    ApicustomerorderfulfillmentOrderRejection:
      type: object
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        orderStatus:
          type: string
        acceptedTime:
          type: integer
          format: int64
          nullable: true
        acceptedAt:
          type: integer
          format: int64
          nullable: true
        centsTotal:
          type: integer
        customerId:
          type: string
        customerName:
          type: string
        city:
          type: string
        country:
          type: string
          description: Country code
        paymentList:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentOrderRejectionPayment'
      required:
        - orderId
        - orderNumber
        - orderStatus
        - centsTotal
        - customerId
        - customerName
        - city
        - country
        - paymentList
    ApicustomerorderfulfillmentOrderRejectionPayment:
      type: object
      properties:
        id:
          type: string
        paymentStatus:
          type: string
        paymentType:
          type: string
        amount:
          type: integer
      required:
        - id
        - paymentStatus
        - paymentType
        - amount
    ApicustomerorderfulfillmentOrderType:
      type: string
      enum:
        - DELIVERY
        - PICKUP
      description: Type of order
    ApicustomerorderfulfillmentOrders:
      type: object
      properties:
        placed:
          type: integer
        upgradeAt:
          type: integer
          nullable: true
      required:
        - placed
    ApicustomerorderfulfillmentPosOrderInjectionError:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
      required:
        - code
        - message
    ApicustomerorderfulfillmentPosOrderInjectionResponse:
      type: object
      properties:
        orderId:
          type: string
        timestamp:
          type: integer
          format: int64
        success:
          type: boolean
        error:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentPosOrderInjectionError'
          nullable: true
      required:
        - orderId
        - timestamp
        - success
    ApicustomerorderfulfillmentPoints:
      type: object
      properties:
        total:
          type: integer
        pending:
          type: integer
        confirmed:
          type: integer
      required:
        - total
        - pending
        - confirmed
    ApicustomerorderfulfillmentPointsWithStatus:
      type: object
      properties:
        value:
          type: integer
        isConfirmed:
          type: boolean
      required:
        - value
        - isConfirmed
    ApicustomerorderfulfillmentPriceCategory:
      type: string
      enum:
        - FOOD
        - DELIVERY_FEE
        - SERVICE_FEE
        - PRETAXED
        - SUGARED_DRINK
        - ALCOHOL_DELIVERY
        - ALCOHOL_DELIVERY_TAX
        - NO_TAX
        - ALCOHOL
        - BAG_FEE
        - CUSTOMER_SERVICE_FEE
        - CUSTOMER_SERVICE_FEE_TAX
        - BAKED_GOODS
        - GST_ONLY
        - NON_FOOD
        - PST_ONLY
        - PREPARED_FOOD
        - VARIABLE_SERVICE_FEE
        - CANNABIS
      description: Price category for tax calculation
    ApicustomerorderfulfillmentProfile:
      type: object
      properties:
        tiers:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentProfileTier'
          uniqueItems: true
        points:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentPoints'
        orders:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentOrders'
      required:
        - tiers
        - points
        - orders
    ApicustomerorderfulfillmentProfileTier:
      type: object
      properties:
        name:
          type: string
        earningRate:
          type: number
          format: float
        ordinal:
          type: integer
          format: int16
        status:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentTierStatus'
        minimumOrders:
          type: integer
        unlockedOn:
          type: integer
          format: int64
          nullable: true
      required:
        - name
        - earningRate
        - ordinal
        - status
        - minimumOrders
    ApicustomerorderfulfillmentProgramConfig:
      type: object
      properties:
        tiers:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentRewardsConfigTier'
        redemptionOptions:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentRedemptionOption'
      required:
        - tiers
        - redemptionOptions
    ApicustomerorderfulfillmentRedemption:
      type: object
      properties:
        ledgerId:
          type: string
      required:
        - ledgerId
    ApicustomerorderfulfillmentRedemptionOperationIn:
      type: object
      properties:
        points:
          type: integer
        customerId:
          type: string
        reason:
          type: string
          nullable: true
      required:
        - points
        - customerId
    ApicustomerorderfulfillmentRedemptionOperationInternal:
      type: object
      properties:
        points:
          type: integer
        customerId:
          type: string
        reason:
          type: string
          nullable: true
      required:
        - points
        - customerId
    ApicustomerorderfulfillmentRedemptionOption:
      type: object
      properties:
        ordinal:
          type: integer
        points:
          type: integer
      required:
        - ordinal
        - points
    ApicustomerorderfulfillmentRewardsConfigTier:
      type: object
      properties:
        name:
          type: string
        ordinal:
          type: integer
        earningRate:
          type: number
          format: float
        minimumOrders:
          type: integer
      required:
        - name
        - ordinal
        - earningRate
        - minimumOrders
    ApicustomerorderfulfillmentRewardsType:
      type: string
      enum:
        - SKIP_CREDITS
        - REWARDS_BONUS_POINTS
      description: Type of rewards
    ApicustomerorderfulfillmentScopedId:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentNotificationType'
        id:
          type: string
          description: Scoped identifier
      required:
        - type
        - id
    ApicustomerorderfulfillmentSelfServiceResult:
      type: string
      enum:
        - ACCEPTED
        - REJECTED
        - PENDING
      description: Result of self-service operation
    ApicustomerorderfulfillmentSendOrderToPosData:
      type: object
      properties:
        locationId:
          type: integer
        orderId:
          type: string
        channelId:
          type: integer
        error:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentSendOrderToPosError'
          nullable: true
      required:
        - locationId
        - orderId
        - channelId
    ApicustomerorderfulfillmentSendOrderToPosError:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
      required:
        - code
        - message
    ApicustomerorderfulfillmentSendOrderToPosResponse:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentSendOrderToPosResponseType'
        timestamp:
          type: string
          description: ISO 8601 format timestamp
        data:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentSendOrderToPosData'
      required:
        - type
        - timestamp
        - data
    ApicustomerorderfulfillmentSendOrderToPosResponseType:
      type: string
      enum:
        - SENT_TO_POS
        - FAILED_TO_SEND_TO_POS
    ApicustomerorderfulfillmentSimpleCustomer:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
    ApicustomerorderfulfillmentSimpleCustomersByIdQuery:
      type: object
      properties:
        query:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentSimpleCustomersByIdQueryQuery'
        contract:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentSimpleCustomersByIdQueryContract'
      required:
        - query
        - contract
    ApicustomerorderfulfillmentSimpleCustomersByIdQueryContract:
      type: object
      properties:
        id:
          type: boolean
          nullable: true
        name:
          type: boolean
          nullable: true
    ApicustomerorderfulfillmentSimpleCustomersByIdQueryQuery:
      type: object
      properties:
        customerIds:
          type: array
          items:
            type: string
          uniqueItems: true
      required:
        - customerIds
    ApicustomerorderfulfillmentTargetCohortDetails:
      type: object
      properties:
        challengeId:
          type: string
        targetStartedTime:
          type: integer
          format: int64
        prospectiveTargetedCustomers:
          type: integer
        processedCustomers:
          type: integer
        fileName:
          type: string
      required:
        - challengeId
        - targetStartedTime
        - prospectiveTargetedCustomers
        - processedCustomers
        - fileName
    ApicustomerorderfulfillmentTierStatus:
      type: string
      enum:
        - CURRENT
        - NEXT
        - NONE
      description: Status of tier for customer
    ApicustomerorderfulfillmentUpdateChallenge:
      type: object
      properties:
        name:
          type: string
        enDescription:
          type: string
        enTermsConditions:
          type: string
        frDescription:
          type: string
        frTermsConditions:
          type: string
        publishDate:
          type: integer
          format: int64
        startDate:
          type: integer
          format: int64
        rewardsType:
          $ref: '#/components/schemas/ApicustomerorderfulfillmentRewardsType'
        rewardsDelta:
          type: integer
        numberOfOrders:
          type: integer
        orderType:
          type: array
          items:
            $ref: '#/components/schemas/ApicustomerorderfulfillmentOrderType'
          uniqueItems: true
        orderSubtotalMinimum:
          type: integer
        timeOfDayStart:
          type: string
          nullable: true
        timeOfDayEnd:
          type: string
          nullable: true
        daysOfWeek:
          type: array
          items:
            type: integer
          uniqueItems: true
          nullable: true
        timeZone:
          type: string
          nullable: true
        rewardsTier:
          type: integer
          nullable: true
        city:
          type: string
          nullable: true
        province:
          type: string
          nullable: true
        challengeTag:
          type: string
          nullable: true
        campaignId:
          type: string
          nullable: true
        challengeNotification:
          allOf:
            - $ref: '#/components/schemas/ApicustomerorderfulfillmentCreateChallengeNotification'
          nullable: true
        notificationTime:
          type: string
          nullable: true
        billingType:
          type: string
          nullable: true
      required:
        - name
        - enDescription
        - enTermsConditions
        - frDescription
        - frTermsConditions
        - publishDate
        - startDate
        - rewardsType
        - rewardsDelta
        - numberOfOrders
        - orderType
        - orderSubtotalMinimum
    ApicustomerorderfulfillmentUserType:
      type: string
      enum:
        - SYSTEM
        - ADMIN
        - CUSTOMER
      description: Type of user
    ApicustomerorderfulfillmentVerifiedToken:
      type: object
      properties:
        userId:
          type: string
        userType:
          type: string
        isSocialCreatedPassword:
          type: boolean
        token:
          type: string
      required:
        - userId
        - userType
        - isSocialCreatedPassword
        - token
    ApicustomerorderfulfillmentVerifyToken:
      type: object
      properties:
        appToken:
          type: string
        userId:
          type: string
        userType:
          type: string
        token:
          type: string
      required:
        - appToken
        - userId
        - userType
        - token
    ApicustomerorderfulfillmentWinner:
      type: object
      properties:
        orderId:
          type: string
        customerHash:
          type: string
      required:
        - orderId
        - customerHash
    ApipaymentmanagementAcceptedStatus:
      type: string
      description: Indicates whether the order has been accepted by the restaurant.
      enum:
        - PENDING
        - ACCEPTED
        - REJECTED
      example: ACCEPTED
    ApipaymentmanagementAddedPayment:
      type: object
      description: Response returned after initiating an asynchronous payment.
      required:
        - status
        - orderId
      properties:
        isVBV:
          type: boolean
          description: |-
            Optional flag indicating whether Verified by Visa (VBV) / 3DS was initiated. Absent when not
            applicable.
          example: true
        type:
          type: string
          description: Optional payment type label. Absent when not set by the payment service.
          example: CREDIT_CARD
        status:
          description: Current processing status of the added payment.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPaymentStatus'
        form:
          description: |-
            Optional 3DS form data required for the customer to complete authentication. Absent when 3DS is not
            required.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementAddedPaymentForm'
        orderId:
          type: string
          description: Identifier of the order to which this payment was applied.
          example: order-abc123
    ApipaymentmanagementAddedPaymentForm:
      type: object
      description: |-
        Form fields required to complete a 3D Secure (3DS) authentication challenge. Present only when the
        payment requires a 3DS redirect.
      required:
        - postUrl
      properties:
        PaReq:
          type: string
          description: |-
            Optional PARes (Payer Authentication Request) value for 3DS v1. Absent when 3DS is not initiated or
            when using 3DS v2.
          example: eAFdkc1u...
        MD:
          type: string
          description: Optional merchant data token for correlating the 3DS session on return. Absent when not applicable.
          example: md-token-xyz
        TermUrl:
          type: string
          description: Optional URL to which the card issuer redirects after 3DS authentication. Absent when not required.
          example: https://api.example.ca/v1/3ds/callback
        postUrl:
          type: string
          description: URL of the card issuer's 3DS ACS (Access Control Server).
          example: https://acs.issuer.ca/3ds
    ApipaymentmanagementAdditionalDocument:
      type: object
      description: |-
        Optional additional identity verification document provided in a Stripe individual verification
        object.
      properties:
        back:
          type: string
          description: Optional Stripe file ID for the back of the additional document.
          example: file_add_back
        front:
          type: string
          description: Optional Stripe file ID for the front of the additional document.
          example: file_add_front
        details_code:
          type: string
          description: Optional error code for the additional document.
          example: document_failed_other
    ApipaymentmanagementAddress:
      type: object
      description: Billing address supplied for AVS (Address Verification System) validation.
      required:
        - postalCode
      properties:
        address:
          type: string
          description: Optional street address line. Absent when not provided.
          example: 123 King St W
        postalCode:
          type: string
          description: Postal code for AVS validation.
          example: M5H 1A1
    ApipaymentmanagementAdyenNotificationRequestItem:
      type: object
      description: Wrapper object for a single Adyen notification request item.
      required:
        - NotificationRequestItem
      properties:
        NotificationRequestItem:
          description: The nested notification item details.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementNotificationRequestItemDetails'
    ApipaymentmanagementAdyenStandardNotification:
      type: object
      description: |-
        Standard Adyen webhook notification payload. May contain dispute notifications (chargebacks, fraud
        reports) or regular payment lifecycle events. Dispute notifications are forwarded to the fraud
        analysis service; all others are forwarded to the payment management service.
      required:
        - live
        - notificationItems
      properties:
        live:
          type: boolean
          description: |-
            Indicates whether the notification originates from the Adyen live (production) environment (true) or
            test environment (false).
          example: false
        notificationItems:
          type: array
          description: List of notification items included in this webhook call.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementAdyenNotificationRequestItem'
    ApipaymentmanagementApplePayPaymentMethodType:
      type: string
      description: Apple Pay card funding type.
      enum:
        - CREDIT
        - DEBIT
      example: CREDIT
    ApipaymentmanagementBasePaymentInformation:
      type: object
      description: |-
        Abstract base for all V3 payment information subtypes. All subtypes share method, deviceId,
        metadata, and corporateCostCode.
      required:
        - method
      properties:
        method:
          description: Discriminator field identifying the concrete payment method subtype.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPaymentType'
        deviceId:
          type: string
          description: Optional device identifier used for fraud analysis. Absent when not provided.
          example: device-xyz
        metadata:
          description: Optional payment metadata for 3DS and fraud analysis. Absent when not provided.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementMetadata'
        corporateCostCode:
          type: string
          description: Optional corporate cost code for expense tracking. Absent when not applicable.
        statementSuffix:
          type: string
          description: 'Optional custom suffix appended to the merchant name on the customer''s bank or card statement. Maps to Stripe''s `statement_descriptor_suffix`. The value must not contain any of the following special characters: <, >, \, '', ", *. Validation is silent server-side, so no pattern is enforced here. Only honoured for card-based payment types (`CreditCardPaymentInformation`, `SavedCreditCardPaymentInformation`, `TokenizedApplePayPaymentInformation`, `TokenizedGooglePayPaymentInformation`); ignored for cash, corporate, and Skip credit payments.'
          example: CIBC
    ApipaymentmanagementBaseSegment:
      type: string
      description: Customer base segment used to restrict coupon redemption.
      enum:
        - PROSPECT
        - NEW
        - REACTIVATED
        - EARLY
        - ENGAGED
        - LAPSING
        - DORMANT
        - CHURNED
      example: LAPSING
    ApipaymentmanagementBrowserInformation:
      type: object
      description: Browser environment details used for 3D Secure (3DS) risk assessment.
      properties:
        language:
          type: string
          description: Optional browser language (e.g., en-CA). Absent when not available.
          example: en-CA
        colourDepth:
          type: integer
          description: Optional screen colour depth in bits. Absent when not available.
          example: 24
        screenHeight:
          type: integer
          description: Optional screen height in pixels. Absent when not available.
          example: 900
        screenWidth:
          type: integer
          description: Optional screen width in pixels. Absent when not available.
          example: 1440
        timezoneOffset:
          type: integer
          description: Optional UTC offset of the browser's timezone in minutes. Absent when not available.
          example: -300
        javaEnabled:
          type: boolean
          description: Optional flag indicating whether Java is enabled in the browser.
          example: false
    ApipaymentmanagementCardNetwork:
      type: string
      description: Credit card network that the coupon is restricted to, if any.
      enum:
        - VISA
        - MASTERCARD
        - AMEX
        - INTERAC
        - DISCOVER
        - UNIONPAY
        - DINERS
        - UNKNOWN
      example: VISA
    ApipaymentmanagementCashPaymentInformation:
      description: |-
        Payment information for a cash payment. No additional fields beyond the base. Used when method is
        CASH.
      allOf:
        - $ref: '#/components/schemas/ApipaymentmanagementBasePaymentInformation'
    ApipaymentmanagementCategory:
      type: string
      description: Legacy business category used in coupon search summaries. Mirrors CouponCategory values.
      enum:
        - REFER_A_FRIEND
        - REGULAR
        - PARTNER
        - SUBSCRIPTION
      example: REGULAR
    ApipaymentmanagementCorporatePaymentInformation:
      description: Payment information for a corporate account payment. Used when method is CORPORATE.
      allOf:
        - $ref: '#/components/schemas/ApipaymentmanagementBasePaymentInformation'
    ApipaymentmanagementCoupon:
      type: object
      description: Full coupon details as returned by the coupon management service.
      required:
        - code
        - created
        - description
        - amount
        - type
        - enabled
        - stackable
      properties:
        code:
          type: string
          description: Unique alphanumeric code used to redeem the coupon.
          example: SUMMER25
        created:
          type: integer
          format: int64
          description: Unix epoch timestamp (milliseconds) when the coupon was created.
          example: 1700000000000
        description:
          type: string
          description: Human-readable description of the coupon's purpose or campaign.
          example: Summer 2024 promotional discount
        amount:
          type: integer
          description: |-
            Discount amount. Interpreted as a percentage when type is PERCENT, or as cents (CAD) when type is
            FIXED.
          example: 500
        maxAmount:
          type: integer
          description: Optional upper cap (in cents, CAD) on the discount when type is PERCENT. Absent when no cap applies.
          example: 1000
        type:
          description: Discount calculation strategy.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCouponType'
        externalDiscountId:
          type: string
          description: Optional identifier linking this coupon to an external discount system. Absent when not provided.
          example: EXT-DISCOUNT-42
        discountDurationMonths:
          type: integer
          description: Optional number of months the discount is applied to recurring orders. Absent when not applicable.
          example: 3
        enabled:
          type: boolean
          description: Indicates whether the coupon is currently active and redeemable.
          example: true
        stackable:
          type: boolean
          description: Indicates whether this coupon may be combined with other coupons in a single order.
          example: false
        maxNumUses:
          type: integer
          description: |-
            Optional maximum total number of times this coupon may be redeemed across all customers. Absent when
            unlimited.
          example: 10000
        dateTimeRestriction:
          description: |-
            Optional date and time window restricting when the coupon may be redeemed. Absent when no temporal
            restriction applies.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDateTimeRestriction'
        orderType:
          description: Optional order fulfilment type restriction. Absent when the coupon applies to all order types.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementOrderType'
        paymentRestriction:
          description: Optional payment method restriction. Absent when the coupon applies to all payment methods.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPaymentRestriction'
        minOrderAmount:
          type: integer
          description: |-
            Optional minimum order subtotal (in cents, CAD) required to redeem the coupon. Absent when no
            minimum applies.
          example: 2000
        restaurants:
          description: Optional restriction to a set of restaurants. Absent when the coupon applies to all restaurants.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRestaurantRestriction'
        restaurantGroupRestriction:
          description: Optional restriction to a set of restaurant groups. Absent when the coupon applies to all groups.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRestaurantGroupRestriction'
        deliveryZonesRestriction:
          description: Optional restriction to a set of delivery zones. Absent when the coupon applies to all zones.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDeliveryZoneRestriction'
        customerRestriction:
          description: Optional restriction to one or more customer lifecycle segments. Absent when the coupon applies to all customer segments.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCustomerRestriction'
        firstOrderOnly:
          type: boolean
          description: |-
            Optional flag indicating that the coupon is redeemable only on a customer's first order. Absent when
            no such restriction applies.
          example: true
        category:
          description: Optional business category of the coupon. Absent when not categorised.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCouponCategory'
        modifiedUser:
          description: Optional information about the Admin user who last modified the coupon. Absent when not tracked.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementModifiedUser'
        maxUsesPerCustomer:
          type: integer
          description: |-
            Optional maximum number of times a single customer may redeem this coupon. Absent when unlimited per
            customer.
          example: 1
        isMobileOnly:
          type: boolean
          description: |-
            Optional flag indicating that the coupon is redeemable only via the mobile application. Absent when
            not restricted to mobile.
          example: false
        provider:
          type: string
          description: |-
            Optional name of the external provider or partner associated with this coupon. Absent when not
            applicable.
          example: Visa Canada
        numberOfCoupons:
          type: integer
          description: |-
            Optional total number of unique coupon codes generated under this base coupon code. Absent when not
            a unique-voucher coupon.
          example: 500
        programName:
          type: string
          description: |-
            Optional name of the marketing programme this coupon belongs to. Absent when not associated with a
            programme.
          example: Spring Referral Programme
        distributionChannels:
          type: string
          description: |-
            Optional comma-separated list of channels through which the coupon is distributed (e.g.,
            "email,push"). Absent when not specified.
          example: email,push
        projectedAudienceSize:
          type: integer
          description: Optional estimated number of customers who will receive this coupon. Absent when not specified.
          example: 50000
        projectedOrderVolume:
          type: integer
          description: Optional estimated number of orders expected to use this coupon. Absent when not specified.
          example: 5000
        redemptionCap:
          type: integer
          description: Optional hard limit on total coupon redemptions for budgetary control. Absent when not specified.
          example: 2000
        projectedSpendCents:
          type: integer
          description: |-
            Optional projected total promotional spend in cents (CAD) for this coupon. Absent when not
            specified.
          example: 1000000
    ApipaymentmanagementCouponCategory:
      type: string
      description: Business classification of the coupon programme.
      enum:
        - REFER_A_FRIEND
        - REGULAR
        - PARTNER
        - SUBSCRIPTION
      example: REGULAR
    ApipaymentmanagementCouponList:
      type: object
      description: Paginated list of coupon search results.
      required:
        - totalRecords
        - totalFilteredRecords
        - coupons
      properties:
        totalRecords:
          type: integer
          description: Total number of coupon records in the system, regardless of filters.
          example: 1250
        totalFilteredRecords:
          type: integer
          description: Total number of coupon records matching the applied search filters.
          example: 47
        coupons:
          type: array
          description: Page of coupon summaries matching the search criteria.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementCouponSearchSummaryDto'
    ApipaymentmanagementCouponSearchSummaryDto:
      type: object
      description: Lightweight summary of a coupon returned in paginated search results.
      required:
        - code
        - description
        - type
        - category
        - enabled
        - stackable
        - maxNumUses
        - numberUses
        - uniqueCoupons
      properties:
        code:
          type: string
          description: Unique alphanumeric code of the coupon.
          example: SUMMER25
        description:
          type: string
          description: Human-readable description of the coupon.
          example: Summer 2024 promotional discount
        type:
          description: Discount calculation strategy.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCouponType'
        category:
          description: Business category of the coupon.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCategory'
        enabled:
          type: boolean
          description: Indicates whether the coupon is currently active.
          example: true
        stackable:
          type: boolean
          description: Indicates whether the coupon may be combined with other coupons.
          example: false
        maxNumUses:
          type: integer
          description: Maximum total number of redemptions allowed. null when unlimited.
          example: 10000
          nullable: true
        numberUses:
          type: integer
          description: Current total number of times the coupon has been redeemed.
          example: 342
        uniqueCoupons:
          type: integer
          description: |-
            Number of unique single-use voucher codes generated under this base coupon code. 0 when the coupon
            does not use unique vouchers.
          example: 500
    ApipaymentmanagementCouponType:
      type: string
      description: Discount calculation strategy applied when redeeming the coupon.
      enum:
        - PERCENT
        - FIXED
      example: FIXED
    ApipaymentmanagementCouponWithRestaurant:
      type: object
      description: |-
        Enriched coupon response that includes the full coupon details alongside the hydrated names of all
        associated restaurants and restaurant groups.
      required:
        - coupon
        - restaurantNames
        - restaurantGroupNames
      properties:
        coupon:
          description: Full coupon details.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCoupon'
        restaurantNames:
          type: array
          description: |-
            List of restaurants that are referenced by the coupon's restaurants restriction. Empty when no
            restaurant restriction is set.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementRestaurant'
        restaurantGroupNames:
          type: array
          description: |-
            List of restaurant groups that are referenced by the coupon's restaurantGroupRestriction. Empty when
            no group restriction is set.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementRestaurantGroupResponse'
    ApipaymentmanagementCourierPaymentRequest:
      type: object
      description: |-
        Payment information submitted by a courier to initiate a credit card charge for a product (order or
        delivery).
      required:
        - creditCardToken
        - amount
        - currency
        - productId
      properties:
        creditCardToken:
          description: Tokenised credit card details used to process the payment.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCreditCardToken'
        cardType:
          description: Optional card network of the credit card. Absent when the network cannot be determined.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCardNetwork'
        amount:
          type: integer
          description: Payment amount in cents (CAD by default, or as specified by currency).
          example: 2500
        currency:
          type: string
          description: |-
            ISO 4217 currency code for the payment. Supplied as a CurrencyCode value from the SkipTheDishes core
            library (e.g., CAD, USD, AUD, GBP, EUR, NZD).
          example: CAD
        metadata:
          description: Optional supplementary metadata for fraud analysis. Absent when not provided.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementMetadata'
        productId:
          type: string
          description: Identifier of the product (order or delivery) for which the payment is being processed.
          example: order-abc123
    ApipaymentmanagementCourierPaymentResponse:
      type: object
      description: |-
        Result of a courier payment attempt, including the terminal payment status and an optional 3D
        Secure redirect URL when further authentication is required.
      required:
        - paymentStatus
      properties:
        paymentStatus:
          description: Terminal or intermediate status of the payment after processing.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPaymentStatus'
        redirectURL:
          type: string
          description: |-
            Optional URL to which the browser must be redirected to complete 3D Secure authentication. Absent
            when 3DS is not required.
          example: https://3ds.example.ca/verify?session=abc
    ApipaymentmanagementCreateCoupon:
      type: object
      description: |-
        Payload for creating a new coupon. The couponCode path parameter specifies the base code;
        numberOfCoupons and couponSuffixLength can be used to generate a batch of unique voucher codes
        derived from this base code.
      required:
        - description
        - amount
        - type
        - enabled
        - stackable
      properties:
        description:
          type: string
          description: Human-readable description of the coupon's purpose or campaign.
          example: Fall 2024 promotional discount
        amount:
          type: integer
          description: |-
            Discount amount. Interpreted as a percentage (0–100) when type is PERCENT, or as cents (CAD) when
            type is FIXED.
          example: 500
        maxAmount:
          type: integer
          description: |-
            Optional upper cap (in cents, CAD) on the discount when type is PERCENT. Omit when no cap is
            required.
          example: 1000
        type:
          description: Discount calculation strategy for this coupon.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCouponType'
        category:
          description: Optional business classification of the coupon. Omit when uncategorised.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCouponCategory'
        externalDiscountId:
          type: string
          description: Optional identifier linking this coupon to an external discount system. Omit when not applicable.
          example: EXT-DISCOUNT-42
        discountDurationMonths:
          type: integer
          description: |-
            Optional number of months for which the discount applies to recurring orders (subscription use
            case). Omit when not applicable.
          example: 3
        enabled:
          type: boolean
          description: Whether the coupon should be immediately active upon creation.
          example: true
        stackable:
          type: boolean
          description: Whether this coupon may be combined with other coupons in a single order.
          example: false
        maxNumUses:
          type: integer
          description: Optional maximum total number of redemptions allowed across all customers. Omit for unlimited usage.
          example: 10000
        maxUsesPerCustomer:
          type: integer
          description: |-
            Optional maximum number of times a single customer may redeem this coupon. Omit for unlimited per-
            customer usage.
          example: 1
        orderType:
          description: Optional restriction to a specific order fulfilment type. Omit to allow all order types.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementOrderType'
        paymentRestriction:
          description: |-
            Optional restriction to specific payment methods or card networks. Omit to allow all payment
            methods.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPaymentRestriction'
        minOrderAmount:
          type: integer
          description: |-
            Optional minimum order subtotal (in cents, CAD) required for the coupon to be applicable. Omit when
            no minimum is required.
          example: 2000
        restaurants:
          description: Optional restaurant-level restriction. Omit when the coupon applies to all restaurants.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRestaurantRestriction'
        restaurantGroupRestriction:
          description: Optional restaurant group restriction. Omit when the coupon applies to all groups.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRestaurantGroupRestriction'
        deliveryZonesRestriction:
          description: Optional delivery zone restriction. Omit when the coupon applies to all zones.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDeliveryZoneRestriction'
        customerRestriction:
          description: Optional restriction to one or more customer lifecycle segments. Omit when no customer segment restriction is required.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCustomerRestriction'
        firstOrderOnly:
          type: boolean
          description: Optional flag to restrict redemption to a customer's first order only. Omit when not applicable.
          example: false
        isMobileOnly:
          type: boolean
          description: |-
            Optional flag to restrict redemption to the mobile application only. Omit when the coupon applies to
            all platforms.
          example: false
        numberOfCoupons:
          type: integer
          description: |-
            Optional number of unique single-use voucher codes to generate from this base coupon code. Requires
            couponSuffixLength. Omit when no unique vouchers are needed.
          example: 500
        couponSuffixLength:
          type: integer
          description: |-
            Optional length of the randomly generated suffix appended to the base code for each unique voucher.
            Used together with numberOfCoupons. Omit when no unique vouchers are needed.
          example: 6
        dateTimeRestriction:
          description: |-
            Optional date and time window during which the coupon is redeemable. Omit when no temporal
            restriction is required.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDateTimeRestriction'
        provider:
          type: string
          description: Optional name of the external partner or provider sponsoring this coupon. Omit when not applicable.
          example: Visa Canada
        programName:
          type: string
          description: |-
            Optional name of the marketing programme this coupon belongs to. Omit when not part of a named
            programme.
          example: Fall Referral Programme
        distributionChannels:
          type: string
          description: |-
            Optional comma-separated list of distribution channels for this coupon (e.g., "email,push"). Omit
            when not tracked.
          example: email,push
        projectedAudienceSize:
          type: integer
          description: |-
            Optional estimated number of customers targeted by this coupon. Omit when not required for budget
            tracking.
          example: 50000
        projectedOrderVolume:
          type: integer
          description: Optional estimated number of orders expected to use this coupon. Omit when not required.
          example: 5000
        redemptionCap:
          type: integer
          description: |-
            Optional hard limit on total coupon redemptions for budgetary control. Omit when there is no
            redemption cap beyond maxNumUses.
          example: 2000
        projectedSpendCents:
          type: integer
          description: |-
            Optional projected total promotional spend in cents (CAD). Omit when not required for budget
            tracking.
          example: 1000000
    ApipaymentmanagementCreatedCoupon:
      type: object
      description: Confirmation payload returned after a coupon is successfully created.
      required:
        - code
        - restaurantNames
      properties:
        code:
          type: string
          description: The unique coupon code that was created.
          example: FALL2024
        restaurantNames:
          type: array
          description: |-
            List of restaurants associated with the newly created coupon's restaurant restriction. Empty when no
            restaurant restriction was specified.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementRestaurant'
    ApipaymentmanagementCreditCardPaymentInformation:
      description: Payment information for a new (non-saved) credit card payment. Used when method is CREDIT_CARD.
      allOf:
        - $ref: '#/components/schemas/ApipaymentmanagementBasePaymentInformation'
        - type: object
          required:
            - creditCardToken
            - saveCard
            - cardType
          properties:
            creditCardToken:
              description: Tokenized credit card data.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementCreditCardToken'
            saveCard:
              type: boolean
              description: Whether to save this card to the customer's account for future use.
              example: false
            cardType:
              description: Card network of the credit card.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementCardNetwork'
            address:
              description: Optional billing address for card verification. Absent when not provided.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementAddress'
    ApipaymentmanagementCreditCardToken:
      type: object
      description: Tokenised representation of a credit card as provided by the tokenizer.
      required:
        - token
        - maskedCardNumber
        - binNumber
      properties:
        token:
          type: string
          description: Tokenizer-issued token representing the credit card.
          example: tok_abc123
        maskedCardNumber:
          type: string
          description: Masked representation of the card number (e.g., last four digits).
          example: XXXX-XXXX-XXXX-4242
        binNumber:
          type: string
          description: Bank Identification Number (BIN) — the first six digits of the card.
          example: '423456'
        tokenizerReferenceId:
          type: string
          description: |-
            Optional reference identifier issued by the tokenizer during card registration. Absent when not
            provided by the tokenizer.
          example: ref-789
    ApipaymentmanagementCustomerInformation:
      type: object
      description: Optional customer contact and delivery metadata used to supplement fraud analysis.
      properties:
        customerName:
          type: string
          description: Optional full name of the customer. Absent when not provided.
          example: Jane Doe
        email:
          type: string
          description: Optional email address of the customer. Absent when not provided.
          example: jane.doe@example.ca
        phoneNumber:
          type: string
          description: Optional phone number of the customer. Absent when not provided.
          example: '+16045550123'
        deliveryAddress:
          description: Optional delivery address. Absent when not provided.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDeliveryAddress'
    ApipaymentmanagementCustomerRestriction:
      type: object
      description: Restricts coupon redemption to customers belonging to one or more lifecycle segments.
      required:
        - baseSegments
      properties:
        baseSegments:
          type: array
          uniqueItems: true
          description: Set of customer base segments eligible for coupon redemption.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementBaseSegment'
          example:
            - LAPSING
            - REACTIVATED
    ApipaymentmanagementDateRange:
      type: object
      description: |-
        A bounded date range represented as a Guava Range<Long> object. lowerEndpoint and upperEndpoint are
        Unix epoch timestamps in milliseconds. lowerBoundType and upperBoundType indicate whether each bound
        is inclusive (CLOSED) or exclusive (OPEN).
      properties:
        lowerEndpoint:
          type: integer
          format: int64
          description: Start of the date range as a Unix epoch timestamp in milliseconds (inclusive by default).
          example: 1700000000000
        upperEndpoint:
          type: integer
          format: int64
          description: End of the date range as a Unix epoch timestamp in milliseconds (exclusive by default).
          example: 1709999999999
        lowerBoundType:
          type: string
          description: Indicates whether the lower bound is inclusive (CLOSED) or exclusive (OPEN).
          enum:
            - CLOSED
            - OPEN
          example: CLOSED
        upperBoundType:
          type: string
          description: Indicates whether the upper bound is inclusive (CLOSED) or exclusive (OPEN).
          enum:
            - CLOSED
            - OPEN
          example: OPEN
    ApipaymentmanagementDateTimeRestriction:
      type: object
      description: |-
        Restricts the coupon to a specific date range and, optionally, to specific hours of the day within
        that range.
      required:
        - activeDate
      properties:
        activeDate:
          description: Mandatory date range (epoch milliseconds) during which the coupon may be redeemed.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDateRange'
        activeHours:
          description: |-
            Optional time-of-day window within which the coupon is active. Absent when no hourly restriction
            applies.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementTimeRange'
    ApipaymentmanagementDeliveryAddress:
      type: object
      description: Partial delivery address used for fraud analysis context.
      properties:
        streetAddress1:
          type: string
          description: Optional first line of the street address. Absent when not provided.
          example: 123 Main St
        city:
          type: string
          description: Optional city name. Absent when not provided.
          example: Vancouver
        postalCode:
          type: string
          description: Optional postal code. Absent when not provided.
          example: V6B 1A1
    ApipaymentmanagementDeliveryZone:
      type: object
      description: A delivery zone as returned by the payment data service.
      required:
        - id
        - name
      properties:
        id:
          type: string
          description: Unique identifier of the delivery zone.
          example: zone-yyz
        name:
          type: string
          description: Human-readable name of the delivery zone.
          example: Greater Toronto Area
    ApipaymentmanagementDeliveryZoneRestriction:
      type: object
      description: Restricts or permits coupon usage to a defined set of delivery zone identifiers.
      required:
        - zoneIds
        - permissionType
      properties:
        zoneIds:
          type: array
          description: Set of unique delivery zone identifiers subject to this restriction.
          items:
            type: string
          example:
            - zone-yyz
            - zone-yyc
        permissionType:
          description: |-
            Determines whether the listed zones are allowed (ALLOWED), forbidden (FORBIDDEN), or unrestricted
            (NONE).
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPermissionType'
    ApipaymentmanagementDocument:
      type: object
      description: |-
        Identity verification document (e.g., passport, driver's licence) as provided in a Stripe individual
        verification object.
      properties:
        back:
          type: string
          description: Optional Stripe file ID for the back of the document. Absent when not provided.
          example: file_abc123
        front:
          type: string
          description: Optional Stripe file ID for the front of the document. Absent when not provided.
          example: file_xyz789
        details_code:
          type: string
          description: |-
            Optional Stripe code describing any issue with the document (e.g., document_corrupt). Absent when
            the document is valid.
          example: document_expired
    ApipaymentmanagementErrorResponse:
      type: object
      description: Standard error response body returned by the API.
      properties:
        status:
          type: integer
          description: HTTP status code of the error.
          example: 401
        message:
          type: string
          description: Human-readable description of the error.
          example: Unauthorised
    ApipaymentmanagementIndividual:
      type: object
      description: |-
        Individual representative data for a Stripe connected account, including their identity requirements
        and verification status.
      required:
        - account
        - requirements
        - verification
      properties:
        account:
          type: string
          description: Stripe account identifier associated with this individual.
          example: acct_abc123
        requirements:
          description: Requirements information for this individual.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRequirements'
        verification:
          description: Identity verification status for this individual.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementVerification'
    ApipaymentmanagementMetadata:
      type: object
      description: |-
        Optional supplementary metadata attached to a payment request, used for fraud analysis and browser
        profiling.
      properties:
        browserInformation:
          description: Optional browser environment details for 3DS fraud assessment.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementBrowserInformation'
        customerInfo:
          description: Optional customer contact details to supplement fraud analysis.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCustomerInformation'
        purchasedItems:
          type: string
          description: Optional comma-separated description of the items being purchased. Absent when not provided.
          example: Delivery from The Maple Grill
    ApipaymentmanagementModifiedUser:
      type: object
      description: Information about the Admin user who last created or modified the coupon.
      required:
        - id
        - name
        - type
      properties:
        id:
          type: string
          description: Unique identifier of the Admin user.
          example: admin-abc123
        name:
          type: string
          description: Display name of the Admin user.
          example: Jane Smith
        type:
          description: Classification of the user who performed the last modification.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementUserType'
    ApipaymentmanagementNotificationRequestItemDetails:
      type: object
      description: |-
        Details of a single Adyen notification request item nested inside an AdyenNotificationRequestItem
        wrapper.
      required:
        - amount
        - pspReference
        - eventCode
        - eventDate
        - merchantAccountCode
        - operations
        - merchantReference
        - success
      properties:
        additionalData:
          type: object
          description: |-
            Optional map of additional data key-value pairs provided by Adyen. Absent when not included in the
            notification.
          additionalProperties:
            type: string
        amount:
          description: Amount associated with the notification event.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementStandardNotificationAmount'
        pspReference:
          type: string
          description: Adyen Payment Service Provider (PSP) reference for the payment.
          example: '8535244646717513'
        eventCode:
          type: string
          description: |-
            Adyen event code indicating the type of event (e.g., AUTHORISATION, CHARGEBACK,
            NOTIFICATION_OF_FRAUD).
          example: AUTHORISATION
        eventDate:
          type: string
          description: ISO 8601 timestamp of when the event occurred.
          example: 2024-01-15T14:32:00.000+0200
        merchantAccountCode:
          type: string
          description: Adyen merchant account code associated with the notification.
          example: SkipTheDishesCA
        operations:
          type: array
          description: List of operations available for this payment event.
          items:
            type: string
          example:
            - CANCEL
            - CAPTURE
            - REFUND
        merchantReference:
          type: string
          description: Merchant-assigned reference for the payment.
          example: order-abc123
        originalReference:
          type: string
          description: |-
            Optional PSP reference of the original payment, present for modifications (e.g., refunds). Absent
            for initial authorisations.
          example: '8535244646717500'
        paymentMethod:
          type: string
          description: Optional payment method used (e.g., visa, mc). Absent when not included.
          example: visa
        reason:
          type: string
          description: Optional reason for the event (e.g., chargeback reason). Absent when not included.
          example: fraud
        success:
          type: string
          description: String boolean indicating whether the event represents a successful outcome ("true" or "false").
          example: 'true'
    ApipaymentmanagementOrderPaymentStatus:
      type: object
      description: Current payment and acceptance status of an order.
      required:
        - status
        - acceptedStatus
      properties:
        status:
          description: Current payment processing status of the order.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPaymentStatus'
        acceptedStatus:
          description: Whether the order has been accepted by the restaurant.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementAcceptedStatus'
    ApipaymentmanagementOrderType:
      type: string
      description: Order fulfilment method that the coupon is restricted to, if any.
      enum:
        - DELIVERY
        - PICKUP
      example: DELIVERY
    ApipaymentmanagementPaymentInformationV1:
      type: object
      description: |-
        Payment details for placing a V1 order payment. The method field determines which additional fields
        are applicable.
      required:
        - method
      properties:
        method:
          description: Payment method used for this order.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPaymentType'
        creditCardToken:
          description: |-
            Optional tokenized credit card data. Present when method is CREDIT_CARD, GOOGLE_PAY, or APPLE_PAY.
            Absent otherwise.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCreditCardToken'
        cardType:
          type: string
          description: Optional card network name (e.g., VISA, MASTERCARD). Absent when not applicable.
          example: VISA
        saveCard:
          type: boolean
          description: |-
            Optional flag to save the card to the customer's account for future use. Absent when not set;
            defaults to not saving.
          example: false
        address:
          description: Optional billing address for credit card verification. Absent when not provided.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementAddress'
        cardId:
          type: string
          description: Optional saved card identifier. Present when paying with a previously saved card. Absent otherwise.
          example: card-abc123
        restaurantCleanUrl:
          type: string
          description: Optional restaurant clean URL slug. Absent when not provided.
          example: the-maple-grill
        corporateNumber:
          type: string
          description: Optional corporate account number for corporate payment method. Absent when not applicable.
        deviceId:
          type: string
          description: Optional device identifier used for fraud analysis. Absent when not provided.
          example: device-xyz
        metadata:
          description: Optional payment metadata for 3DS and fraud analysis. Absent when not provided.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementMetadata'
        corporateCostCode:
          type: string
          description: Optional corporate cost code for expense tracking. Absent when not applicable.
        statementSuffix:
          type: string
          description: 'Optional custom suffix appended to the merchant name on the customer''s bank or card statement. Maps to Stripe''s `statement_descriptor_suffix`. The value must not contain any of the following special characters: <, >, \, '', ", *. Validation is silent server-side, so no pattern is enforced here.'
          example: CIBC
    ApipaymentmanagementPaymentInformationV3:
      description: Polymorphic V3 payment information. The concrete subtype is determined by the method field.
      oneOf:
        - $ref: '#/components/schemas/ApipaymentmanagementCreditCardPaymentInformation'
        - $ref: '#/components/schemas/ApipaymentmanagementSavedCreditCardPaymentInformation'
        - $ref: '#/components/schemas/ApipaymentmanagementCashPaymentInformation'
        - $ref: '#/components/schemas/ApipaymentmanagementCorporatePaymentInformation'
        - $ref: '#/components/schemas/ApipaymentmanagementSkipCreditPaymentInformation'
        - $ref: '#/components/schemas/ApipaymentmanagementTokenizedApplePayPaymentInformation'
        - $ref: '#/components/schemas/ApipaymentmanagementTokenizedGooglePayPaymentInformation'
      discriminator:
        propertyName: method
        mapping:
          CREDIT_CARD: '#/components/schemas/ApipaymentmanagementCreditCardPaymentInformation'
          CORPORATE: '#/components/schemas/ApipaymentmanagementCorporatePaymentInformation'
          CASH: '#/components/schemas/ApipaymentmanagementCashPaymentInformation'
          APPLE_PAY: '#/components/schemas/ApipaymentmanagementTokenizedApplePayPaymentInformation'
          GOOGLE_PAY: '#/components/schemas/ApipaymentmanagementTokenizedGooglePayPaymentInformation'
          SKIP_CREDIT: '#/components/schemas/ApipaymentmanagementSkipCreditPaymentInformation'
    ApipaymentmanagementPaymentProviderType:
      type: string
      description: Payment provider handling Apple Pay or Google Pay token processing.
      enum:
        - STRIPE
        - ADYEN
      example: STRIPE
    ApipaymentmanagementPaymentRestriction:
      type: object
      description: |-
        Restricts coupon redemption to one or more payment method types and, optionally, to a specific card
        network.
      required:
        - paymentTypes
      properties:
        paymentTypes:
          type: array
          description: Set of payment method types eligible for coupon redemption.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementPaymentType'
          example:
            - CREDIT_CARD
        cardNetwork:
          description: Optional card network restriction. Absent when no network-level restriction applies.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCardNetwork'
    ApipaymentmanagementPaymentStatus:
      type: string
      description: Represents the current state of a payment transaction.
      enum:
        - PENDING
        - COMPLETED
        - FAILED
        - AUTHORIZED
        - CANCELLED
      example: PENDING
    ApipaymentmanagementPaymentType:
      type: string
      description: Payment method type that the coupon is restricted to, if any.
      enum:
        - CASH
        - CREDIT_CARD
        - CORPORATE
        - GOOGLE_PAY
        - APPLE_PAY
        - PREPAID
        - SKIP_CREDIT
        - SKIP_PAID
      example: CREDIT_CARD
    ApipaymentmanagementPayoutAccountUpdatedNotification:
      type: object
      description: |-
        Stripe account.updated webhook event payload, indicating that a connected account's details have
        changed.
      required:
        - data
      properties:
        data:
          type: object
          description: Wrapper object containing the updated account data.
          required:
            - object
          properties:
            object:
              description: The updated Stripe connected account object.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementPayoutAccountUpdatedObject'
    ApipaymentmanagementPayoutAccountUpdatedObject:
      type: object
      description: Stripe connected account object included in an account.updated webhook event payload.
      required:
        - id
      properties:
        id:
          type: string
          description: Unique Stripe account identifier.
          example: acct_abc123
        business_type:
          type: string
          description: Optional Stripe business type of the account (e.g., individual, company). Absent when not provided.
          example: individual
        individual:
          description: |-
            Optional individual representative details. Present for individual business type accounts. Absent
            otherwise.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementIndividual'
        requirements:
          description: |
            Optional account-level requirements status. Absent when not included by Stripe.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRequirements'
    ApipaymentmanagementPayoutObject:
      type: object
      description: Stripe payout object included in a payout.updated or payout.paid / payout.failed webhook event.
      required:
        - id
        - status
      properties:
        id:
          type: string
          description: Unique Stripe payout identifier.
          example: po_abc123
        failure_code:
          type: string
          description: |-
            Optional Stripe failure code if the payout failed (e.g., account_closed). Absent when the payout did
            not fail.
          example: account_closed
        failure_message:
          type: string
          description: Optional human-readable failure message. Absent when not applicable.
          example: The bank account has been closed.
        status:
          description: Current status of the payout.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPayoutStatus'
    ApipaymentmanagementPayoutStatus:
      type: string
      description: Current status of a Stripe payout.
      enum:
        - PAID
        - PENDING
        - IN_TRANSIT
        - CANCELED
        - FAILED
      example: PAID
    ApipaymentmanagementPayoutUpdatedNotification:
      type: object
      description: |-
        Stripe payout webhook event payload (e.g., payout.paid, payout.failed) indicating a change in payout
        status for a connected account.
      required:
        - account
        - data
      properties:
        account:
          type: string
          description: Stripe connected account identifier associated with the payout event.
          example: acct_abc123
        data:
          type: object
          description: Wrapper object containing the payout event data.
          required:
            - object
          properties:
            object:
              description: The Stripe payout object for this event.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementPayoutObject'
    ApipaymentmanagementPendingCoupon:
      type: object
      description: |-
        Full details of a pending coupon awaiting approval. Extends the full Coupon schema with requestType
        and newUniqueCodes.
      required:
        - code
        - requestType
        - description
        - amount
        - type
        - enabled
        - stackable
      properties:
        code:
          type: string
          description: Base coupon code.
          example: SUMMER25
        requestType:
          description: Whether this is a new coupon creation or an update request.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRequestType'
        newUniqueCodes:
          type: integer
          description: |-
            Optional number of new unique voucher codes to generate as part of this pending request. Absent when
            not applicable.
          example: 100
        description:
          type: string
          description: Human-readable description of the coupon.
          example: Summer 2024 promotional discount
        amount:
          type: integer
          description: Discount amount in cents (FIXED) or percentage (PERCENT).
          example: 500
        maxAmount:
          type: integer
          description: Optional cap on the discount in cents. Absent when not set.
          example: 1000
        type:
          $ref: '#/components/schemas/ApipaymentmanagementCouponType'
        externalDiscountId:
          type: string
          description: Optional external discount system identifier. Absent when not set.
        discountDurationMonths:
          type: integer
          description: Optional discount duration in months. Absent when not applicable.
        enabled:
          type: boolean
          description: Whether the coupon will be active after approval.
          example: true
        stackable:
          type: boolean
          description: Whether the coupon may be combined with others.
          example: false
        maxNumUses:
          type: integer
          description: Optional maximum total redemptions. Absent when unlimited.
        dateTimeRestriction:
          description: Optional temporal restriction. Absent when not set.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDateTimeRestriction'
        orderType:
          description: Optional order type restriction. Absent when not set.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementOrderType'
        paymentRestriction:
          description: Optional payment method restriction. Absent when not set.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPaymentRestriction'
        minOrderAmount:
          type: integer
          description: Optional minimum order amount in cents. Absent when not set.
        restaurants:
          description: Optional restaurant restriction. Absent when not set.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRestaurantRestriction'
        restaurantGroupRestriction:
          description: Optional restaurant group restriction. Absent when not set.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRestaurantGroupRestriction'
        deliveryZonesRestriction:
          description: Optional delivery zone restriction. Absent when not set.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDeliveryZoneRestriction'
        customerRestriction:
          description: Optional customer lifecycle segment restriction. Absent when not set.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCustomerRestriction'
        firstOrderOnly:
          type: boolean
          description: Optional first-order-only flag. Absent when not set.
        category:
          description: Optional business category. Absent when not set.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCouponCategory'
        modifiedUser:
          description: Optional last modified user. Absent when not tracked.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementModifiedUser'
        maxUsesPerCustomer:
          type: integer
          description: Optional per-customer redemption limit. Absent when unlimited.
        isMobileOnly:
          type: boolean
          description: Optional mobile-only flag. Absent when not set.
        provider:
          type: string
          description: Optional provider name. Absent when not set.
        programName:
          type: string
          description: Optional programme name. Absent when not set.
        distributionChannels:
          type: string
          description: Optional distribution channels. Absent when not set.
        projectedAudienceSize:
          type: integer
          description: Optional projected audience size. Absent when not set.
        projectedOrderVolume:
          type: integer
          description: Optional projected order volume. Absent when not set.
        redemptionCap:
          type: integer
          description: Optional hard redemption cap. Absent when not set.
        projectedSpendCents:
          type: integer
          description: Optional projected spend in cents. Absent when not set.
    ApipaymentmanagementPendingCouponList:
      type: object
      description: List of pending coupon summaries returned by a search.
      required:
        - coupons
      properties:
        coupons:
          type: array
          description: List of pending coupon summaries matching the search criteria.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementPendingCouponSearchSummary'
    ApipaymentmanagementPendingCouponSearchSummary:
      type: object
      description: Lightweight summary of a pending coupon in search results.
      required:
        - code
        - requestType
        - description
        - type
        - category
        - enabled
        - stackable
        - newUniqueCoupons
      properties:
        code:
          type: string
          description: Base coupon code.
          example: SUMMER25
        requestType:
          description: Whether this is a CREATE or UPDATE request.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRequestType'
        description:
          type: string
          description: Human-readable description of the coupon.
          example: Summer promotional discount
        type:
          $ref: '#/components/schemas/ApipaymentmanagementCouponType'
        category:
          description: Business category of the coupon.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCategory'
        enabled:
          type: boolean
          description: Whether the coupon will be active after approval.
          example: true
        stackable:
          type: boolean
          description: Whether the coupon may be combined with others.
          example: false
        maxNumUses:
          type: integer
          description: Optional maximum total redemptions. Absent when unlimited.
          nullable: true
        newUniqueCoupons:
          type: integer
          description: Number of new unique voucher codes requested. 0 when not applicable.
          example: 0
    ApipaymentmanagementPendingCouponWithRestaurant:
      type: object
      description: Enriched pending coupon response including hydrated restaurant and restaurant group names.
      required:
        - coupon
        - restaurants
        - restaurantGroups
      properties:
        coupon:
          description: Full pending coupon details.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPendingCoupon'
        restaurants:
          type: array
          description: |-
            List of restaurants referenced by the coupon's restaurants restriction. Empty when no restaurant
            restriction is set.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementRestaurant'
        restaurantGroups:
          type: array
          description: List of restaurant groups referenced by the coupon's restaurantGroupRestriction. Empty when not set.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementRestaurantGroupResponse'
    ApipaymentmanagementPermissionType:
      type: string
      description: |-
        Controls whether the associated entity identifiers represent an allowlist (ALLOWED), a blocklist
        (FORBIDDEN), or carry no restriction (NONE).
      enum:
        - ALLOWED
        - FORBIDDEN
        - NONE
      example: ALLOWED
    ApipaymentmanagementRequestType:
      type: string
      description: |-
        Type of the pending coupon request — whether it is a new coupon creation or an update to an existing
        coupon.
      enum:
        - CREATE
        - UPDATE
      example: CREATE
    ApipaymentmanagementRequirements:
      type: object
      description: |-
        Stripe account requirements status information, detailing which pieces of information are currently
        needed, eventually needed, or overdue.
      properties:
        current_deadline:
          type: string
          description: |-
            Optional ISO 8601 deadline before which the currently due requirements must be collected. Absent
            when no deadline is set.
          example: '2024-06-01T00:00:00Z'
        currently_due:
          type: array
          description: List of requirement field names that must be collected immediately.
          items:
            type: string
          example:
            - individual.id_number
            - individual.verification.document
        disabled_reason:
          type: string
          description: Optional reason why the account is currently disabled. Absent when the account is enabled.
          example: requirements.past_due
        errors:
          type: array
          description: List of current requirement errors for this account.
          items:
            $ref: '#/components/schemas/ApipaymentmanagementRequirementsError'
        eventually_due:
          type: array
          description: Requirement fields that will eventually need to be collected.
          items:
            type: string
        past_due:
          type: array
          description: Overdue requirement fields that have not yet been collected.
          items:
            type: string
        pending_verification:
          type: array
          description: Requirement fields currently being verified by Stripe.
          items:
            type: string
    ApipaymentmanagementRequirementsError:
      type: object
      description: |-
        A single error entry within a Stripe account's requirements section, indicating what information is
        needed and why.
      properties:
        code:
          type: string
          description: |-
            Optional Stripe error code identifying the type of requirement error. Absent when not provided by
            Stripe.
          example: verification_document_front_missing
        reason:
          type: string
          description: Optional human-readable reason why the requirement is failing. Absent when not provided.
          example: The front of the identity document is missing.
        requirement:
          type: string
          description: Optional name of the requirement field that has the error. Absent when not provided.
          example: individual.verification.document
        suggestion:
          type: string
          description: Optional suggestion for resolving the error. Absent when not provided.
          example: Provide a government-issued photo ID.
    ApipaymentmanagementRestaurant:
      type: object
      description: Summary of a restaurant associated with the coupon restriction.
      required:
        - id
        - name
      properties:
        id:
          type: string
          description: Unique identifier of the restaurant.
          example: rest-001
        name:
          type: string
          description: Display name of the restaurant.
          example: The Maple Grill
    ApipaymentmanagementRestaurantGroupResponse:
      type: object
      description: Summary of a restaurant group associated with the coupon restriction.
      required:
        - id
        - name
      properties:
        id:
          type: string
          description: Unique identifier of the restaurant group.
          example: group-001
        name:
          type: string
          description: Display name of the restaurant group.
          example: Downtown Toronto Chains
    ApipaymentmanagementRestaurantGroupRestriction:
      type: object
      description: Restricts or permits coupon usage to a defined set of restaurant group identifiers.
      required:
        - restaurantGroupIds
        - permissionType
      properties:
        restaurantGroupIds:
          type: array
          description: Set of unique restaurant group identifiers subject to this restriction.
          items:
            type: string
          example:
            - group-001
            - group-002
        permissionType:
          description: |-
            Determines whether the listed groups are allowed (ALLOWED), forbidden (FORBIDDEN), or unrestricted
            (NONE).
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPermissionType'
    ApipaymentmanagementRestaurantRestriction:
      type: object
      description: Restricts or permits coupon usage to a defined set of restaurant identifiers.
      required:
        - restaurantIds
        - permissionType
      properties:
        restaurantIds:
          type: array
          description: Set of unique restaurant identifiers subject to this restriction.
          items:
            type: string
          example:
            - rest-001
            - rest-002
        permissionType:
          description: |-
            Determines whether the listed restaurants are allowed (ALLOWED), forbidden (FORBIDDEN), or
            unrestricted (NONE).
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPermissionType'
    ApipaymentmanagementRestaurantSearch:
      type: object
      description: Request body for finding restaurants by a set of identifiers.
      required:
        - restaurantIds
      properties:
        restaurantIds:
          type: array
          description: Set of unique restaurant identifiers to look up.
          items:
            type: string
          example:
            - rest-001
            - rest-002
            - rest-003
    ApipaymentmanagementSaveTokenizedCreditCardRequest:
      type: object
      description: Request body for saving a tokenized credit card to a customer's account.
      required:
        - token
        - maskedCardNumber
        - tokenizerReferenceId
      properties:
        token:
          type: string
          description: Tokenization token representing the credit card, as issued by the payment tokenizer service.
          example: tok_abc123
        maskedCardNumber:
          type: string
          description: Masked representation of the card number for display purposes (e.g., last four digits).
          example: '************1234'
        tokenizerReferenceId:
          type: string
          description: |-
            Reference identifier from the tokenizer service used to correlate the token with the tokenization
            session.
          example: ref-xyz789
    ApipaymentmanagementSavedCreditCardPaymentInformation:
      description: |-
        Payment information for a previously saved credit card payment. Used when method is CREDIT_CARD
        combined with a cardId.
      allOf:
        - $ref: '#/components/schemas/ApipaymentmanagementBasePaymentInformation'
        - type: object
          required:
            - cardId
          properties:
            cardId:
              type: string
              description: Identifier of the previously saved credit card to charge.
              example: card-abc123
            address:
              description: Optional billing address override. Absent when not provided.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementAddress'
    ApipaymentmanagementSkipCreditPaymentInformation:
      description: Payment information for a Skip Pay credit payment. Used when method is SKIP_CREDIT.
      allOf:
        - $ref: '#/components/schemas/ApipaymentmanagementBasePaymentInformation'
    ApipaymentmanagementSkipPayAllowance:
      type: object
      description: The current Skip Pay credit allowance available to the customer.
      required:
        - allowanceCents
      properties:
        allowanceCents:
          type: integer
          description: The available Skip Pay credit amount, expressed in cents (e.g., 500 = $5.00 CAD).
          example: 500
    ApipaymentmanagementStandardNotificationAmount:
      type: object
      description: Amount associated with an Adyen notification event.
      required:
        - value
        - currency
      properties:
        value:
          type: integer
          description: Amount value in the smallest currency unit (e.g., cents for CAD).
          example: 1999
        currency:
          type: string
          description: ISO 4217 currency code of the amount.
          example: CAD
    ApipaymentmanagementStripeChargebackEvent:
      type: object
      description: Stripe charge.dispute.created webhook event payload.
      required:
        - data
      properties:
        data:
          type: object
          description: Wrapper object containing the dispute data.
          required:
            - object
          properties:
            object:
              description: The Stripe dispute (chargeback) object.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementStripeChargebackObject'
    ApipaymentmanagementStripeChargebackObject:
      type: object
      description: Stripe dispute (chargeback) object as included in a chargeback webhook event.
      required:
        - id
        - amount
        - charge
        - created
        - currency
        - reason
      properties:
        id:
          type: string
          description: Unique Stripe identifier of the dispute.
          example: dp_abc123
        amount:
          type: integer
          description: Disputed amount in the currency's smallest unit (e.g., cents).
          example: 1500
        charge:
          type: string
          description: Stripe charge identifier associated with this dispute.
          example: ch_abc123
        created:
          type: integer
          format: int64
          description: Unix epoch timestamp (in seconds) when the dispute was created.
          example: 1700000000
        currency:
          type: string
          description: Three-letter ISO 4217 currency code of the disputed amount.
          example: cad
        payment_intent:
          type: string
          description: |-
            Optional Stripe PaymentIntent identifier linked to this dispute. Absent when not associated with a
            PaymentIntent.
          example: pi_abc123
        reason:
          type: string
          description: |-
            Reason for the dispute as reported by the cardholder's bank (e.g., fraudulent, duplicate,
            product_not_received).
          example: fraudulent
    ApipaymentmanagementStripeEarlyFraudEvent:
      type: object
      description: Stripe radar.early_fraud_warning.created webhook event payload.
      required:
        - data
      properties:
        data:
          type: object
          description: Wrapper object containing the early fraud warning data.
          required:
            - object
          properties:
            object:
              description: The Stripe early fraud warning object.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementStripeEarlyFraudObject'
    ApipaymentmanagementStripeEarlyFraudObject:
      type: object
      description: Stripe radar.early_fraud_warning object as included in an early fraud webhook event.
      required:
        - id
        - charge
        - created
        - fraud_type
        - actionable
      properties:
        id:
          type: string
          description: Unique Stripe identifier of the early fraud warning.
          example: issfr_abc123
        charge:
          type: string
          description: Stripe charge identifier associated with the fraud warning.
          example: ch_abc123
        created:
          type: integer
          format: int64
          description: Unix epoch timestamp (in seconds) when the warning was created.
          example: 1700000000
        fraud_type:
          type: string
          description: Stripe fraud type code (e.g., card_never_received, fraudulent_card_application).
          example: card_never_received
        payment_intent:
          type: string
          description: |-
            Optional Stripe PaymentIntent identifier linked to this fraud warning. Absent when not associated
            with a PaymentIntent.
          example: pi_abc123
        actionable:
          type: boolean
          description: Whether the fraud warning is actionable (i.e., a dispute can still be prevented).
          example: true
    ApipaymentmanagementTimeRange:
      type: object
      description: |-
        A bounded time-of-day range represented as a Guava Range<String> object. lowerEndpoint and
        upperEndpoint are 24-hour time strings (e.g., "09:00").
      properties:
        lowerEndpoint:
          type: string
          description: Start of the active time window in 24-hour format (HH:mm).
          example: '09:00'
        upperEndpoint:
          type: string
          description: End of the active time window in 24-hour format (HH:mm).
          example: '22:00'
        lowerBoundType:
          type: string
          description: Indicates whether the lower bound is inclusive (CLOSED) or exclusive (OPEN).
          enum:
            - CLOSED
            - OPEN
          example: CLOSED
        upperBoundType:
          type: string
          description: Indicates whether the upper bound is inclusive (CLOSED) or exclusive (OPEN).
          enum:
            - CLOSED
            - OPEN
          example: OPEN
    ApipaymentmanagementTokenizedApplePayPaymentInformation:
      description: |-
        Payment information for an Apple Pay payment using a tokenized payment token. Used when method is
        APPLE_PAY.
      allOf:
        - $ref: '#/components/schemas/ApipaymentmanagementBasePaymentInformation'
        - type: object
          required:
            - paymentTokenData
            - paymentTokenType
          properties:
            paymentTokenData:
              type: string
              description: Base64-encoded Apple Pay payment token data as returned by the Apple Pay JavaScript API.
              example: eyJwYXltZW50...
            paymentTokenType:
              description: Payment provider designated to process this Apple Pay token.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementPaymentProviderType'
            paymentMethodNetwork:
              type: string
              description: Optional card network of the underlying card (e.g., Visa, MasterCard). Absent when not available.
              example: Visa
            paymentMethodType:
              description: Optional funding type of the underlying card. Absent when not available.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementApplePayPaymentMethodType'
    ApipaymentmanagementTokenizedGooglePayPaymentInformation:
      description: |-
        Payment information for a Google Pay payment using a tokenized payment token. Used when method is
        GOOGLE_PAY.
      allOf:
        - $ref: '#/components/schemas/ApipaymentmanagementBasePaymentInformation'
        - type: object
          required:
            - googlePayPaymentToken
            - paymentTokenType
          properties:
            googlePayPaymentToken:
              type: string
              description: Google Pay payment token as returned by the Google Pay JavaScript API.
              example: eyJwYXltZW...
            paymentTokenType:
              description: Payment provider designated to process this Google Pay token.
              allOf:
                - $ref: '#/components/schemas/ApipaymentmanagementPaymentProviderType'
            paymentMethodNetwork:
              type: string
              description: Optional card network of the underlying card. Absent when not available.
              example: Mastercard
            accountVerified:
              type: boolean
              description: Optional flag indicating whether the Google Pay account has been verified. Absent when not provided.
              example: true
            cardHolderAuthenticated:
              type: boolean
              description: |-
                Optional flag indicating whether the cardholder completed additional authentication. Absent when not
                provided.
              example: false
    ApipaymentmanagementUniqueCoupon:
      type: object
      description: Details of a single unique (single-use) voucher code derived from a base coupon.
      required:
        - uniqueVoucherCode
        - active
        - numberOfUses
      properties:
        uniqueVoucherCode:
          type: string
          description: The unique voucher code string.
          example: SUMMER25-A3F9K
        maxUse:
          type: integer
          description: |-
            Optional maximum number of times this specific unique voucher may be redeemed. Absent when there is
            no per-code use limit.
          example: 1
        active:
          type: boolean
          description: Indicates whether this unique voucher is currently active.
          example: true
        numberOfUses:
          type: integer
          description: Number of times this unique voucher has been redeemed.
          example: 0
    ApipaymentmanagementUpdateCoupon:
      type: object
      description: |-
        Payload for updating an existing coupon identified by the couponCode path parameter. All required
        fields must be supplied with their intended final values (full-replacement semantics for required
        fields).
      required:
        - description
        - amount
        - type
        - enabled
        - stackable
      properties:
        description:
          type: string
          description: Human-readable description of the coupon's purpose or campaign.
          example: Updated Fall 2024 promotional discount
        amount:
          type: integer
          description: |-
            Discount amount. Interpreted as a percentage (0–100) when type is PERCENT, or as cents (CAD) when
            type is FIXED.
          example: 750
        maxAmount:
          type: integer
          description: |-
            Optional upper cap (in cents, CAD) on the discount when type is PERCENT. Omit to remove or leave
            unset.
          example: 1500
        type:
          description: Discount calculation strategy for this coupon.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCouponType'
        category:
          description: Optional business classification. Omit to leave uncategorised.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCouponCategory'
        externalDiscountId:
          type: string
          description: Optional identifier linking this coupon to an external discount system.
          example: EXT-DISCOUNT-42
        discountDurationMonths:
          type: integer
          description: |-
            Optional number of months for which the discount applies to recurring orders. Omit when not
            applicable.
          example: 3
        enabled:
          type: boolean
          description: Whether the coupon should be active after the update.
          example: true
        stackable:
          type: boolean
          description: Whether this coupon may be combined with other coupons.
          example: false
        maxNumUses:
          type: integer
          description: Optional maximum total redemption count. Omit for unlimited usage.
          example: 10000
        maxUsesPerCustomer:
          type: integer
          description: Optional per-customer redemption limit. Omit for unlimited per-customer usage.
          example: 1
        dateTimeRestriction:
          description: |-
            Optional date and time window during which the coupon is redeemable. Omit when no temporal
            restriction is required.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDateTimeRestriction'
        orderType:
          description: Optional order fulfilment type restriction. Omit to allow all types.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementOrderType'
        paymentRestriction:
          description: Optional payment method restriction. Omit to allow all methods.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementPaymentRestriction'
        minOrderAmount:
          type: integer
          description: Optional minimum order subtotal (in cents, CAD). Omit when no minimum is required.
          example: 2000
        restaurants:
          description: Optional restaurant-level restriction. Omit when the coupon applies to all restaurants.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRestaurantRestriction'
        restaurantGroupRestriction:
          description: Optional restaurant group restriction. Omit when applicable to all groups.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementRestaurantGroupRestriction'
        deliveryZonesRestriction:
          description: Optional delivery zone restriction. Omit when applicable to all zones.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDeliveryZoneRestriction'
        customerRestriction:
          description: Optional restriction to one or more customer lifecycle segments. Omit when no customer segment restriction is required.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementCustomerRestriction'
        firstOrderOnly:
          type: boolean
          description: Optional flag to restrict redemption to a customer's first order. Omit when not applicable.
          example: false
        isMobileOnly:
          type: boolean
          description: |-
            Optional flag to restrict redemption to the mobile application. Omit when applicable to all
            platforms.
          example: false
        provider:
          type: string
          description: Optional name of the external partner sponsoring this coupon. Omit when not applicable.
          example: Visa Canada
        numberOfNewUniqueCodes:
          type: integer
          description: |-
            Optional number of additional unique voucher codes to generate and append to the existing batch.
            Omit when no new codes are required.
          example: 100
        programName:
          type: string
          description: Optional name of the marketing programme. Omit when not associated with a named programme.
          example: Fall Referral Programme
        distributionChannels:
          type: string
          description: Optional comma-separated distribution channels. Omit when not tracked.
          example: email,push
        projectedAudienceSize:
          type: integer
          description: Optional estimated number of targeted customers. Omit when not required.
          example: 50000
        projectedOrderVolume:
          type: integer
          description: Optional estimated number of orders expected to redeem this coupon. Omit when not required.
          example: 5000
        redemptionCap:
          type: integer
          description: Optional hard redemption limit for budgetary control. Omit when not needed.
          example: 2000
        projectedSpendCents:
          type: integer
          description: Optional projected total promotional spend in cents (CAD). Omit when not required.
          example: 1000000
    ApipaymentmanagementUploadDocumentResponse:
      type: object
      description: Response returned after successfully uploading a payout document.
      required:
        - id
      properties:
        id:
          type: string
          description: Unique identifier of the uploaded document as assigned by the payout service.
          example: doc-abc123
    ApipaymentmanagementUserType:
      type: string
      description: Classification of the platform user who last modified the coupon.
      enum:
        - CUSTOMER
        - RESTAURANT
        - COURIER
        - ADMIN
        - UNKNOWN
        - SYSTEM
      example: ADMIN
    ApipaymentmanagementVerification:
      type: object
      description: Identity verification details for an individual on a Stripe connected account.
      required:
        - document
        - status
      properties:
        document:
          description: Primary identity verification document.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementDocument'
        additional_document:
          description: Optional secondary verification document. Absent when not provided.
          allOf:
            - $ref: '#/components/schemas/ApipaymentmanagementAdditionalDocument'
        details:
          type: string
          description: Optional human-readable description of the verification status. Absent when not provided.
          example: The document was valid.
        details_code:
          type: string
          description: |-
            Optional Stripe code indicating the verification outcome (e.g., verified, document_corrupt). Absent
            when not provided.
          example: verified
        status:
          type: string
          description: Current verification status (e.g., verified, unverified, pending).
          example: verified
    ApipaymentssecureAddress:
      type: object
      properties:
        postalCode:
          type: string
          description: The postal code
          example: R3C 1A5
      required:
        - postalCode
    ApipaymentssecureCard:
      type: object
      properties:
        number:
          type: string
          description: The credit card number
          example: '4242424242424242'
        expiryMonth:
          type: string
          description: The credit card expiry month
          example: '12'
        expiryYear:
          type: string
          description: The credit card expiry year
          example: '2028'
        cvv:
          type: string
          description: The credit card cvv
          example: '123'
        holderName:
          type: string
          description: The credit card holder name
          example: John Doe
      required:
        - number
        - expiryMonth
        - expiryYear
        - cvv
    ApipaymentssecureTokenRequest:
      type: object
      properties:
        card:
          $ref: '#/components/schemas/ApipaymentssecureCard'
        payerId:
          type: string
          description: the unique payer id
          example: '123456789987655'
        origin:
          type: string
          description: the origin of the request
          enum:
            - CUSTOMER
            - COURIER
            - PAYOUT
        billingAddress:
          $ref: '#/components/schemas/ApipaymentssecureAddress'
        permanent:
          type: boolean
          description: whether the token is permanent or not
          example: true
        recurring:
          type: boolean
          description: whether it's a recurring payment
          example: false
        preferredPaymentProvider:
          type: string
          description: the preferred payment provider
          enum:
            - STRIPE
            - ADYEN
          example: STRIPE
        currency:
          type: string
          description: the currency of the token
          enum:
            - CAD
            - USD
            - AUD
            - GBP
            - EUR
            - NZD
            - BGN
            - DKK
            - NOK
            - PLN
            - CHF
            - ILS
          example: CAD
        isTelephoneOrder:
          type: boolean
          description: whether it's a telephone order or not
          example: false
      required:
        - card
        - payerId
        - origin
        - permanent
    ApipaymentssecureTokenResponse:
      type: object
      properties:
        token:
          type: string
          description: The token to be used for subsequent payment requests
          example: pm_xyz1234567
        maskedCardNumber:
          type: string
          description: The masked credit card number
          example: 424242******4242
        binNumber:
          type: string
          description: The first 6 digits of the credit card number
          example: '42424242'
        tokenizerReferenceId:
          type: string
          description: The customer id for the from the payment provider
          example: cus_xyz1234567
        cardType:
          type: string
          description: The type of card
          enum:
            - CREDIT
            - DEBIT
            - PREPAID
            - UNKNOWN
          example: CREDIT
        country:
          type: string
          description: The country of the card issuer
          example: CA
        fingerprint:
          type: string
          description: Uniquely identifies this particular card number
          example: Xt5EWLLDS7FJjR1c
        paymentServiceProvider:
          type: string
          description: the payment service provider
          enum:
            - STRIPE
            - ADYEN
          example: STRIPE
        recurring:
          type: boolean
          description: whether it's a recurring payment
          example: false
      required:
        - token
        - maskedCardNumber
        - binNumber
        - recurring
    ApipaymentssecureTokenizationException:
      type: object
      properties:
        error:
          type: string
          default: TokenizationException
        message:
          type: string
          default: Something went wrong when tokenizing credit card information
    ApirestaurantorderfulfillmentActiveOrders:
      type: object
      properties:
        orders:
          type: array
          description: List of active orders
          items:
            type: object
            required:
              - visibleSince
              - id
              - orderNumber
              - status
              - type
              - isAsap
              - time
              - created
              - method
            properties:
              visibleSince:
                type: integer
                format: int64
                description: Timestamp when order became visible
                example: 1732723200000
              id:
                type: string
                description: Unique order identifier
                example: 550e8400-e29b-41d4-a716-446655440000
              delivery:
                type: object
                description: Delivery information (present only for delivery orders)
                required:
                  - id
                  - priorNumberOfStops
                  - status
                properties:
                  id:
                    type: string
                    description: Delivery identifier
                    example: 880b1733-15ce-74a7-d049-779988773333
                  priorNumberOfStops:
                    type: integer
                    format: int32
                    description: Number of stops before this delivery
                    example: 2
                  status:
                    type: string
                    description: Current delivery status
                    enum:
                      - manuallyAssigned
                      - unassigned
                      - assigned
                      - accepted
                      - acceptedQueued
                      - inTransitQueued
                      - inTransitRestaurant
                      - parkingRestaurant
                      - arrivedRestaurant
                      - collected
                      - inTransitCustomer
                      - parkingCustomer
                      - arrivedCustomer
                      - delivered
                      - cancelled
                      - rejected
                    example: assigned
                  assignedCourierName:
                    type: string
                    description: Full name of assigned courier (omitted when not assigned)
                    example: John Smith
                  assignedCourierFirstName:
                    type: string
                    description: First name of assigned courier (omitted when not assigned)
                    example: John
                  multiCollectDeliveryIds:
                    type: array
                    description: IDs of multi-collect deliveries (omitted when not applicable)
                    items:
                      type: string
                    example:
                      - 880b1733-15ce-74a7-d049-779988774444
                      - 880b1733-15ce-74a7-d049-779988775555
              orderNumber:
                type: integer
                format: int32
                description: Order number
                example: 1001
              status:
                type: string
                description: Order status
                enum:
                  - notAccepted
                  - inProgress
                  - collected
                  - completed
                  - cancelled
                example: inProgress
              type:
                type: string
                description: Order type
                enum:
                  - pickup
                  - delivery
                example: delivery
              isAsap:
                type: boolean
                description: Whether this is an ASAP order
                example: true
              time:
                type: integer
                format: int64
                description: Order time timestamp
                example: 1732723800000
              created:
                type: integer
                format: int64
                description: Creation timestamp
                example: 1732723200000
              method:
                type: string
                description: Order method
                enum:
                  - online
                  - callIn
                example: online
              posInjectionStatus:
                type: string
                description: POS injection status (omitted when not applicable)
                enum:
                  - pending
                  - processing
                  - successful
                  - failed
                  - unconfirmed
                  - cancelled
                example: successful
              acceptedTime:
                type: integer
                format: int64
                description: Timestamp when order was accepted (omitted when not yet accepted)
                example: 1732723500000
              customerOrderHistory:
                type: object
                description: Customer order history (omitted when not available)
                required:
                  - totalOrders
                  - deliveryOrders
                  - pickupOrders
                  - subtotal
                properties:
                  totalOrders:
                    type: integer
                    format: int64
                    description: Total number of orders
                    example: 25
                  deliveryOrders:
                    type: integer
                    format: int64
                    description: Number of delivery orders
                    example: 18
                  pickupOrders:
                    type: integer
                    format: int64
                    description: Number of pickup orders
                    example: 7
                  subtotal:
                    type: integer
                    format: int64
                    description: Total subtotal amount
                    example: 45000
              isSkipGoOrder:
                type: boolean
                description: Whether this is a Skip Go order (omitted when not applicable)
                example: false
              nonDelcoDeliveryOnItsWay:
                type: integer
                format: int64
                description: Non-Delco delivery on its way timestamp (omitted when not applicable)
                example: 1732724100000
    ApirestaurantorderfulfillmentAddressWithAccuracyAndLatLng:
      type: object
      properties:
        streetNumber:
          type: string
          description: Street number
          example: '123'
        street:
          type: string
          description: Street name
          example: Main Street
        city:
          type: string
          description: City name
          example: Toronto
        province:
          type: string
          description: Province or state
          example: 'ON'
        country:
          type: string
          description: Country
          example: Canada
        postalCode:
          type: string
          description: Postal or ZIP code
          example: M5V 3A8
        latlng:
          type: object
          description: Latitude and longitude coordinates
          properties:
            lat:
              type: number
              format: double
              description: Latitude
              example: 43.6532
            lng:
              type: number
              format: double
              description: Longitude
              example: -79.3832
        addressWarning:
          type: string
          description: Address validation warning
          enum:
            - none
            - invalidRange
            - invalidBuildingNumber
          example: none
        addressEditRadius:
          type: string
          description: Address edit radius indicator
          enum:
            - none
            - short
            - long
          example: none
    ApirestaurantorderfulfillmentAddresses:
      type: object
      properties:
        addresses:
          type: array
          description: List of addresses
          items:
            type: string
          example:
            - 123 Main St, Toronto, ON
            - 456 Oak Ave, Vancouver, BC
    ApirestaurantorderfulfillmentAffectedItems:
      type: object
      properties:
        items:
          type: array
          description: List of affected menu items
          items:
            type: object
            required:
              - id
              - name
              - centsPrice
              - tags
              - options
              - foodType
              - available
              - isPrimary
            properties:
              id:
                type: string
                description: Item identifier
                example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
              name:
                type: string
                description: Item name
                example: Pepperoni Pizza
              description:
                type: string
                description: Item description (omitted when not available)
                example: Classic pepperoni pizza with mozzarella cheese
              centsPrice:
                type: integer
                format: int32
                description: Price in cents
                example: 1299
              tags:
                type: array
                description: Item tags
                items:
                  type: string
                example:
                  - popular
                  - spicy
              options:
                type: array
                description: List of option groups
                items:
                  type: object
                example: []
              foodType:
                type: string
                description: Food type enum
                example: PIZZA
              priceCategory:
                type: string
                description: Price category (omitted when not available)
                example: STANDARD
              available:
                type: boolean
                description: Whether item is available
                example: true
              nextAvailability:
                type: integer
                format: int64
                description: Next availability timestamp (omitted when not applicable)
                example: 1732730400000
              imageUrl:
                type: string
                description: Image URL (omitted when not available)
              isPrimary:
                type: boolean
                description: Whether this is a primary item
                example: true
              clientItemId:
                type: string
                description: Client item identifier (omitted when not available)
                example: PIZZA-001
              removed:
                type: boolean
                description: Whether item is removed (omitted when false)
                example: false
              mediumImageUrl:
                type: string
                description: Medium image URL (omitted when not available)
              smallImageUrl:
                type: string
                description: Small image URL (omitted when not available)
    ApirestaurantorderfulfillmentAuthPusher:
      type: object
      required:
        - socketId
      properties:
        socketId:
          type: string
          description: Pusher socket ID
          example: '12345.67890'
        version:
          type: integer
          format: int32
          description: API version (omitted when not provided)
          example: 1
    ApirestaurantorderfulfillmentCallTree:
      type: object
      required:
        - isEnabled
        - digits
      properties:
        isEnabled:
          type: boolean
          description: Whether call tree is enabled
          example: true
        digits:
          type: array
          description: List of call tree digits
          items:
            type: string
          example:
            - '1'
            - '2'
            - '3'
    ApirestaurantorderfulfillmentConfirmOrder:
      type: object
      required:
        - acceptedTime
      properties:
        acceptedTime:
          type: integer
          format: int64
          description: Timestamp when order was accepted
          example: 1732723500000
        deviceTime:
          type: integer
          format: int64
          description: Device timestamp (omitted when not provided)
          example: 1732723505000
    ApirestaurantorderfulfillmentCourierRequest:
      type: object
      required:
        - subtotal
        - customerName
        - customerPhone
        - customerAddress
        - specialInstructions
        - customerCity
        - paymentMethod
        - latitude
        - longitude
        - accuracy
      properties:
        requestedTime:
          type: integer
          format: int64
          description: Requested delivery time timestamp (omitted for ASAP)
          example: 1732730400000
        subtotal:
          type: integer
          format: int32
          description: Subtotal amount in cents
          example: 2599
        customerName:
          type: string
          description: Customer name
          example: John Doe
        customerPhone:
          type: string
          description: Customer phone number
          example: '+14165551234'
        customerAddress:
          type: string
          description: Customer delivery address
          example: 123 Main Street, Apt 4B
        specialInstructions:
          type: string
          description: Special delivery instructions
          example: Please ring doorbell twice
        customerCity:
          type: string
          description: Customer city
          example: Toronto
        paymentMethod:
          type: string
          description: Payment method
          example: card
        latitude:
          type: number
          format: double
          description: Delivery location latitude
          example: 43.6532
        longitude:
          type: number
          format: double
          description: Delivery location longitude
          example: -79.3832
        accuracy:
          type: string
          enum:
            - accurate
            - inaccurate
            - unsure
          description: Location accuracy
          example: accurate
        tip:
          type: integer
          format: int32
          description: Tip amount in cents (omitted when not provided)
          example: 500
        deviceTime:
          type: integer
          format: int64
          description: Device timestamp (omitted when not provided)
          example: 1732723200000
    ApirestaurantorderfulfillmentCourierRequestOrder:
      type: object
      required:
        - latitude
        - longitude
        - accuracy
        - address
        - city
        - subtotal
        - deliveryFee
        - taxes
        - total
        - centsCashLimit
        - asapTargetCollect
        - acceptsCash
        - minEstimatedTime
        - maxEstimatedTime
      properties:
        latitude:
          type: number
          format: double
          description: Restaurant location latitude
          example: 43.6532
        longitude:
          type: number
          format: double
          description: Restaurant location longitude
          example: -79.3832
        accuracy:
          type: string
          description: Location accuracy level
          example: ACCURATE
        address:
          type: string
          description: Restaurant address
          example: 456 Restaurant St
        city:
          type: string
          description: Restaurant city
          example: Toronto
        subtotal:
          type: integer
          format: int32
          description: Order subtotal in cents
          example: 3999
        deliveryFee:
          type: integer
          format: int32
          description: Delivery fee in cents
          example: 399
        taxes:
          type: array
          description: List of applicable taxes
          items:
            type: object
            required:
              - taxDescription
              - amount
            properties:
              taxDescription:
                type: string
                description: Tax description/name
                example: GST
              amount:
                type: integer
                format: int32
                description: Tax amount in cents
                example: 520
          example:
            - taxDescription: GST
              amount: 520
        total:
          type: integer
          format: int32
          description: Total amount in cents
          example: 4918
        centsCashLimit:
          type: integer
          format: int32
          description: Cash payment limit in cents
          example: 10000
        asapTargetCollect:
          type: integer
          format: int32
          description: ASAP target collection time
          example: 30
        acceptsCash:
          type: boolean
          description: Whether restaurant accepts cash
          example: true
        minEstimatedTime:
          type: integer
          format: int32
          description: Minimum estimated delivery time in minutes
          example: 30
        maxEstimatedTime:
          type: integer
          format: int32
          description: Maximum estimated delivery time in minutes
          example: 45
    ApirestaurantorderfulfillmentCreateCallRestaurantForAssistanceAction:
      type: object
      required:
        - orderId
        - restaurantId
        - note
        - modifiedUser
      properties:
        orderId:
          type: string
          description: Order identifier
          example: 550e8400-e29b-41d4-a716-446655440000
        restaurantId:
          type: string
          description: Restaurant identifier
          example: 660f9511-f3ac-52e5-b827-557766551111
        note:
          type: string
          description: Assistance note/message
          example: Customer needs to change delivery address
        modifiedUser:
          type: object
          description: User who created the assistance request
          required:
            - id
            - name
            - type
          properties:
            id:
              type: string
              description: User identifier
              example: 770a0622-04bd-63f6-c938-668877662222
            name:
              type: string
              description: User name
              example: John Manager
            type:
              type: string
              description: User type
              enum:
                - customer
                - restaurant
                - courier
                - admin
                - unknown
                - system
              example: restaurant
    ApirestaurantorderfulfillmentGroceryPickerInformation:
      type: object
      required:
        - restaurantInfo
        - orderInfo
        - categoryGroups
        - itemsWithoutCategory
      properties:
        restaurantInfo:
          type: object
          description: Restaurant information
          example: {}
        orderInfo:
          type: object
          description: Order information
          example: {}
        categoryGroups:
          type: array
          description: List of category groups
          items:
            type: object
          example: []
        itemsWithoutCategory:
          type: array
          description: List of items without category
          items:
            type: object
          example: []
    ApirestaurantorderfulfillmentHistoricalOrders:
      type: array
      description: List of historical orders
      items:
        type: object
        required:
          - id
          - orderNumber
          - status
          - time
        properties:
          id:
            type: string
            description: Unique order identifier (UUID)
            example: 550e8400-e29b-41d4-a716-446655440000
          orderNumber:
            type: integer
            format: int32
            description: Order number
            example: 12345
          status:
            type: string
            description: Order status
            enum:
              - COMPLETED
              - ACCEPTED
              - CANCELLED
              - REJECTED
            example: COMPLETED
          time:
            type: integer
            format: int64
            description: Order timestamp
            example: 1732723200000
    ApirestaurantorderfulfillmentHoursWithHoliday:
      type: object
      required:
        - holiday
        - futureHours
        - regularHours
      properties:
        holiday:
          type: object
          description: Holiday information
          example: {}
        futureHours:
          type: array
          description: Set of future hours (represented as array)
          items:
            type: object
          example: []
        regularHours:
          type: object
          description: Weekly regular hours
          example: {}
    ApirestaurantorderfulfillmentLogin:
      type: object
      required:
        - email
        - password
      properties:
        email:
          type: string
          format: email
          description: User's email address
          example: manager@restaurant.com
        password:
          type: string
          format: password
          description: User's password
          example: SecureP@ssw0rd
    ApirestaurantorderfulfillmentMaskedPhoneNumber:
      type: object
      description: Masked phone number response
      properties:
        maskingNumber:
          type: string
          description: Masked phone number for courier communication
          example: '+1234567890'
        expiryTime:
          type: integer
          format: int64
          description: Expiration timestamp for the masked number (Unix timestamp in milliseconds)
          example: 1732730400000
    ApirestaurantorderfulfillmentMenu:
      type: object
      required:
        - restaurantId
        - timeZone
        - preferredLocale
        - menuGroups
        - restrictions
        - pricingStrategies
      properties:
        restaurantId:
          type: string
          description: Restaurant identifier
          example: 660f9511-f3ac-52e5-b827-557766551111
        timeZone:
          type: string
          description: Restaurant timezone
          example: America/Toronto
        preferredLocale:
          type: string
          description: Preferred locale (e.g., en-US, fr-CA)
          example: en_US
        clientStoreId:
          type: string
          description: Client store identifier (omitted when not available)
          example: store-67890
        menuGroups:
          type: array
          description: List of menu groups
          items:
            type: object
          example: []
        restrictions:
          type: array
          description: List of menu restrictions
          items:
            type: object
          example: []
        pricingStrategies:
          type: array
          description: List of pricing strategies
          items:
            type: object
          example: []
        modifiedUser:
          type: object
          description: User who last modified the menu (omitted when not available)
          properties:
            id:
              type: string
              description: User identifier
              example: 770a0622-04bd-63f6-c938-668877662222
            name:
              type: string
              description: User name
              example: John Manager
            type:
              type: string
              description: User type
              enum:
                - customer
                - restaurant
                - courier
                - admin
                - unknown
                - system
              example: restaurant
        lastUpdatedTime:
          type: integer
          format: int64
          description: Last update timestamp (omitted when not available)
          example: 1732723200000
    ApirestaurantorderfulfillmentMenuChangeRequest:
      type: object
      required:
        - name
        - email
        - request
        - images
      properties:
        name:
          type: string
          description: Requester name
          example: John Manager
        email:
          type: string
          format: email
          description: Requester email
          example: manager@restaurant.com
        request:
          type: string
          description: Menu change request description
          example: Please add vegan options to the menu and update pricing for pasta dishes
        images:
          type: array
          description: List of menu images
          items:
            type: object
            required:
              - base64
              - extension
            properties:
              base64:
                type: string
                format: byte
                description: Base64 encoded image data
                example: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
              extension:
                type: string
                description: File extension (e.g., jpg, image format)
                example: jpg
          example:
            - base64: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
              extension: jpg
    ApirestaurantorderfulfillmentMenuItem:
      type: object
      required:
        - id
        - name
        - centsPrice
        - tags
        - options
        - foodType
        - available
        - isPrimary
      properties:
        id:
          type: string
          description: Item identifier
          example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
        name:
          type: string
          description: Item name
          example: Pepperoni Pizza
        description:
          type: string
          description: Item description (omitted when not available)
          example: Classic pepperoni pizza with mozzarella cheese
        centsPrice:
          type: integer
          format: int32
          description: Price in cents
          example: 1299
        tags:
          type: array
          description: List of tags
          items:
            type: string
          example:
            - popular
            - spicy
        options:
          type: array
          description: List of option groups
          items:
            type: object
          example: []
        foodType:
          type: string
          description: Food type identifier
          example: PIZZA
        priceCategory:
          type: string
          description: Price category (omitted when not available)
          example: STANDARD
        available:
          type: boolean
          description: Whether item is available
          example: true
        nextAvailability:
          type: integer
          format: int64
          description: Next availability timestamp (omitted when not applicable)
          example: 1732730400000
        imageUrl:
          type: string
          description: Image URL (omitted when not available)
        isPrimary:
          type: boolean
          description: Whether this is a primary item
          example: true
        clientItemId:
          type: string
          description: Client item identifier (omitted when not available)
          example: PIZZA-001
        removed:
          type: boolean
          description: Whether item is removed (omitted when false)
          example: false
        mediumImageUrl:
          type: string
          description: Medium image URL (omitted when not available)
        smallImageUrl:
          type: string
          description: Small image URL (omitted when not available)
    ApirestaurantorderfulfillmentMenuItemOption:
      type: object
      required:
        - id
        - name
        - centsPriceModifier
        - foodType
        - available
      properties:
        id:
          type: string
          description: Option identifier
          example: 99c0d3e5-f6a7-5b8c-9d0e-1f2a3b4c5d6e
        name:
          type: string
          description: Option name
          example: Extra Cheese
        description:
          type: string
          description: Option description (omitted when not available)
          example: Add extra cheese
        centsPriceModifier:
          type: integer
          format: int32
          description: Price modifier in cents
          example: 150
        foodType:
          type: string
          description: Food type identifier
          example: TOPPING
        priceCategory:
          type: string
          description: Price category (omitted when not available)
          example: ADDON
        clientOptionId:
          type: string
          description: Client option identifier (omitted when not available)
          example: EXTRA-CHEESE
        available:
          type: boolean
          description: Whether option is available
          example: true
        nextAvailability:
          type: integer
          format: int64
          description: Next availability timestamp (omitted when not applicable)
          example: 1732730400000
        removed:
          type: boolean
          description: Whether option is removed (omitted when false)
          example: false
          x-assumption: Type inferred as string
    ApirestaurantorderfulfillmentMenuItemsDeactivationResult:
      type: object
      required:
        - successfulDeActivations
        - unsuccessfulDeActivations
      properties:
        successfulDeActivations:
          type: array
          description: List of successfully deactivated menu item IDs
          items:
            type: string
          example:
            - a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
            - a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c6e
            - a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c7f
        unsuccessfulDeActivations:
          type: array
          description: List of unsuccessfully deactivated menu item IDs
          items:
            type: string
          example: []
    ApirestaurantorderfulfillmentMobileRelease:
      type: object
      properties:
        priority:
          type: string
          description: Release priority level
          enum:
            - minor
            - major
            - critical
          example: major
        buildCode:
          type: integer
          format: int32
          description: Build code version
          example: 1234
    ApirestaurantorderfulfillmentNonDelcoDeliveryOnItsWay:
      type: object
      required:
        - orderId
        - onItsWayTime
      properties:
        orderId:
          type: string
          description: Order identifier
          example: 550e8400-e29b-41d4-a716-446655440000
    ApirestaurantorderfulfillmentOnlineToggle:
      type: object
      required:
        - status
        - modifiedUser
        - restaurantId
      properties:
        status:
          type: string
          enum:
            - online
            - offline1
            - offline2
            - offline3
            - offline4
            - offlineToday
            - offlineTomorrow
            - offline
          description: Online/offline status
          example: online
        reason:
          type: string
          description: Reason for status change (omitted when not provided)
          example: Kitchen capacity issue
        modifiedUser:
          type: object
          description: User who modified the status
          required:
            - id
            - name
            - type
          properties:
            id:
              type: string
              description: User identifier
              example: 770a0622-04bd-63f6-c938-668877662222
            name:
              type: string
              description: User name
              example: John Manager
            type:
              type: string
              description: User type
              enum:
                - customer
                - restaurant
                - courier
                - admin
                - unknown
                - system
              example: restaurant
        restaurantId:
          type: string
          description: Restaurant identifier
          example: 660f9511-f3ac-52e5-b827-557766551111
    ApirestaurantorderfulfillmentOrder:
      type: object
      description: Complete order details extending Order Summary
      required:
        - id
        - orderNumber
        - status
        - type
        - isAsap
        - time
        - created
        - method
        - restaurant
        - lineItems
        - totals
        - customer
        - paymentType
        - minimumTime
        - alcoholDelivery
      properties:
        id:
          type: string
          description: Order identifier
          example: 550e8400-e29b-41d4-a716-446655440000
        orderNumber:
          type: integer
          format: int32
          description: Order number
          example: 1001
        status:
          type: string
          enum:
            - notAccepted
            - inProgress
            - collected
            - completed
            - cancelled
          description: Order status
          example: inProgress
        type:
          type: string
          enum:
            - pickup
            - delivery
          description: Order type
          example: delivery
        isAsap:
          type: boolean
          description: Whether this is an ASAP order
          example: true
        time:
          type: integer
          format: int64
          description: Order time timestamp
          example: 1732723800000
        created:
          type: integer
          format: int64
          description: Creation timestamp
          example: 1732723200000
        method:
          type: string
          enum:
            - online
            - callIn
          description: Order method
          example: online
        delivery:
          type: object
          nullable: true
          description: Delivery information (present only for delivery orders)
        posInjectionStatus:
          type: string
          nullable: true
          enum:
            - pending
            - processing
            - successful
            - failed
            - unconfirmed
            - cancelled
          description: POS injection status
          example: successful
        acceptedTime:
          type: integer
          format: int64
          description: Timestamp when order was accepted (omitted when not yet accepted)
          example: 1732723500000
        customerOrderHistory:
          type: object
          description: Customer order history (omitted when not available)
        isSkipGoOrder:
          type: boolean
          description: Whether this is a Skip Go order (omitted when not applicable)
          example: false
        restaurant:
          type: object
          description: Restaurant information
          required:
            - id
            - name
          properties:
            id:
              type: string
              description: Restaurant identifier
              example: 660f9511-f3ac-52e5-b827-557766551111
            name:
              type: string
              description: Restaurant name
              example: Pizza Palace
        specialInstructions:
          type: string
          description: Special instructions for the order (omitted when not provided)
          example: Please ring doorbell
        lineItems:
          type: array
          description: List of line items
          items:
            type: object
            required:
              - name
              - quantity
              - subtotal
              - discounts
              - options
              - isCustomItem
            properties:
              id:
                type: string
                description: Line item identifier
                example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
              name:
                type: string
                description: Item name
                example: Pepperoni Pizza
              quantity:
                type: integer
                format: int32
                description: Item quantity
                example: 2
              specialInstructions:
                type: string
                description: Item-specific instructions (omitted when not provided)
                example: Extra cheese
              subtotal:
                type: integer
                format: int32
                description: Subtotal in cents
                example: 2598
              discounts:
                type: integer
                format: int32
                description: Discounts in cents
                example: 0
              options:
                type: array
                description: List of selected options
                items:
                  type: object
                  required:
                    - quantity
                    - name
                  properties:
                    quantity:
                      type: integer
                      format: int32
                      description: Option quantity
                      example: 1
                    name:
                      type: string
                      description: Option name
                      example: Extra Cheese
                    optionGroup:
                      type: string
                      description: Option group name (omitted when not available)
                      example: Toppings
              menuItemId:
                type: string
                description: Menu item ID (omitted for custom items)
                example: item-123
              isCustomItem:
                type: boolean
                description: Whether this is a custom item
                example: false
        totals:
          type: object
          description: Order totals
          required:
            - subtotal
            - taxes
            - total
            - collectAmount
            - coupons
            - totalItems
          properties:
            subtotal:
              type: integer
              format: int32
              description: Subtotal in cents
              example: 3999
            deliveryFee:
              type: integer
              format: int32
              description: Delivery fee in cents (omitted for pickup)
              example: 399
            tip:
              type: integer
              format: int32
              description: Tip amount in cents (omitted when not provided)
              example: 500
            taxes:
              type: array
              description: List of taxes
              items:
                type: object
                required:
                  - type
                  - amount
                  - taxDescription
                properties:
                  type:
                    type: string
                    description: Tax type
                    example: GST
                  amount:
                    type: integer
                    format: int32
                    description: Tax amount in cents
                    example: 520
                  taxDescription:
                    type: string
                    description: Tax description
                    example: Goods and Services Tax
            total:
              type: integer
              format: int32
              description: Total amount in cents
              example: 5418
            collectAmount:
              type: integer
              format: int32
              description: Amount to collect
              example: 5418
            coupons:
              type: integer
              format: int32
              description: Coupon discount amount in cents
              example: 0
            totalItems:
              type: integer
              format: int32
              description: Total number of items
              example: 3
        customer:
          type: object
          description: Customer information
        paymentType:
          type: string
          description: Payment type
          example: CARD
        minimumTime:
          type: integer
          format: int32
          description: Minimum preparation time in minutes
          example: 30
        alcoholDelivery:
          type: boolean
          description: Whether order contains alcohol
          example: false
    ApirestaurantorderfulfillmentOrderConfirmed:
      type: object
      required:
        - forceReassign
        - timeDifference
        - isForceReassign
      properties:
        forceReassign:
          type: boolean
          description: Whether to force reassignment
          example: false
        foodPrepUpdate:
          type: object
          description: Food preparation time update (omitted when not applicable)
          properties:
            newfoodPrepMinutes:
              type: integer
              format: int32
              description: New food prep time in minutes
              example: 25
            oldfoodPrepMinutes:
              type: integer
              format: int32
              description: Old food prep time in minutes
              example: 30
        orderDetails:
          type: object
          description: Order details (omitted when not available)
          example: {}
        timeDifference:
          type: integer
          format: int32
          description: Time difference in minutes
          example: -5
        isForceReassign:
          type: boolean
          description: Whether this is a forced reassignment
          example: false
    ApirestaurantorderfulfillmentOrderTracker:
      type: object
      properties:
        address:
          type: string
          description: Delivery address
          example: 123 Main St, Toronto, ON
        courier:
          type: object
          description: Courier information
          example: {}
        id:
          type: string
          description: Tracker identifier
          example: aa1b2c3d-e4f5-6a7b-8c9d-0e1f2a3b4c5d
        jobType:
          type: string
          description: Job type
          example: DELIVERY
        jobs:
          type: array
          description: List of jobs
          items:
            type: object
          example: []
        joinDate:
          type: integer
          format: int64
          description: Join date timestamp
          example: 1732723200000
        latitude:
          type: number
          format: double
          description: Current latitude
          example: 43.6532
        location:
          type: object
          description: Location information
          example: {}
        locationServerSendsSeconds:
          type: integer
          format: int32
          description: Location update interval in seconds
          example: 30
        longitude:
          type: number
          format: double
          description: Current longitude
          example: -79.3832
        mapSettings:
          type: object
          description: Map settings configuration
          example: {}
        maximumSpeedBeforeTeleport:
          type: number
          format: double
          description: Maximum speed threshold before teleport detection
          example: 100
        name:
          type: string
          description: Courier name
          example: John Courier
        noRequestsGate:
          type: boolean
          description: Whether requests are gated
          example: false
        orderNumber:
          type: integer
          format: int32
          description: Order number
          example: 1001
        status:
          type: string
          description: Tracker status
          example: ACTIVE
        totalDeliveries:
          type: integer
          format: int32
          description: Total number of deliveries
          example: 150
        updatedTime:
          type: integer
          format: int64
          description: Last update timestamp
          example: 1732723800000
    ApirestaurantorderfulfillmentPushToken:
      type: object
      required:
        - type
        - token
      properties:
        type:
          type: string
          enum:
            - android
            - ios
          description: Platform type for push notifications
          example: android
        token:
          type: string
          description: Push notification token
          example: dGVzdC1wdXNoLXRva2VuLWZvci1kZXZpY2U=
    ApirestaurantorderfulfillmentPusherAuthData:
      type: object
      required:
        - auth
      properties:
        auth:
          type: string
          description: Pusher authentication string
          example: restaurant-12345:a1b2c3d4e5f6g7h8i9j0
    ApirestaurantorderfulfillmentReimbursementEligibility:
      type: object
      properties:
        isEligible:
          type: boolean
          description: Whether the order is eligible for reimbursement
          example: true
    ApirestaurantorderfulfillmentRequestedCourierOrder:
      type: object
      required:
        - orderId
      properties:
        orderId:
          type: string
          description: Order identifier
          example: 550e8400-e29b-41d4-a716-446655440000
    ApirestaurantorderfulfillmentRestaurant:
      type: object
      required:
        - name
        - timezone
        - status
        - foodPrepMinutes
        - isDelco
        - latitude
        - longitude
        - adminSettings
        - callTree
        - contactInfo
        - restaurantType
      properties:
        name:
          type: string
          description: Restaurant name
          example: Pizza Palace
        timezone:
          type: string
          description: Restaurant timezone
          example: America/Toronto
        status:
          type: string
          enum:
            - online
            - offline
          description: Restaurant online status
          example: online
        onlineTimestamp:
          type: integer
          format: int64
          description: Timestamp when restaurant went online (omitted when offline)
          example: 1732723200000
        foodPrepMinutes:
          type: integer
          format: int32
          description: Food preparation time in minutes
          example: 30
        isDelco:
          type: boolean
          description: Whether restaurant is Delco network
          example: true
        latitude:
          type: number
          format: double
          description: Restaurant latitude
          example: 43.6532
        longitude:
          type: number
          format: double
          description: Restaurant longitude
          example: -79.3832
        adminSettings:
          type: object
          description: Admin settings configuration
          example: {}
        callTree:
          type: object
          description: Call tree configuration
          example: {}
        contactInfo:
          type: object
          description: Contact information
          example: {}
        restaurantType:
          type: string
          description: Restaurant type identifier
          example: FAST_FOOD
    ApirestaurantorderfulfillmentRestaurantActivationStatus:
      type: object
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - activated
            - recovered
            - deactivated
          description: Restaurant activation status
          example: activated
    ApirestaurantorderfulfillmentRestaurantAdditionalChargeRequested:
      type: object
      required:
        - orderId
        - additionalCharge
      properties:
        orderId:
          type: string
          description: Order identifier
          example: 550e8400-e29b-41d4-a716-446655440000
        additionalCharge:
          type: object
          required:
            - amount
            - reason
          properties:
            amount:
              type: integer
              format: int32
              description: Additional charge amount in cents
              example: 599
            reason:
              type: string
              description: Reason for additional charge
              example: Extra sauce requested
    ApirestaurantorderfulfillmentRestaurantCallForAssistanceStatus:
      type: object
      description: Restaurant call for assistance status
      properties:
        isRestaurantActionOpen:
          type: boolean
          description: Indicates whether there is an open assistance request for this order
          example: true
    ApirestaurantorderfulfillmentRestaurantCourierReviewTags:
      type: object
      properties:
        courierTags:
          type: array
          description: List of courier review tags
          items:
            type: string
          example:
            - professional
            - on-time
            - friendly
        name:
          type: string
          description: Tag category name
          example: Service Quality
        tag:
          type: string
          description: Individual tag identifier
          example: professional
    ApirestaurantorderfulfillmentRestaurantIsOpenInformation:
      type: object
      required:
        - currentTime
        - defaultHoursForToday
        - isFutureHoursClosedToday
        - isFutureHoursClosedNow
      properties:
        currentTime:
          type: integer
          format: int64
          description: Current timestamp
          example: 1732723200000
        defaultHoursForToday:
          type: array
          description: List of default hours for today
          items:
            type: object
            required:
              - start
              - end
            properties:
              start:
                type: string
                format: date-time
                description: Start time of the default hours
                example: '2024-11-27T09:00:00Z'
              end:
                type: string
                format: date-time
                description: End time of the default hours
                example: '2024-11-27T22:00:00Z'
          example:
            - start: '2024-11-27T09:00:00Z'
              end: '2024-11-27T22:00:00Z'
        isFutureHoursClosedToday:
          type: boolean
          description: Whether restaurant is closed today based on future hours
          example: false
        isFutureHoursClosedNow:
          type: boolean
          description: Whether restaurant is closed now based on future hours
          example: false
    ApirestaurantorderfulfillmentRestaurantMobileBetaStatus:
      type: object
      required:
        - features
      properties:
        features:
          type: array
          description: List of beta feature statuses
          items:
            type: object
            required:
              - feature
              - enabled
            properties:
              feature:
                type: string
                description: Beta feature identifier
                example: ADVANCED_TRACKING
              enabled:
                type: boolean
                description: Whether the feature is enabled
                example: true
          example:
            - feature: ADVANCED_TRACKING
              enabled: true
            - feature: NEW_UI
              enabled: false
    ApirestaurantorderfulfillmentRestaurantOutboundNumber:
      type: object
      required:
        - id
        - restaurantId
        - outboundNumber
        - isPrimary
      properties:
        id:
          type: string
          description: Outbound number configuration identifier
          example: bb2c3d4e-f5a6-7b8c-9d0e-1f2a3b4c5d6e
        restaurantId:
          type: string
          description: Restaurant identifier
          example: 660f9511-f3ac-52e5-b827-557766551111
        outboundNumber:
          type: string
          description: Phone number to use for outbound calls
          example: '+14165551234'
        numberNickName:
          type: string
          description: Number nickname (omitted when not set)
          example: Main Restaurant Line
        isPrimary:
          type: boolean
          description: Whether this is the primary outbound number
          example: true
    ApirestaurantorderfulfillmentRestaurantOutboundNumberList:
      type: object
      required:
        - restaurantOutboundNumbers
      properties:
        restaurantOutboundNumbers:
          type: array
          description: List of restaurant outbound numbers
          items:
            type: object
          example: []
    ApirestaurantorderfulfillmentRestaurantUserAuthorization:
      type: object
      required:
        - userId
        - token
        - email
        - restaurants
      properties:
        userId:
          type: string
          description: User identifier
          example: 770a0622-04bd-63f6-c938-668877662222
        token:
          type: string
          description: Authorization token
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
        email:
          type: string
          format: email
          description: User email address
          example: manager@restaurant.com
        restaurants:
          type: array
          description: List of authorized restaurants
          items:
            type: object
            required:
              - id
              - name
            properties:
              id:
                type: string
                description: Restaurant identifier
                example: 660f9511-f3ac-52e5-b827-557766551111
              name:
                type: string
                description: Restaurant name
                example: Pizza Palace
          example:
            - id: rest-123
              name: Pizza Palace
            - id: rest-456
              name: Burger Joint
    ApirestaurantorderfulfillmentRestoRegularAndFutureHours:
      type: object
      properties:
        futureHours:
          type: object
          description: Future hours information
          example: {}
        regularHours:
          type: object
          description: Restaurant business hours
          example: {}
    ApirestaurantorderfulfillmentRoute:
      type: object
      required:
        - path
        - distances
      properties:
        path:
          type: array
          description: List of path segments (array of Latitude Longitude arrays)
          items:
            type: array
            items:
              type: object
              description: Latitude Longitude coordinate
          example: []
        distances:
          type: array
          description: List of distances in meters
          items:
            type: integer
            format: int64
          example:
            - 1000
            - 1500
            - 2000
    ApirestaurantorderfulfillmentSubmitCourierReview:
      type: object
      required:
        - score
        - tags
      properties:
        score:
          type: string
          enum:
            - positive
            - negative
            - neutral
          description: Review score
          example: positive
        review:
          type: string
          description: Optional review text (omitted when not provided)
          example: Great delivery service, very professional and on time!
        tags:
          type: array
          description: Set of review tags
          items:
            type: string
          example:
            - professional
            - on-time
            - friendly
    ApirestaurantorderfulfillmentTimes:
      type: object
      required:
        - times
        - timezone
        - paddingMinutes
        - minEstimatedTime
        - maxEstimatedTime
      properties:
        times:
          type: object
          description: Map of timestamps to available time slots
          additionalProperties:
            type: array
            items:
              type: integer
              format: int64
          example:
            '1732723200000':
              - 1732730400000
              - 1732734000000
        timezone:
          type: string
          description: Timezone identifier
          example: America/Toronto
        paddingMinutes:
          type: integer
          format: int32
          description: Padding minutes for scheduling
          example: 15
        minEstimatedTime:
          type: integer
          format: int32
          description: Minimum estimated time in minutes
          example: 30
        maxEstimatedTime:
          type: integer
          format: int32
          description: Maximum estimated time in minutes
          example: 45
        isAsapOpen:
          type: boolean
          description: Whether ASAP ordering is available (omitted when not applicable)
          example: true
    ApirestaurantorderfulfillmentUnconfirmedRestaurantHoliday:
      type: object
      required:
        - isTaskOpen
      properties:
        isTaskOpen:
          type: boolean
          description: Whether the holiday confirmation task is open
          example: true
        holiday:
          type: object
          description: Holiday information (omitted when not available)
          example: {}
    ApirestaurantorderfulfillmentUpdateFoodPrepTime:
      type: object
      required:
        - foodPrepMinutes
        - modifiedUser
      properties:
        foodPrepMinutes:
          type: integer
          format: int32
          description: Food preparation time in minutes
          example: 30
        modifiedUser:
          type: object
          description: User who modified the food prep time
          required:
            - id
            - name
            - type
          properties:
            id:
              type: string
              description: User identifier
              example: 770a0622-04bd-63f6-c938-668877662222
            name:
              type: string
              description: User name
              example: John Manager
            type:
              type: string
              description: User type
              enum:
                - customer
                - restaurant
                - courier
                - admin
                - unknown
                - system
              example: restaurant
    ApirestaurantorderfulfillmentUpdateFutureHolidayHours:
      type: object
      required:
        - holidayId
        - holidayHours
      properties:
        holidayId:
          type: string
          description: Holiday identifier
          example: christmas-2024
        holidayHours:
          type: object
          description: Map of dates to list of hours
          additionalProperties:
            type: array
            items:
              type: object
          example:
            '2024-12-25': []
    ApirestaurantorderfulfillmentUpdateFutureHours:
      type: object
      required:
        - dates
        - modifiedUser
      properties:
        dates:
          type: object
          description: Map of dates to list of hours
          additionalProperties:
            type: array
            items:
              type: object
          example:
            '2024-12-25': []
            '2024-12-26': []
        modifiedUser:
          type: object
          description: User who modified the hours
          required:
            - id
            - name
            - type
          properties:
            id:
              type: string
              description: User identifier
              example: 770a0622-04bd-63f6-c938-668877662222
            name:
              type: string
              description: User name
              example: John Manager
            type:
              type: string
              description: User type
              enum:
                - customer
                - restaurant
                - courier
                - admin
                - unknown
                - system
              example: restaurant
    ApirestaurantorderfulfillmentValidateAddress:
      type: object
      required:
        - fullAddress
        - noSuiteAddress
        - subtotal
      properties:
        fullAddress:
          type: string
          description: Full address including suite/apartment
          example: 123 Main Street, Apt 4B, Toronto, ON M5V 3A8
        noSuiteAddress:
          type: string
          description: Address without suite/apartment number
          example: 123 Main Street, Toronto, ON M5V 3A8
        subtotal:
          type: integer
          format: int32
          description: Order subtotal in cents
          example: 3599
    ApirestaurantorderfulfillmentVerifyLocation:
      type: object
      required:
        - isValid
      properties:
        isValid:
          type: boolean
          description: Whether the location is valid
          example: true
    ApiskipthedishesAccountUnlinkDto:
      type: object
      properties:
        reason:
          type: string
          description: Reason for account unlink
          nullable: true
    ApiskipthedishesAccuracy:
      type: string
      enum:
        - ACCURATE
        - INACCURATE
        - UNSURE
    ApiskipthedishesActiveOrderDetailsContract:
      type: object
      properties:
        id:
          type: boolean
          nullable: true
        email:
          type: boolean
          nullable: true
        name:
          type: boolean
          nullable: true
        phoneNumber:
          type: boolean
          nullable: true
        defaultAddressId:
          type: boolean
          nullable: true
        addresses:
          type: boolean
          nullable: true
    ApiskipthedishesAddReferral:
      type: object
      properties:
        referralCode:
          type: string
    ApiskipthedishesAddReview:
      type: object
      properties:
        restaurantId:
          type: string
        rating:
          type: number
          format: double
        reviewData:
          type: string
    ApiskipthedishesAddTip:
      type: object
      properties:
        tip:
          type: integer
          description: Tip amount in cents
    ApiskipthedishesAddress:
      type: object
      properties:
        id:
          type: string
        address1:
          type: string
        address2:
          type: string
          nullable: true
        city:
          type: string
        province:
          type: string
        postalCode:
          type: string
        specialInstructions:
          type: string
          nullable: true
        latitude:
          type: number
          format: double
          nullable: true
        longitude:
          type: number
          format: double
          nullable: true
        accuracy:
          $ref: '#/components/schemas/ApiskipthedishesAccuracy'
        useLatLongAddress:
          type: boolean
          nullable: true
    ApiskipthedishesAddressId:
      type: object
      properties:
        id:
          type: string
      required:
        - id
    ApiskipthedishesAddressSuggestion:
      type: object
      properties:
        description:
          type: string
        placeId:
          type: string
    ApiskipthedishesAddressesDto:
      type: object
      properties:
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesAddressSuggestion'
    ApiskipthedishesAppConfigDto:
      type: object
      properties:
        graphite:
          $ref: '#/components/schemas/ApiskipthedishesGraphiteConfigsDto'
        xRayConfig:
          $ref: '#/components/schemas/ApiskipthedishesXRayConfigDto'
    ApiskipthedishesApplicant:
      type: object
      properties:
        id:
          type: string
        courierId:
          type: string
        status:
          type: string
    ApiskipthedishesAssignedCourier:
      type: object
      properties:
        courierId:
          type: string
        name:
          type: string
    ApiskipthedishesAttemptPhoneNumberVerification:
      type: object
      properties:
        code:
          type: string
        pnvToken:
          type: string
    ApiskipthedishesAttemptedPhoneNumberVerification:
      type: object
      properties:
        remainingAttempts:
          type: integer
        validCode:
          type: boolean
        expired:
          type: boolean
    ApiskipthedishesAvailability:
      type: string
      enum:
        - DAYTIME
        - EVENINGS
        - WEEKENDS
        - MORNING
    ApiskipthedishesBooleanResponse:
      type: object
      properties:
        value:
          type: boolean
    ApiskipthedishesCalculatedOffer:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        discountAmount:
          type: integer
        origin:
          $ref: '#/components/schemas/ApiskipthedishesOrigin'
        points:
          type: integer
          nullable: true
        offerType:
          type: string
          nullable: true
    ApiskipthedishesCardNetwork:
      type: string
      enum:
        - VISA
        - MASTERCARD
        - AMEX
        - DISCOVER
        - UNIONPAY
        - DINERS
        - INTERAC
        - UNKNOWN
    ApiskipthedishesCardType:
      type: string
      enum:
        - VISA
        - MASTERCARD
        - AMEX
        - DISCOVER
        - UNIONPAY
        - DINERS
        - UNKNOWN
    ApiskipthedishesCartDetailsProd:
      type: object
      properties:
        canInstantAdd:
          type: boolean
        menuV1OptionInfo:
          $ref: '#/components/schemas/ApiskipthedishesMenuV1OptionInfo'
    ApiskipthedishesCartDetailsV1:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        cartId:
          type: string
        restaurantId:
          type: string
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesLineItem'
        subtotal:
          type: integer
        total:
          type: integer
        deliveryFee:
          type: integer
          nullable: true
        tip:
          type: integer
          nullable: true
        taxes:
          type: object
          additionalProperties:
            type: integer
        messages:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesCustomerMessage'
    ApiskipthedishesCartDetailsV3:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        cartId:
          type: string
        restaurantId:
          type: string
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesLineItem'
        subtotal:
          type: integer
        total:
          type: integer
        deliveryFee:
          type: integer
          nullable: true
        tip:
          type: integer
          nullable: true
        taxes:
          type: object
          additionalProperties:
            type: integer
        messages:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesCustomerMessage'
          nullable: true
    ApiskipthedishesCategory:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        productCount:
          type: integer
        productsPreview:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesProduct'
    ApiskipthedishesCategoryList:
      type: object
      properties:
        categories:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesCategory'
    ApiskipthedishesChangePassword:
      type: object
      required:
        - currentPassword
        - newPassword
      properties:
        currentPassword:
          type: string
          format: password
        newPassword:
          type: string
          format: password
    ApiskipthedishesChangePasswordResponse:
      type: object
      properties:
        success:
          type: boolean
        message:
          type: string
          nullable: true
    ApiskipthedishesCheckoutOrderInformation:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        name:
          type: string
        phoneNumber:
          type: string
        email:
          type: string
          format: email
        specialInstructions:
          type: string
          nullable: true
        paymentType:
          $ref: '#/components/schemas/ApiskipthedishesPaymentType'
        creditCardId:
          type: string
          nullable: true
    ApiskipthedishesCheckoutPreparation:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        clientSecret:
          type: string
          nullable: true
        paymentIntentId:
          type: string
          nullable: true
    ApiskipthedishesCheckoutStage:
      type: string
      enum:
        - PRE_CHECKOUT
        - INITIAL_CHECKOUT
        - POST_INITIAL_CHECKOUT
    ApiskipthedishesCombinedReviewsWithRestoReview:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        courierReview:
          type: object
          nullable: true
        restaurantReview:
          type: object
          nullable: true
    ApiskipthedishesContactTime:
      type: string
      enum:
        - MORNINGS
        - AFTERNOONS
        - EVENINGS
    ApiskipthedishesCourierReviewStatus:
      type: object
      properties:
        courierSubmittedReviewDetails:
          $ref: '#/components/schemas/ApiskipthedishesSubmittedReview'
        courierTags:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        courierTagResources:
          type: object
          additionalProperties:
            type: string
        courierReviewSubmitted:
          type: boolean
        courierReviewScore:
          $ref: '#/components/schemas/ApiskipthedishesReviewScore'
    ApiskipthedishesCreateAddress:
      type: object
      required:
        - address1
        - city
        - province
        - postalCode
      properties:
        address1:
          type: string
        city:
          type: string
        province:
          type: string
        postalCode:
          type: string
        specialInstructions:
          type: string
          nullable: true
        curbSpecialInstructions:
          type: string
          nullable: true
        preferredDeliveryMethod:
          $ref: '#/components/schemas/ApiskipthedishesDeliveryMethod'
        address:
          type: string
          nullable: true
        latitude:
          type: number
          format: double
          nullable: true
        longitude:
          type: number
          format: double
          nullable: true
        accuracy:
          $ref: '#/components/schemas/ApiskipthedishesAccuracy'
        useLatLongAddress:
          type: boolean
          nullable: true
    ApiskipthedishesCreateApplicant:
      type: object
      properties:
        personalInformation:
          $ref: '#/components/schemas/ApiskipthedishesCreateApplicantPersonalInformation'
        shiftInformation:
          $ref: '#/components/schemas/ApiskipthedishesShiftInformation'
        workInformation:
          $ref: '#/components/schemas/ApiskipthedishesWorkInformation'
        hearAboutUs:
          type: array
          items:
            type: string
          uniqueItems: true
        stage:
          $ref: '#/components/schemas/ApiskipthedishesStageEnum'
        redirectSource:
          $ref: '#/components/schemas/ApiskipthedishesRedirectSourceType'
    ApiskipthedishesCreateApplicantPersonalInformation:
      type: object
      required:
        - firstName
        - lastName
        - phone
        - email
        - city
        - province
        - country
        - postalCode
        - timezone
      properties:
        firstName:
          type: string
        lastName:
          type: string
        phone:
          type: string
        email:
          type: string
          format: email
        city:
          type: string
        startingAddress:
          type: string
          nullable: true
        startingLat:
          type: number
          format: double
          nullable: true
        startingLong:
          type: number
          format: double
          nullable: true
        province:
          type: string
        country:
          type: string
        postalCode:
          type: string
        timezone:
          type: string
    ApiskipthedishesCreateCart:
      type: object
      properties:
        type:
          type: string
        requestedTime:
          type: integer
          format: int64
          nullable: true
        address:
          type: string
          nullable: true
        latitude:
          type: number
          format: double
          nullable: true
        longitude:
          type: number
          format: double
          nullable: true
        accuracy:
          $ref: '#/components/schemas/ApiskipthedishesAccuracy'
        customerId:
          type: string
          nullable: true
        tip:
          type: integer
          nullable: true
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesLineItemBase'
          nullable: true
        referralCode:
          type: string
          nullable: true
        addressId:
          type: string
          nullable: true
    ApiskipthedishesCreateCustomer:
      type: object
      required:
        - name
        - email
        - phoneNumber
        - password
      properties:
        name:
          type: string
        email:
          type: string
          format: email
        phoneNumber:
          type: string
        password:
          type: string
          format: password
        customerReferralCode:
          type: string
          nullable: true
        preferredLocale:
          type: string
          nullable: true
        recaptcha:
          $ref: '#/components/schemas/ApiskipthedishesRecaptcha'
        deviceId:
          type: string
          nullable: true
    ApiskipthedishesCreateSocialCustomer:
      type: object
      required:
        - name
        - phoneNumber
      properties:
        name:
          type: string
        phoneNumber:
          type: string
        customerReferralCode:
          type: string
          nullable: true
        provider:
          type: string
          nullable: true
        idToken:
          type: string
          nullable: true
        code:
          type: string
          nullable: true
        deviceId:
          type: string
          nullable: true
        email:
          type: string
          format: email
          nullable: true
        facebookId:
          type: string
          nullable: true
        googleplusId:
          type: string
          nullable: true
        amazonId:
          type: string
          nullable: true
        appleIdToken:
          type: string
          nullable: true
    ApiskipthedishesCreatedByGiftCardCustomer:
      type: object
      x-assumption: Fields not fully mapped from source
      properties:
        customerId:
          type: string
        name:
          type: string
    ApiskipthedishesCreditCardInformation:
      type: object
      properties:
        id:
          type: string
        with3D:
          type: boolean
        cardType:
          type: string
        expiryMonth:
          type: integer
        expiryYear:
          type: integer
        cardNumber:
          type: string
        cvd:
          type: string
        httpAccept:
          type: string
          nullable: true
        httpUserAgent:
          type: string
          nullable: true
        url:
          type: string
          nullable: true
    ApiskipthedishesCustomLineItem:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        price:
          type: integer
        priceCategory:
          type: string
    ApiskipthedishesCustomer:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
          format: email
        name:
          type: string
        phoneNumber:
          type: string
        referralCode:
          type: string
          nullable: true
        creditBalanceCents:
          type: integer
        defaultAddressId:
          type: string
          nullable: true
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesAddress'
        creditCards:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesV3CreditCard'
        preferredLocale:
          type: string
          nullable: true
    ApiskipthedishesCustomerAndToken:
      type: object
      properties:
        customer:
          $ref: '#/components/schemas/ApiskipthedishesCustomer'
        token:
          type: string
    ApiskipthedishesCustomerAndTokenV2:
      type: object
      properties:
        customer:
          $ref: '#/components/schemas/ApiskipthedishesCustomer'
        token:
          type: string
    ApiskipthedishesCustomerDateOfBirth:
      type: object
      properties:
        dateOfBirth:
          type: string
          format: date
    ApiskipthedishesCustomerIdAndLocale:
      type: object
      properties:
        id:
          type: string
        preferredLocale:
          type: string
          nullable: true
    ApiskipthedishesCustomerIdAndName:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
          nullable: true
    ApiskipthedishesCustomerIdAndToken:
      type: object
      properties:
        id:
          type: string
        token:
          type: string
    ApiskipthedishesCustomerMessage:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ApiskipthedishesCustomerMessageType'
        text:
          type: string
          nullable: true
          deprecated: true
        content:
          $ref: '#/components/schemas/ApiskipthedishesCustomerMessageContent'
        params:
          type: object
          additionalProperties: true
    ApiskipthedishesCustomerMessageContent:
      type: string
      enum:
        - SUGGEST_BUNDLE
        - REMOVE_MENU_ITEM
        - REMOVE_MENU_ITEM_INVALID_OPTIONS
        - REMOVE_MENU_ITEM_OPTION
        - AMOUNT_RESTRICTIONS
        - STACKED_ALCOHOL_RESTRICTION
    ApiskipthedishesCustomerMessageType:
      type: string
      enum:
        - Suggestion
        - Warning
    ApiskipthedishesCustomerType:
      type: string
      enum:
        - DISCOUNTED
        - REGULAR
    ApiskipthedishesDayOfWeekConstraint:
      type: object
      properties:
        allowMonday:
          type: boolean
        allowTuesday:
          type: boolean
        allowWednesday:
          type: boolean
        allowThursday:
          type: boolean
        allowFriday:
          type: boolean
        allowSaturday:
          type: boolean
        allowSunday:
          type: boolean
    ApiskipthedishesDebitInformation:
      type: object
      properties:
        id:
          type: string
        returnUrl:
          type: string
    ApiskipthedishesDeliveryFee:
      type: object
      properties:
        feeCents:
          type: integer
        orderMinimumCents:
          type: integer
        pass:
          type: string
          nullable: true
    ApiskipthedishesDeliveryMethod:
      type: string
      enum:
        - CURB
        - DOOR
    ApiskipthedishesDeliveryStatus:
      type: string
      enum:
        - MANUALLY_ASSIGNED
        - UNASSIGNED
        - ASSIGNED
        - ACCEPTED
        - IN_TRANSIT_RESTAURANT
        - ARRIVED_RESTAURANT
        - COLLECTED
        - IN_TRANSIT_CUSTOMER
        - ARRIVED_CUSTOMER
        - DELIVERED
        - CANCELLED
        - REJECTED
    ApiskipthedishesDeliverySummary:
      type: object
      properties:
        deliveryId:
          type: string
        orderId:
          type: string
        collectAssignedTime:
          type: integer
          format: int64
          nullable: true
        assignedCourier:
          $ref: '#/components/schemas/ApiskipthedishesAssignedCourier'
        collectEstimatedTime:
          type: integer
          format: int64
          nullable: true
        deliverEstimatedTime:
          type: integer
          format: int64
          nullable: true
        courierConfirmedTime:
          type: integer
          format: int64
          nullable: true
        collectInTransitTime:
          type: integer
          format: int64
          nullable: true
        collectArrivedTime:
          type: integer
          format: int64
          nullable: true
        collectCompletedTime:
          type: integer
          format: int64
          nullable: true
    ApiskipthedishesDetailedPayment:
      type: object
      properties:
        collectRestaurant:
          type: integer
        collectCustomer:
          type: integer
    ApiskipthedishesDetailedTax:
      type: object
      properties:
        orderTax:
          type: object
          additionalProperties:
            type: integer
        deliveryFeeTax:
          type: object
          additionalProperties:
            type: integer
    ApiskipthedishesDeviceInformation:
      type: object
      required:
        - deviceType
      properties:
        deviceType:
          type: string
        deviceId:
          type: string
          nullable: true
        deviceModel:
          type: string
          nullable: true
        appVersion:
          type: string
          nullable: true
        deviceOS:
          type: string
          nullable: true
        userAgent:
          type: string
          nullable: true
    ApiskipthedishesEmailGiftCard:
      type: object
      required:
        - emailedTo
      properties:
        emailedTo:
          type: string
          format: email
        message:
          type: string
          nullable: true
        preferredLocale:
          type: string
          nullable: true
    ApiskipthedishesEmailReferrals:
      type: object
      properties:
        emails:
          type: array
          items:
            type: string
            format: email
    ApiskipthedishesErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error code
        message:
          type: string
          description: Human-readable error message
        status:
          type: integer
          description: HTTP status code
        timestamp:
          type: integer
          format: int64
          description: Timestamp when error occurred
    ApiskipthedishesExistingCourierContract:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        exists:
          type: boolean
        courierId:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
    ApiskipthedishesGeocodeType:
      type: string
      enum:
        - MATCHED
        - UNMATCHED
        - UNMATCHED_UNVERIFIED
        - BAD
        - UNKNOWN
    ApiskipthedishesGiftCardStatus:
      type: string
      enum:
        - AWAITING_PAYMENT
        - PENDING
        - CANCELLED
        - REDEEMED
    ApiskipthedishesGraphiteConfigDto:
      type: object
      properties:
        url:
          type: string
        port:
          type: integer
    ApiskipthedishesGraphiteConfigsDto:
      type: object
      properties:
        configs:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesGraphiteConfigDto'
    ApiskipthedishesGroupBy:
      type: object
      properties:
        id:
          type: string
        option:
          type: string
    ApiskipthedishesIdResponse:
      type: object
      properties:
        id:
          type: string
    ApiskipthedishesItemPricingResponse:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        items:
          type: array
          items:
            type: object
    ApiskipthedishesLastOrderWithReviewStatus:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        order:
          $ref: '#/components/schemas/ApiskipthedishesOrderDetailsSummary'
        reviewStatus:
          $ref: '#/components/schemas/ApiskipthedishesCourierReviewStatus'
    ApiskipthedishesLeanGiftCard:
      type: object
      properties:
        id:
          type: string
        createdByCustomer:
          $ref: '#/components/schemas/ApiskipthedishesCreatedByGiftCardCustomer'
        redeemedByCustomer:
          $ref: '#/components/schemas/ApiskipthedishesRedeemedByGiftCardCustomer'
        emailedTo:
          type: string
          nullable: true
        emailedToMessage:
          type: string
          nullable: true
        payments:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesLeanGiftCardPayment'
        paymentStatus:
          $ref: '#/components/schemas/ApiskipthedishesPaymentStatus'
        orderId:
          type: string
          nullable: true
        redeemedTime:
          type: integer
          format: int64
          nullable: true
        amount:
          type: integer
        createdTime:
          type: integer
          format: int64
        status:
          $ref: '#/components/schemas/ApiskipthedishesGiftCardStatus'
        preferredLocale:
          type: string
    ApiskipthedishesLeanGiftCardPayment:
      type: object
      x-assumption: Fields not fully mapped from source
      properties:
        id:
          type: string
        amount:
          type: integer
    ApiskipthedishesLeanGiftCards:
      type: object
      properties:
        giftCards:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesLeanGiftCard'
    ApiskipthedishesLineItem:
      type: object
      properties:
        id:
          type: string
        menuItemId:
          type: string
        quantity:
          type: integer
        specialInstructions:
          type: string
          nullable: true
        options:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesLineItemOption'
          nullable: true
        priceCategory:
          type: string
          nullable: true
        name:
          type: string
        subtotal:
          type: integer
        totalDiscounts:
          type: integer
        total:
          type: integer
        priceEach:
          type: integer
    ApiskipthedishesLineItemBase:
      type: object
      properties:
        menuItemId:
          type: string
        quantity:
          type: integer
        specialInstructions:
          type: string
          nullable: true
        options:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesLineItemOption'
          nullable: true
        priceCategory:
          type: string
          nullable: true
    ApiskipthedishesLineItemOption:
      type: object
      properties:
        optionGroup:
          type: string
        optionItem:
          type: string
        quantity:
          type: integer
        priceCategory:
          type: string
          nullable: true
        priceEach:
          type: integer
          nullable: true
    ApiskipthedishesLogin:
      type: object
      required:
        - email
        - password
      properties:
        email:
          type: string
          format: email
        password:
          type: string
          format: password
        customerReferralCode:
          type: string
          nullable: true
        recaptcha:
          $ref: '#/components/schemas/ApiskipthedishesRecaptcha'
        deviceId:
          type: string
          nullable: true
    ApiskipthedishesMenu:
      type: object
      properties:
        restaurantId:
          type: string
        timeZone:
          type: string
        menuGroups:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesMenuGroup'
        pricingStrategies:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesPricingStrategy'
        rootCategories:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesRootCategory'
    ApiskipthedishesMenuGroup:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
          nullable: true
        timeConstraint:
          $ref: '#/components/schemas/ApiskipthedishesTimeOfDayConstraint'
        dayConstraint:
          $ref: '#/components/schemas/ApiskipthedishesDayOfWeekConstraint'
        allowPickup:
          type: boolean
        allowDelivery:
          type: boolean
        menuItems:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesMenuItem'
    ApiskipthedishesMenuItem:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
          nullable: true
        centsPrice:
          type: integer
        tags:
          type: array
          items:
            type: string
        options:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesMenuItemOptionGroup'
        priceCategory:
          type: string
          nullable: true
        available:
          type: boolean
        nextAvailability:
          type: integer
          format: int64
          nullable: true
        imageUrl:
          type: string
          nullable: true
        mediumImageUrl:
          type: string
          nullable: true
        smallImageUrl:
          type: string
          nullable: true
        isPrimary:
          type: boolean
        upc:
          type: string
          nullable: true
        unitMeasure:
          type: string
          nullable: true
        deliveryPriceBeforeDiscount:
          type: integer
          nullable: true
    ApiskipthedishesMenuItemOption:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
          nullable: true
        centsPriceModifier:
          type: integer
        priceCategory:
          type: string
          nullable: true
        available:
          type: boolean
        removed:
          type: boolean
          nullable: true
        clientOptionId:
          type: string
          nullable: true
        nextAvailability:
          type: integer
          format: int64
          nullable: true
        upc:
          type: string
          nullable: true
        deliveryPriceBeforeDiscount:
          type: integer
          nullable: true
    ApiskipthedishesMenuItemOptionGroup:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
          nullable: true
        minimum:
          type: integer
        maximum:
          type: integer
        maximumEach:
          type: integer
        options:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesMenuItemOption'
        selected:
          type: boolean
    ApiskipthedishesMenuV1OptionInfo:
      type: object
      properties:
        optionGroupName:
          type: string
        optionName:
          type: string
    ApiskipthedishesMobileInstall:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        deviceId:
          type: string
        deviceType:
          type: string
        appVersion:
          type: string
    ApiskipthedishesModifiedUser:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
          description: User type (COURIER or CUSTOMER)
    ApiskipthedishesModifiedUserType:
      type: string
      enum:
        - CUSTOMER
        - RESTAURANT
        - COURIER
        - ADMIN
        - UNKNOWN
        - SYSTEM
    ApiskipthedishesNestingGroup:
      type: object
      properties:
        id:
          type: string
        item:
          type: string
        variable:
          type: string
        price:
          type: integer
    ApiskipthedishesOffer:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        discountAmount:
          type: integer
        origin:
          type: string
        points:
          type: integer
          nullable: true
        offerType:
          $ref: '#/components/schemas/ApiskipthedishesOfferType'
    ApiskipthedishesOfferType:
      type: string
      enum:
        - FLAT_DISCOUNT
        - FREE_DELIVERY
        - REWARDS_BONUS_POINTS
        - FREE_ITEM
        - BUY_ONE_GET_ONE
    ApiskipthedishesOrderAndCart:
      type: object
      properties:
        order:
          $ref: '#/components/schemas/ApiskipthedishesOrderDetails'
        cart:
          $ref: '#/components/schemas/ApiskipthedishesCartDetailsV3'
    ApiskipthedishesOrderAndRewardsDetails:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        rewards:
          type: object
          nullable: true
    ApiskipthedishesOrderDetails:
      type: object
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        orderInformation:
          $ref: '#/components/schemas/ApiskipthedishesOrderInformation'
        payments:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesPayment'
        restaurantId:
          type: string
        type:
          $ref: '#/components/schemas/ApiskipthedishesOrderType'
        requestedTime:
          type: integer
          format: int64
          nullable: true
        centsTotal:
          type: integer
        createdTime:
          type: integer
          format: int64
        orderStatus:
          $ref: '#/components/schemas/ApiskipthedishesOrderStatus'
        acceptedTime:
          type: integer
          format: int64
          nullable: true
        acceptedAt:
          type: integer
          format: int64
          nullable: true
        restaurantName:
          type: string
        timezone:
          type: string
        method:
          $ref: '#/components/schemas/ApiskipthedishesOrderMethod'
        restaurant:
          $ref: '#/components/schemas/ApiskipthedishesOrderRestaurant'
        modifiedUser:
          $ref: '#/components/schemas/ApiskipthedishesOrderModifiedUser'
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesLineItem'
        customLineItems:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesCustomLineItem'
        centsSubtotal:
          type: integer
        availableCredits:
          type: integer
          nullable: true
        deliveryFee:
          type: integer
          nullable: true
        taxes:
          type: object
          additionalProperties:
            type: integer
          nullable: true
        tip:
          type: integer
          nullable: true
        detailedTax:
          $ref: '#/components/schemas/ApiskipthedishesDetailedTax'
        detailedPayment:
          $ref: '#/components/schemas/ApiskipthedishesDetailedPayment'
        subsidies:
          $ref: '#/components/schemas/ApiskipthedishesSubsidies'
        offers:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesCalculatedOffer'
    ApiskipthedishesOrderDetailsSummary:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        status:
          $ref: '#/components/schemas/ApiskipthedishesOrderStatus'
        restaurantName:
          type: string
        total:
          type: integer
    ApiskipthedishesOrderInformation:
      type: object
      properties:
        name:
          type: string
        phoneNumber:
          type: string
        email:
          type: string
          format: email
        specialInstructions:
          type: string
          nullable: true
        streetAddress1:
          type: string
          nullable: true
        streetAddress2:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        province:
          type: string
          nullable: true
        postalCode:
          type: string
          nullable: true
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
        customerId:
          type: string
        accuracy:
          $ref: '#/components/schemas/ApiskipthedishesAccuracy'
        addressId:
          type: string
          nullable: true
        ipAddress:
          type: string
          nullable: true
        useLatLongAddress:
          type: boolean
          nullable: true
        notificationPreferences:
          $ref: '#/components/schemas/ApiskipthedishesOrderNotificationPreferences'
    ApiskipthedishesOrderMethod:
      type: string
      enum:
        - ONLINE
        - CALL_IN
    ApiskipthedishesOrderModifiedUser:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          $ref: '#/components/schemas/ApiskipthedishesModifiedUserType'
        time:
          type: integer
          format: int64
    ApiskipthedishesOrderNotificationPreferences:
      type: object
      properties:
        receiveEmailUpdates:
          type: boolean
        receiveSmsUpdates:
          type: boolean
    ApiskipthedishesOrderRestaurant:
      type: object
      properties:
        restaurantId:
          type: string
        restaurantName:
          type: string
        timezone:
          type: string
        country:
          type: string
        currency:
          type: string
    ApiskipthedishesOrderStatus:
      type: string
      enum:
        - PENDING
        - ACCEPTED
        - CANCELLED
        - REJECTED
        - COMPLETED
        - AWAITING_PAYMENT
    ApiskipthedishesOrderTracker:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        status:
          type: string
        courier:
          $ref: '#/components/schemas/ApiskipthedishesPublicCourier'
        estimatedTime:
          type: integer
          format: int64
          nullable: true
    ApiskipthedishesOrderTrackerFinal:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        status:
          type: string
        courier:
          $ref: '#/components/schemas/ApiskipthedishesPublicCourier'
        deliverySummary:
          $ref: '#/components/schemas/ApiskipthedishesPublicDeliverySummary'
    ApiskipthedishesOrderType:
      type: string
      enum:
        - DELIVERY
        - PICKUP
        - UNKNOWN
    ApiskipthedishesOrigin:
      type: string
      enum:
        - RETENTION_CREDITS
        - BRAZE
        - REWARDS
        - RESTAURANT_FUNDED_OFFER
        - RFB
        - PARTNER_SELF_SERVE
    ApiskipthedishesOutboundPopularItemList:
      type: object
      x-assumption: Fields not fully mapped from source
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesReducedMenuItem'
    ApiskipthedishesPkceChallenge:
      type: object
      properties:
        codeChallenge:
          type: string
        codeChallengeMethod:
          type: string
    ApiskipthedishesPnvType:
      type: string
      enum:
        - PAYMENT
        - FTU
        - LOGIN
    ApiskipthedishesPartnerAuthCodeLinking:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        authCode:
          type: string
        codeVerifier:
          type: string
          nullable: true
    ApiskipthedishesPartnerServiceFeeModelQueryResult:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        serviceFeeModels:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesServiceFeeModelDto'
    ApiskipthedishesPayment:
      type: object
      properties:
        id:
          type: string
        paymentType:
          $ref: '#/components/schemas/ApiskipthedishesPaymentType'
        creditCard:
          $ref: '#/components/schemas/ApiskipthedishesCreditCardInformation'
        debit:
          $ref: '#/components/schemas/ApiskipthedishesDebitInformation'
        amount:
          type: integer
        corporateNumber:
          type: string
          nullable: true
        paymentStatus:
          $ref: '#/components/schemas/ApiskipthedishesPaymentStatus'
        processedTime:
          type: integer
          format: int64
        transactionInformation:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesTransactionInformation'
        maskedCreditCardNumber:
          type: string
          nullable: true
        cryptType:
          type: string
          nullable: true
    ApiskipthedishesPaymentStatus:
      type: string
      enum:
        - PENDING
        - COMPLETED
        - FAILED
        - CANCELLED
        - AUTHORIZED
    ApiskipthedishesPaymentTokenType:
      type: string
      enum:
        - STRIPE
        - ADYEN
    ApiskipthedishesPaymentType:
      type: string
      enum:
        - CASH
        - INTERAC_ONLINE
        - CREDIT_CARD
        - CORPORATE
        - PREPAID
        - SKIP_CREDIT
        - SKIP_PAID
    ApiskipthedishesPhoneDto:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ApiskipthedishesPhoneType'
        description:
          type: string
          nullable: true
    ApiskipthedishesPhoneType:
      type: string
      enum:
        - ANDROID
        - IOS
        - OTHER
    ApiskipthedishesPhoneVerificationMethod:
      type: string
      enum:
        - VOICE
        - SMS
    ApiskipthedishesPrepareCheckout:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        paymentType:
          $ref: '#/components/schemas/ApiskipthedishesPaymentType'
        creditCardId:
          type: string
          nullable: true
    ApiskipthedishesPricingStrategy:
      type: object
      properties:
        id:
          type: string
    ApiskipthedishesProduct:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
          nullable: true
        imageUrl:
          $ref: '#/components/schemas/ApiskipthedishesProductImageUrl'
        price:
          type: integer
        available:
          type: boolean
        crossout:
          type: integer
          nullable: true
        scalar:
          type: string
          nullable: true
        cartDetails:
          $ref: '#/components/schemas/ApiskipthedishesCartDetailsProd'
    ApiskipthedishesProductImageUrl:
      type: object
      properties:
        large:
          type: string
          nullable: true
        medium:
          type: string
          nullable: true
        small:
          type: string
          nullable: true
    ApiskipthedishesProductList:
      type: object
      properties:
        products:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesProduct'
    ApiskipthedishesPublicCourier:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        totalDeliveries:
          type: integer
        joinDate:
          type: integer
          format: int64
        location:
          $ref: '#/components/schemas/ApiskipthedishesPublicCourierLocation'
        jobs:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesPublicCourierJob'
    ApiskipthedishesPublicCourierJob:
      type: object
      properties:
        orderNumber:
          type: integer
        jobType:
          type: string
        status:
          type: string
        updatedTime:
          type: integer
          format: int64
        address:
          $ref: '#/components/schemas/ApiskipthedishesPublicCourierLocation'
        isWaiting:
          type: boolean
    ApiskipthedishesPublicCourierLocation:
      type: object
      properties:
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
    ApiskipthedishesPublicDeliverySummary:
      type: object
      properties:
        deliveryId:
          type: string
        orderId:
          type: string
        collectAssignedTime:
          type: integer
          format: int64
          nullable: true
        assignedCourier:
          $ref: '#/components/schemas/ApiskipthedishesAssignedCourier'
        collectEstimatedTime:
          type: integer
          format: int64
          nullable: true
        deliverEstimatedTime:
          type: integer
          format: int64
          nullable: true
        courierConfirmedTime:
          type: integer
          format: int64
          nullable: true
        collectInTransitTime:
          type: integer
          format: int64
          nullable: true
        collectArrivedTime:
          type: integer
          format: int64
          nullable: true
        collectCompletedTime:
          type: integer
          format: int64
          nullable: true
    ApiskipthedishesPublicOrderTracker:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        orderId:
          type: string
        orderNumber:
          type: integer
        status:
          type: string
        courier:
          $ref: '#/components/schemas/ApiskipthedishesPublicCourier'
        restaurant:
          type: object
        customer:
          type: object
    ApiskipthedishesPusherAuth:
      type: object
      properties:
        socket_id:
          type: string
        channel_name:
          type: string
    ApiskipthedishesRecaptcha:
      type: object
      properties:
        response:
          type: string
        type:
          type: string
          x-assumption: RecaptchaType enum values not fully mapped
    ApiskipthedishesRedeemedByGiftCardCustomer:
      type: object
      x-assumption: Fields not fully mapped from source
      properties:
        customerId:
          type: string
        name:
          type: string
    ApiskipthedishesRedirectSourceType:
      type: string
      enum:
        - GOOGLE_ADWORDS
    ApiskipthedishesReducedMenuGroup:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        groups:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesNestingGroup'
        menuItems:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesReducedMenuItem'
        timeConstraint:
          $ref: '#/components/schemas/ApiskipthedishesTimeOfDayConstraint'
        dayConstraint:
          $ref: '#/components/schemas/ApiskipthedishesDayOfWeekConstraint'
    ApiskipthedishesReducedMenuItem:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        centsPrice:
          type: integer
        description:
          type: string
        available:
          type: boolean
        imageUrl:
          type: string
          nullable: true
        mediumImageUrl:
          type: string
          nullable: true
        smallImageUrl:
          type: string
          nullable: true
        groupBy:
          $ref: '#/components/schemas/ApiskipthedishesGroupBy'
        isPrimary:
          type: boolean
        removed:
          type: boolean
          nullable: true
    ApiskipthedishesReducedMenuWithPopularItems:
      type: object
      properties:
        menuGroups:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesReducedMenuGroup'
        timeZone:
          type: string
        popularItems:
          $ref: '#/components/schemas/ApiskipthedishesOutboundPopularItemList'
    ApiskipthedishesReferralConfig:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        code:
          type: string
        amount:
          type: integer
        description:
          type: string
          nullable: true
    ApiskipthedishesRegisterPushToken:
      type: object
      properties:
        token:
          type: string
        deviceType:
          type: string
        deviceId:
          type: string
          nullable: true
    ApiskipthedishesRequestPasswordReset:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
    ApiskipthedishesResetPassword:
      type: object
      required:
        - token
        - password
      properties:
        token:
          type: string
        password:
          type: string
          format: password
    ApiskipthedishesRestaurantAndCart:
      type: object
      properties:
        restaurant:
          $ref: '#/components/schemas/ApiskipthedishesV1RestaurantWithMenu'
        cart:
          $ref: '#/components/schemas/ApiskipthedishesCartDetailsV3'
    ApiskipthedishesRestaurantContractQuery:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        restaurantId:
          type: string
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
    ApiskipthedishesRestaurantOfferUpdate:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        accepted:
          type: boolean
        specialInstructions:
          type: string
          nullable: true
    ApiskipthedishesRestaurantParams:
      type: object
      properties:
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
        type:
          type: string
          enum:
            - DELIVERY
            - PICKUP
        requestedTime:
          type: integer
          format: int64
          nullable: true
    ApiskipthedishesRestaurantWithMenu:
      type: object
      x-assumption: Schema structure simplified
      properties:
        restaurant:
          $ref: '#/components/schemas/ApiskipthedishesV1RestaurantWithMenu'
        menu:
          $ref: '#/components/schemas/ApiskipthedishesMenu'
    ApiskipthedishesReviewScore:
      type: string
      enum:
        - POSITIVE
        - NEGATIVE
        - OVERRULED
    ApiskipthedishesReviewStatusDto:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        submitted:
          type: boolean
        score:
          type: string
          nullable: true
    ApiskipthedishesRootCategory:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        children:
          type: array
          items:
            type: string
    ApiskipthedishesRoute:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        polyline:
          type: string
        distance:
          type: number
        duration:
          type: integer
    ApiskipthedishesSendPhoneNumberVerification:
      type: object
      properties:
        phoneNumber:
          type: string
        method:
          $ref: '#/components/schemas/ApiskipthedishesPhoneVerificationMethod'
        type:
          $ref: '#/components/schemas/ApiskipthedishesPnvType'
    ApiskipthedishesServiceFeeModelDto:
      type: object
      properties:
        customerTypeName:
          type: string
        feeFormat:
          type: string
        feeValue:
          type: integer
        feeMin:
          type: integer
          nullable: true
        feeMax:
          type: integer
          nullable: true
    ApiskipthedishesShiftInformation:
      type: object
      properties:
        validDriversLicense:
          type: boolean
          nullable: true
        reliableCar:
          type: boolean
          nullable: true
        carCharger:
          type: boolean
          nullable: true
        dataPlan:
          type: boolean
          nullable: true
        phoneType:
          $ref: '#/components/schemas/ApiskipthedishesPhoneDto'
    ApiskipthedishesSocialLogin:
      type: object
      required:
        - provider
      properties:
        provider:
          type: string
        socialId:
          type: string
          nullable: true
        accessToken:
          type: string
          nullable: true
        idToken:
          type: string
          nullable: true
        customerReferralCode:
          type: string
          nullable: true
        email:
          type: string
          format: email
          nullable: true
        deviceId:
          type: string
          nullable: true
        code:
          type: string
          nullable: true
    ApiskipthedishesSocialMerge:
      type: object
      required:
        - password
        - provider
      properties:
        password:
          type: string
          format: password
        provider:
          type: string
        idToken:
          type: string
          nullable: true
        code:
          type: string
          nullable: true
        customerReferralCode:
          type: string
          nullable: true
    ApiskipthedishesStageEnum:
      type: string
      enum:
        - APPLIED
        - SCREENING
        - CONTACT
        - ORIENTATION
        - BAGS_AND_DOCS
        - ACCOUNT_ACTIVATED
    ApiskipthedishesStringResponse:
      type: object
      properties:
        value:
          type: string
    ApiskipthedishesSubmitReview:
      type: object
      properties:
        score:
          $ref: '#/components/schemas/ApiskipthedishesReviewScore'
        tags:
          type: array
          items:
            type: string
          nullable: true
        comment:
          type: string
          nullable: true
    ApiskipthedishesSubmittedReview:
      type: object
      x-assumption: Fields not fully mapped from source
      properties:
        score:
          $ref: '#/components/schemas/ApiskipthedishesReviewScore'
        tags:
          type: array
          items:
            type: string
    ApiskipthedishesSubsidies:
      type: object
      properties:
        skipSubsidy:
          type: integer
        restaurantSubsidy:
          type: integer
    ApiskipthedishesTimeOfDayConstraint:
      type: object
      properties:
        startHour:
          type: integer
        startMinute:
          type: integer
        endHour:
          type: integer
        endMinute:
          type: integer
    ApiskipthedishesTimes:
      type: object
      properties:
        times:
          type: array
          items:
            type: integer
            format: int64
        timezone:
          type: string
    ApiskipthedishesTransactionInformation:
      type: object
      properties:
        transactionType:
          $ref: '#/components/schemas/ApiskipthedishesTransactionType'
        referenceNumber:
          type: string
        authCode:
          type: string
        responseCode:
          type: string
        isoCode:
          type: string
        message:
          type: string
        issuerName:
          type: string
          nullable: true
        issuerConfirmation:
          type: string
          nullable: true
    ApiskipthedishesTransactionType:
      type: string
      enum:
        - PREAUTH
        - COMPLETION
        - PURCHASE
        - REFUND
        - DEBIT
    ApiskipthedishesUpdateCartPaymentInfo:
      type: object
      properties:
        paymentType:
          $ref: '#/components/schemas/ApiskipthedishesPaymentType'
        cardNetwork:
          $ref: '#/components/schemas/ApiskipthedishesCardNetwork'
        creditCardBin:
          type: string
          nullable: true
    ApiskipthedishesV1AvailableTimes:
      type: object
      properties:
        times:
          type: array
          items:
            type: integer
            format: int64
        timezone:
          type: string
        hazardMessage:
          type: string
          nullable: true
    ApiskipthedishesV1HazardMessage:
      type: object
      properties:
        hazardMessage:
          type: string
          nullable: true
    ApiskipthedishesV1RestaurantWithMenu:
      type: object
      x-assumption: Schema structure simplified - full structure has 50+ fields
      properties:
        id:
          type: string
        name:
          type: string
        shortName:
          type: string
          nullable: true
        location:
          $ref: '#/components/schemas/ApiskipthedishesWebLocation'
        isDelco:
          type: boolean
        online:
          type: boolean
        cleanUrl:
          type: string
        skipScore:
          type: integer
          nullable: true
        cuisines:
          type: array
          items:
            type: string
        acceptsPickup:
          type: boolean
        menu:
          $ref: '#/components/schemas/ApiskipthedishesReducedMenuWithPopularItems'
    ApiskipthedishesV3Address:
      type: object
      properties:
        id:
          type: string
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        province:
          type: string
        postalCode:
          type: string
        specialInstructions:
          type: string
        curbSpecialInstructions:
          type: string
          nullable: true
        preferredDeliveryMethod:
          $ref: '#/components/schemas/ApiskipthedishesDeliveryMethod'
        address:
          type: string
          nullable: true
        latitude:
          type: number
          format: double
          nullable: true
        longitude:
          type: number
          format: double
          nullable: true
        accuracy:
          $ref: '#/components/schemas/ApiskipthedishesAccuracy'
        verifiedAccuracy:
          type: boolean
        geocodeType:
          $ref: '#/components/schemas/ApiskipthedishesGeocodeType'
        useLatLongAddress:
          type: boolean
        createdTime:
          type: integer
          format: int64
    ApiskipthedishesV3CardType:
      type: string
      enum:
        - VISA
        - MASTERCARD
        - AMEX
        - DISCOVER
        - UNIONPAY
        - DINERS
        - UNKNOWN
    ApiskipthedishesV3CreditCard:
      type: object
      properties:
        cardId:
          type: string
        token:
          type: string
        cardType:
          $ref: '#/components/schemas/ApiskipthedishesV3CardType'
        currency:
          type: string
        maskedNumber:
          type: string
        validated:
          type: boolean
        disabledDate:
          type: integer
          format: int64
          nullable: true
        createdTime:
          type: integer
          format: int64
    ApiskipthedishesValidateCart:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        customerId:
          type: string
          nullable: true
        addressId:
          type: string
          nullable: true
    ApiskipthedishesValidatedCustomer:
      type: object
      x-assumption: Schema structure not fully mapped from source
      properties:
        customerId:
          type: string
        email:
          type: string
          format: email
        valid:
          type: boolean
    ApiskipthedishesWebLocation:
      type: object
      properties:
        name:
          type: string
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
        address:
          type: string
        address1:
          type: string
          nullable: true
        city:
          type: string
        province:
          type: string
        country:
          type: string
        postalCode:
          type: string
    ApiskipthedishesWorkInformation:
      type: object
      properties:
        workType:
          type: string
          nullable: true
        availability:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesAvailability'
          uniqueItems: true
          nullable: true
        contactTime:
          type: array
          items:
            $ref: '#/components/schemas/ApiskipthedishesContactTime'
          uniqueItems: true
          nullable: true
    ApiskipthedishesXRayConfigDto:
      type: object
      properties:
        daemonAddress:
          type: string
          nullable: true
        maxSegmentSize:
          type: integer
          nullable: true
        owner:
          type: string
          nullable: true
    AttemptedDeliveryAttemptedDeliveryCreated:
      properties:
        Reason:
          description: The reason for creating the attempted delivery
          type: string
        OrderId:
          description: The id of the order
          type: string
        RestaurantId:
          description: The id of the restaurant
          type: number
        Tenant:
          description: The tenant associated with the order
          type: string
      type: object
      example:
        Reason: Customer did not answer the door
        OrderId: wiej234idf09i29jijgf4
        RestaurantId: 110230
        Tenant: uk
    AttemptedDeliveryAttemptedDeliveryResolved:
      type: object
      properties:
        Tenant:
          description: The tenant of the restaurant the order was placed at
          enum:
            - uk
            - dk
            - es
            - ie
            - it
            - 'no'
            - au
            - nz
          type: string
        Resolution:
          description: Details of the resolution to the query
          properties:
            Redelivery:
              description: The redelivery properties. Only required if the order is being redelivered, otherwise null
              properties:
                Status:
                  description: The current status of the order
                  enum:
                    - driver_at_address
                    - repreparing
                  type: string
                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
              type: object
            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
            Type:
              description: The type of resolution to the query, either cancellation or redelivery
              enum:
                - order_cancelled
                - redeliver_order
              type: string
          type: object
        OrderId:
          description: The ID of the order for which an attempted delivery query has been resolved
          type: string
      example:
        Tenant: uk
        Resolution:
          Redelivery:
            Status: repreparing
            CustomerTimeZone: Europe/London
            NewDueDate: '2018-03-10T14:45:28.0000000+00:00'
          Type: redeliver_order
        OrderId: wiej234idf09i29jijgf4
    AttemptedDeliveryAttemptedDeliveryResponseReceived:
      type: object
      properties:
        Tenant:
          type: string
          description: The tenant
        Update:
          type: string
          description: The update message
        OrderId:
          type: string
          description: The order Id
        Notes:
          type: string
          description: Additional delivery notes
      example:
        Tenant: uk
        Update: Please redeliver
        OrderId: wiej234idf09i29jijgf4
        Notes: Please press 123 on the door
    AudienceListsAudienceListResponse:
      description: Metadata for an audience list
      type: object
      required:
        - audienceListId
      properties:
        audienceListId:
          type: string
          description: The unique identifier of the audience list
          example: audienceList_a1b2c3d4-e5f6-7890-abcd-ef1234567890
        filename:
          type: string
          nullable: true
          description: The original filename of the uploaded CSV
          example: my-audience.csv
        createdAt:
          type: string
          nullable: true
          description: ISO 8601 timestamp of when the audience list record was created
          example: '2024-11-01T10:00:00Z'
        createdItemsCount:
          type: integer
          format: int64
          nullable: true
          description: |
            The number of global user IDs successfully written to the list. Only present once background processing has completed successfully. Absence of this field means the list is still being processed.
          example: 42000
        errorMessage:
          type: string
          nullable: true
          description: |
            Human-readable error message if background processing failed (e.g. duplicate user IDs). Null when processing succeeded or is still in progress.
          example: Duplicate global user IDs detected
    AudienceListsUploadAudienceListResponse:
      description: Response returned after successfully uploading an audience list CSV
      type: object
      required:
        - id
      properties:
        id:
          type: string
          description: |
            The unique identifier of the created audience list. Use this to poll `GET /voucher-audience-lists/{tenant}/{audienceListId}` for processing status, and to reference the audience list when creating a voucher program.
          example: audienceList_a1b2c3d4-e5f6-7890-abcd-ef1234567890
    AuthenticationserviceAuthorizationDenyRequest:
      description: A request to deny user authorization
      required:
        - returnUrl
      properties:
        returnUrl:
          type: string
          description: A return URL used by the front end to redirect the user
      example:
        returnUrl: https://mydomain.com?returnUrl=someinfo
    AuthenticationserviceAuthorizationDenyResponse:
      description: A response to user authorization denial request
      required:
        - validatedReturnUrl
      properties:
        validatedReturnUrl:
          type: string
          description: A validated URL used by the front end to redirect the user
      example:
        validatedReturnUrl: https://www.mydomain.com/AuthCodeFlow
    AuthenticationserviceConnectAuthorizeRequest:
      description: A request to initiate the Authentication Code flow
      required:
        - response_type
        - client_id
        - scope
        - redirect_uri
      properties:
        response_type:
          enum:
            - id_token
            - token
            - code
          type: string
          description: |-
            Determines the mechanism the server uses to authorize the creation of the tokens. The values can be combined to specify more than one token type.
            * `id_token` requests an identity token (only identity scopes are allowed)
            * `token` requests an access token (only resource scopes are allowed)
            * `code` requests an authorization code
            * `id_token token` token requests an identity token and an access token
            * `code id_token` requests an authorization code and identity token
            * `code id_token token` requests an authorization code, identity token and access token
        client_id:
          type: string
          description: The identifier of the client.
        scope:
          type: string
          enum:
            - openid
            - profile
            - offline_access
            - mobile_access
          description: |-
            One or more registered scopes to return. This can be the known values or custom scopes. This will typically be `openid`, to request the OpenID Connect scopes, and additionally `profile` when you require an identity token.
            `offline_access` is required if you require a refresh token in the subsequent token request.
        redirect_uri:
          type: string
          description: Must exactly match one of the allowed redirect URIs for that client.
        state:
          type: string
          description: The server will echo back the state value on the token response. This is for round-tripping state between client and provider, correlating request and response for CSRF/replay protection (recommended).
        code_challenge:
          type: string
          description: Sends the code challenge for PKCE.
        code_challenge_method:
          type: string
          enum:
            - plain
            - S256
          description: |-
            A method that was used to derive the code challenge for PKCE.
            * `plain` is the default if not specified. Indicates the code challenge is using plain text (not recommended).
            * `S256` indicates the challenge is hashed using SHA-256.
        acr_values:
          type: string
          description: Allows passing in additional authentication-related information.
        response_mode:
          type: string
          enum:
            - form_post
            - query
            - fragment
          description: |-
            Determines how the authorize response is returned.
            * `form_post` encodes the response as HTML form values.
            * `query` sends the response as part of the query string.
            * `fragment` encodes the response into a URL fragment.
        request:
          type: string
          description: Instead of providing all parameters as individual query string parameters, you can provide a subset, or all of them, as a JWT.
        request_uri:
          type: string
          description: URL of a pre-packaged JWT containing request parameters.
        nonce:
          type: string
          description: The API will echo back the nonce value in the identity token (this is for replay protection). Required for identity tokens via implicit grant.
        prompt:
          type: string
          enum:
            - 'null'
            - none
          description: |-
            * (empty/null) - use the default behaviour of showing the login UI.
            * `none` - no UI will be shown during the request. If this is not possible (e.g. because the user has to sign in or consent) an error is returned and the login UI will be shown, even if the user is already signed-in and has a valid session.
        login_hint:
          type: string
          description: Can be used to pre-fill the username field on the login page.
        ui_locales:
          type: string
          description: End-User's preferred languages and scripts for the user interface, represented as a space-separated list of language tag values, ordered by preference.
        max_age:
          type: integer
          description: If the user's logon session exceeds the maximum age (in seconds), the login UI will be shown.
      example:
        response_type: code
        client_id: client1
        scope: openid
        redirect_uri: https://myapp.com/signin-oidc
        state: 1234asd
        code_challenge: asdf879
        code_challenge_method: S256
        response_mode: query
        acr_values: tenant:uk
    AuthenticationserviceConsentContextResponse:
      description: The consent context for the current authorization session, including client metadata and requested scopes.
      required:
        - scope
      properties:
        id:
          type: string
          nullable: true
          description: The OAuth client identifier requesting access.
        name:
          type: string
          nullable: true
          description: The human-readable display name of the OAuth client.
        logo_url:
          type: string
          nullable: true
          description: The logo URL for the OAuth client. Null when no logo is configured.
        scope:
          type: array
          description: The list of scopes the client is requesting access to.
          items:
            type: object
            required:
              - name
              - description
            properties:
              name:
                type: string
                description: The scope identifier.
              description:
                type: string
                description: A fallback description for the scope. The UI uses its i18n translation map as the primary display source and falls back to this value when no translation key is found.
      example:
        id: external_client
        name: External Client Name
        logo_url: https://example.com/partner-logo.png
        scope:
          - name: profile
            description: Access to your name and profile information
          - name: email
            description: Your email address
          - name: offline_access
            description: Keep you signed in between sessions
    AuthenticationserviceConsentDecisionRequest:
      description: A request to submit a user's consent decision.
      required:
        - return_url
        - authorized_scopes
      properties:
        authorized_scopes:
          type: array
          items:
            type: string
          description: List containing the scope values for which the user has provided consent. If the list is empty, the user has denied consent for all scopes.
        return_url:
          type: string
          description: A return URL used by the front end to redirect the user.
      example:
        authorized_scopes:
          - profile
          - email
        return_url: /connect/authorize/callback?client_id=verification_test
    AuthenticationserviceConsentDecisionResponse:
      description: A response to a user submitting their consent decision.
      required:
        - validatedReturnUrl
      properties:
        validatedReturnUrl:
          type: string
          description: A validated URL used by the front end to redirect the user
      example:
        validatedReturnUrl: /connect/authorize/callback?client_id=verification_test
    AuthenticationserviceConsentDecisionUnauthorizedResponse:
      description: A response to a user submitting their consent decision without an authenticated session.
      required:
        - loginUrl
      properties:
        loginUrl:
          type: string
          description: The login page URL to return the user to in order to gain an authenticated session and re-attempt.
      example:
        loginUrl: https://auth.just-eat.com/account/login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback
    AuthenticationserviceDeviceCodeLookupRequest:
      description: A request to retrieve details about the device which initiated a device authorization request.
      required:
        - userCode
      properties:
        userCode:
          type: string
          description: User code for device authorization
      example:
        userCode: '936033565'
    AuthenticationserviceDeviceCodeLookupResponse:
      description: A response that contains details about the device that initiated a device authorization request.
      required:
        - deviceName
        - expiresAt
      properties:
        deviceName:
          type: string
          description: The name of the device associated with the user code
        expiresAt:
          format: date-time
          description: The user code expiration date and time in UTC (ISO 8601 format)
          type: string
      example:
        deviceName: WhatsApp
        expiresAt: '2025-03-15T16:20:05.567Z'
    AuthenticationserviceDeviceFlowSubmissionRequest:
      description: A request to validate a user code as part of an OAuth device authorization request
      required:
        - userCode
      properties:
        userCode:
          type: string
          description: User code for device authorization
      example:
        userCode: '936033565'
    AuthenticationserviceEndSessionBffRequest:
      description: A request to the BFF logout endpoint to end a user's session
      required:
        - idTokenHint
      properties:
        idTokenHint:
          type: string
          description: The identity token received from authentication
      example:
        idTokenHint: eyJraWQiO.ewogImlzcyI6IC.rHQjEmQ
    AuthenticationserviceEndSessionBffResponse:
      description: A response from the session end endpoint
      required:
        - returnUrl
      properties:
        returnUrl:
          type: string
          description: A return URL used by the front-end to redirect the user
      example:
        returnUrl: https://www.just-eat.co.uk
    AuthenticationserviceGetCustomerConsentsResponse:
      description: A list of OAuth client consents for the authenticated customer.
      type: object
      required:
        - data
      properties:
        data:
          type: array
          description: The consents granted by the customer. Empty array if none found.
          items:
            type: object
            required:
              - id
              - authorized_at
              - client
              - authorized_scopes
            properties:
              id:
                type: string
                description: The OAuth client identifier that has consent.
                example: my-client-id
              authorized_at:
                type: string
                format: date-time
                description: The date and time in UTC (ISO 8601 format) of when consent was granted.
                example: '2026-07-15T00:00:00Z'
              client:
                type: object
                required:
                  - name
                properties:
                  name:
                    type: string
                    description: The human-readable display name of the OAuth client.
                    example: Nice Name
                  logo_url:
                    type: string
                    nullable: true
                    description: The logo URL for the OAuth client. Null when no logo is configured.
                    example: https://xyz
              authorized_scopes:
                type: array
                description: The list of scopes the customer has consented to for the client.
                items:
                  type: object
                  required:
                    - name
                    - description
                  properties:
                    name:
                      type: string
                      description: The scope identifier.
                      example: scope:one
                    description:
                      type: string
                      description: A fallback description for the scope. The UI uses its i18n translation map as the primary display source and falls back to this value when no translation key is found.
                      example: Scope one description
    AuthenticationserviceRecaptchaStatusResponse:
      description: A response which defines the current requirements surrounding Recaptcha
      required:
        - recaptchaChallengeRequired
      properties:
        recaptchaChallengeRequired:
          type: boolean
          description: If clients need to send Recaptcha challenge tokens with requests.
        siteKey:
          type: string
          description: The public key that clients should use when trying to render the Recaptcha.
      example:
        recaptchaChallengeRequired: true
        siteKey: 6Lcl2P8nAAAAAK9rO7gLZW2Uc_HKsDwAcecd9UH1
    AuthenticationserviceRegistrationBffRequest:
      description: A request to the BFF identity registration endpoint to register a new user
      required:
        - firstName
        - lastName
        - phoneNumber
      properties:
        firstName:
          description: The consumer's first name.
          type: string
        lastName:
          description: The consumer's last name.
          type: string
        phoneNumber:
          description: The consumer's phone number in E164 format.
          type: string
        marketingOptIn:
          description: An updated value for the marketing consent.
          type: boolean
      example:
        firstName: James
        lastName: Bond
        phoneNumber: '+441234567890'
        marketingOptIn: true
    AuthenticationserviceRegistrationBffResponse:
      description: A response to the BFF identity registration endpoint to register a new user
      required:
        - validatedReturnUrl
      properties:
        validatedReturnUrl:
          type: string
          description: A validated URL used by the front end to redirect the user
          format: uri
      example:
        validatedReturnUrl: https://www.mydomain.com/AuthCodeFlow
    AuthenticationserviceValidateOtacResponse:
      description: A response to validate a consumer's one time access code (OTAC)
      required:
        - validatedReturnUrl
      properties:
        validatedReturnUrl:
          type: string
          description: A validated URL used by the front end to redirect the user, containing the OTAC.
      example:
        validatedReturnUrl: /connect/authorize/callback?redirect_uri=client&otac=639872722
    AuthenticationserviceValidateOtpCredentialsRequest:
      description: A request to validate a consumer's one time password (OTP) credentials
      required:
        - otp
        - otpToken
      properties:
        otp:
          type: string
          description: The one time password sent to the consumer
        otpToken:
          type: string
          description: The one time password token
        returnUrl:
          type: string
          description: The return URL from the request parameters
      example:
        otp: 96437B
        otpToken: J5hXQVVFsiR3vs_OQD_AxyZ
        returnUrl: https://mydomain.com?returnUrl=someinfo
    AuthenticationserviceValidateOtpCredentialsSuccessResponse:
      description: A response to validate a consumer's one time password (OTP) credentials
      required:
        - validatedReturnUrl
      properties:
        validatedReturnUrl:
          type: string
          description: A validated URL used by the front end to redirect the user
      example:
        validatedReturnUrl: https://www.mydomain.com/AuthCodeFlow
    AuthenticationserviceValidatePasswordCredentialsForbidden:
      description: A response to validate a consumer's password credential when additional credentials are required
      required:
        - validatedReturnUrl
        - otpToken
        - emailAddress
      properties:
        validatedReturnUrl:
          type: string
          description: A validated URL used by the front end to redirect the user once the OTP process is complete.
        otpToken:
          type: string
          description: A one time password token passed to the OTP page.
        emailAddress:
          type: string
          description: The email address the one time password email was sent to, displayed on the OTP Page.
      example:
        otpToken: AA1AA1_###!!
        emailAddress: happy_consumer@je_test.com
        validatedReturnUrl: http://www.mydomain.com/AuthCodeFlow
    AuthenticationserviceValidatePasswordCredentialsRequest:
      description: A request to validate a consumer's password credential
      required:
        - username
        - password
      properties:
        username:
          type: string
          description: Username used to select the correct consumer credentials
        password:
          type: string
          description: Password credential
        returnUrl:
          type: string
          description: The return URL from the request parameters
        gRecaptchaResponse:
          type: string
          description: Optional token response after the user has successfully filled out a Google Recaptcha.
      example:
        username: james.smith@adomain.com
        password: secretInfo
        returnUrl: https://mydomain.com?returnUrl=someinfo
        gRecaptchaResponse: 03AFcWeA7FoKR5fX8LFWdT8Vs0mlIsN7ilAt0sfTKCXriZIa3KcVaQN8hnlcXhjC3YncbA5UJy6KlpfzXMJjUSHrVPMbGQ600sgxIPLXKu68u1clUbgQ8cXhccNDSFQdPt5FIjZ0i04te8KqTmmyc8PObEXlQAdoKCFxc5tAu7vS8hb5sbyNtLaNB7XGGerKZCEPkAnmCKA8Xbc9e46q4j0NxVU8UA_QQPwepx49bNmdT4xYGNl1cQVOeMSTPkF3XmmRujCrnJfZjqL9vKcUdWVpovdlXfTsjwR2DgpdHTEUyFuTuCWCsoeeF76diCwHk1_FODnEk1pNZaNDoi_tsbyYJK265jSEVMFiRzv7hsc2i10t9FdzX2Wu4tYTEg0YdbMFo7aMYVFHDglLCXyWWYIFDYXgWR4TuRVPvdwKrKfZcdS6PDrAj95KYyxwC-oT3CRdMcP5ALBMfk6V2C3nXssH8-KfD7pe0aW5SeMcL5-M0M9z2ZLjtiPky5_Wijnmkmn0JQpTOKT2VaesBGZtUn1-1gqwqEYZ-QTu_OpMVC7tB3rrZ00gqokd8AsOxKd3M9sFCmGyALeMto
    AuthenticationserviceValidatePasswordCredentialsResponse:
      description: A response to validate a consumer's password credential
      required:
        - validatedReturnUrl
      properties:
        validatedReturnUrl:
          type: string
          description: A validated URL used by the front end to redirect the user
      example:
        validatedReturnUrl: http://www.mydomain.com/AuthCodeFlow
    AuthenticationserviceValidatePasswordlessEmailRequest:
      description: A request to validate a consumer's email address and start the passwordless flow
      required:
        - email
        - returnUrl
      properties:
        email:
          type: string
          description: The email address used to select the correct consumer
        returnUrl:
          type: string
          description: The return URL from the request parameters
      example:
        email: james.smith@adomain.com
        returnUrl: https://www.just-eat.co.uk?returnUrl=someinfo
    AuthenticationserviceValidatePasswordlessEmailResponse:
      description: A response to validate a consumer's passwordless request
      required:
        - target
        - validatedReturnUrl
      properties:
        target:
          type: string
          description: The email address of the consumer attempting to log in
          format: email
        validatedReturnUrl:
          type: string
          description: A validated URL used by the front end to redirect the user
      example:
        target: james.smith@adomain.com
        validatedReturnUrl: http://www.mydomain.com/AuthCodeFlow
    AuthenticationserviceWellKnownConfigurationResponse:
      properties:
        issuer:
          nullable: false
          description: URL used to identify the issuer.
          type: string
        jwks_uri:
          nullable: false
          description: URL of the JSON Web Key Set. This contains the signing keys used to validate signatures.
          type: string
        authorization_endpoint:
          nullable: false
          description: URL of the authorization endpoint.
          type: string
        token_endpoint:
          nullable: false
          description: URL of the token endpoint.
          type: string
        userinfo_endpoint:
          nullable: false
          description: URL of the user info endpoint.
          type: string
        end_session_endpoint:
          nullable: false
          description: URL of the end session endpoint.
          type: string
        check_session_iframe:
          nullable: false
          description: URL of the check session endpoint.
          type: string
        revocation_endpoint:
          nullable: false
          description: URL of the token revocation endpoint.
          type: string
        introspection_endpoint:
          nullable: false
          description: URL of the token introspection endpoint.
          type: string
        device_authorization_endpoint:
          nullable: false
          description: URL of the device authorization endpoint.
          type: string
        backchannel_authentication_endpoint:
          nullable: false
          description: URL of the CIBA backchannel authentication endpoint.
          type: string
        pushed_authorization_request_endpoint:
          nullable: false
          description: URL of the pushed authorization request (PAR) endpoint.
          type: string
        require_pushed_authorization_requests:
          nullable: false
          description: Whether the authorization server requires pushed authorization requests.
          type: boolean
        frontchannel_logout_supported:
          nullable: false
          description: Whether the authorization server supports front-channel logout.
          type: boolean
        frontchannel_logout_session_supported:
          nullable: false
          description: Whether the authorization server supports front-channel logout with session.
          type: boolean
        backchannel_logout_supported:
          nullable: false
          description: Whether the authorization server supports back-channel logout.
          type: boolean
        backchannel_logout_session_supported:
          nullable: false
          description: Whether the authorization server supports back-channel logout with session.
          type: boolean
        scopes_supported:
          nullable: true
          items:
            type: string
          description: List containing the scope values that the server supports.
          type: array
        claims_supported:
          nullable: true
          items:
            type: string
          description: List containing the claim types that the server supports.
          type: array
        grant_types_supported:
          nullable: true
          items:
            type: string
          description: List containing the OAuth 2.0 grant type values that the server supports.
          type: array
        response_types_supported:
          nullable: true
          items:
            type: string
          description: List containing the OAuth 2.0 `response_type` values which are supported.
          type: array
        response_modes_supported:
          nullable: true
          items:
            type: string
          description: List containing the OAuth 2.0 `response_mode` values which are supported.
          type: array
        token_endpoint_auth_methods_supported:
          nullable: true
          items:
            type: string
          description: List containing the client authentication methods supported by the token endpoint.
          type: array
        revocation_endpoint_auth_methods_supported:
          nullable: true
          items:
            type: string
          description: List containing the client authentication methods supported by the revocation endpoint.
          type: array
        introspection_endpoint_auth_methods_supported:
          nullable: true
          items:
            type: string
          description: List containing the client authentication methods supported by the introspection endpoint.
          type: array
        id_token_signing_alg_values_supported:
          nullable: true
          items:
            type: string
          description: List containing the JWS signing algorithms supported for the ID token.
          type: array
        userinfo_signing_alg_values_supported:
          nullable: true
          items:
            type: string
          description: List containing the JWS signing algorithms supported for the user info endpoint response.
          type: array
        introspection_signing_alg_values_supported:
          nullable: true
          items:
            type: string
          description: List containing the JWS signing algorithms supported for the introspection endpoint response.
          type: array
        subject_types_supported:
          nullable: true
          items:
            type: string
          description: List containing the subject identifier types supported.
          type: array
        code_challenge_methods_supported:
          nullable: true
          items:
            type: string
          description: List containing the PKCE code challenge methods supported.
          type: array
        request_parameter_supported:
          nullable: false
          description: Whether the authorization server supports the `request` parameter.
          type: boolean
        request_object_signing_alg_values_supported:
          nullable: true
          items:
            type: string
          description: List containing the JWS signing algorithms supported for request objects.
          type: array
        prompt_values_supported:
          nullable: true
          items:
            type: string
          description: List containing the `prompt` values that the authorization server supports.
          type: array
        authorization_response_iss_parameter_supported:
          nullable: false
          description: Whether the authorization server supports the `iss` parameter in the authorization response.
          type: boolean
        backchannel_token_delivery_modes_supported:
          nullable: true
          items:
            type: string
          description: List containing the CIBA token delivery modes supported.
          type: array
        backchannel_user_code_parameter_supported:
          nullable: false
          description: Whether the authorization server supports the CIBA `user_code` parameter.
          type: boolean
        backchannel_authentication_request_signing_alg_values_supported:
          nullable: true
          items:
            type: string
          description: List containing the JWS signing algorithms supported for CIBA authentication requests.
          type: array
        dpop_signing_alg_values_supported:
          nullable: true
          items:
            type: string
          description: List containing the JWS signing algorithms supported for demonstrating proof of possession.
          type: array
      description: The success response object for the well-known endpoint.
      required:
        - issuer
        - jwks_uri
        - authorization_endpoint
        - token_endpoint
        - response_types_supported
      example:
        issuer: https://all-authorizeapi.just-eat.co.uk/identity
        jwks_uri: https://auth.just-eat.co.uk/.well-known/openid-configuration/jwks
        authorization_endpoint: https://auth.just-eat.co.uk/connect/authorize
        token_endpoint: https://auth.just-eat.co.uk/connect/token
        userinfo_endpoint: https://auth.just-eat.co.uk/connect/userinfo
        end_session_endpoint: https://auth.just-eat.co.uk/connect/endsession
        check_session_iframe: https://auth.just-eat.co.uk/connect/checksession
        revocation_endpoint: https://auth.just-eat.co.uk/connect/revocation
        introspection_endpoint: https://auth.just-eat.co.uk/connect/introspect
        device_authorization_endpoint: https://auth.just-eat.co.uk/connect/deviceauthorization
        backchannel_authentication_endpoint: https://auth.just-eat.co.uk/connect/ciba
        pushed_authorization_request_endpoint: https://auth.just-eat.co.uk/connect/par
        require_pushed_authorization_requests: false
        frontchannel_logout_supported: true
        frontchannel_logout_session_supported: true
        backchannel_logout_supported: true
        backchannel_logout_session_supported: true
        scopes_supported:
          - openid
          - email
          - phone
          - profile
          - offline_access
        claims_supported:
          - sub
          - email
          - email_verified
          - phone_number
          - phone_number_verified
          - name
          - given_name
          - family_name
        grant_types_supported:
          - authorization_code
          - client_credentials
          - refresh_token
          - implicit
          - password
          - urn:ietf:params:oauth:grant-type:device_code
          - urn:openid:params:grant-type:ciba
          - otac
          - mfa_otp
          - urn:ietf:params:oauth:grant-type:token-exchange
          - passwordless_email
          - otp_email
          - global_reg
        response_types_supported:
          - code
          - token
          - id_token
          - id_token token
          - code id_token
          - code token
          - code id_token token
        response_modes_supported:
          - form_post
          - query
          - fragment
        token_endpoint_auth_methods_supported:
          - client_secret_basic
          - client_secret_post
        revocation_endpoint_auth_methods_supported:
          - client_secret_basic
          - client_secret_post
        introspection_endpoint_auth_methods_supported:
          - client_secret_basic
          - client_secret_post
        id_token_signing_alg_values_supported:
          - RS256
        userinfo_signing_alg_values_supported:
          - RS256
        introspection_signing_alg_values_supported:
          - RS256
        subject_types_supported:
          - public
        code_challenge_methods_supported:
          - plain
          - S256
        request_parameter_supported: true
        request_object_signing_alg_values_supported:
          - RS256
          - RS384
          - RS512
          - PS256
          - PS384
          - PS512
          - ES256
          - ES384
          - ES512
        prompt_values_supported:
          - none
          - login
          - consent
          - select_account
        authorization_response_iss_parameter_supported: true
        backchannel_token_delivery_modes_supported:
          - poll
        backchannel_user_code_parameter_supported: true
        backchannel_authentication_request_signing_alg_values_supported:
          - RS256
          - RS384
          - RS512
          - PS256
          - PS384
          - PS512
          - ES256
          - ES384
          - ES512
        dpop_signing_alg_values_supported:
          - RS256
          - RS384
          - RS512
          - PS256
          - PS384
          - PS512
          - ES256
          - ES384
          - ES512
      type: object
    Authorization400ConnectTokenResponse:
      properties:
        error:
          description: |-
            The error code representing the error that occurred. Can also include custom values. More info at RFC6749#section-5.2
            - invalid_request:
            -       The request is missing a required parameter, includes an
            -       unsupported parameter value (other than grant type),
            -       repeats a parameter, includes multiple credentials,
            -       utilizes more than one mechanism for authenticating the
            -       client, or is otherwise malformed.
            - invalid_client
            -         Client authentication failed (e.g., unknown client, no
            -         client authentication included, or unsupported
            -         authentication method).  The authorization server MAY
            -         return an HTTP 401 (Unauthorized) status code to indicate
            -         which HTTP authentication schemes are supported.  If the
            -         client attempted to authenticate via the "Authorization"
            -         request header field, the authorization server MUST
            -         respond with an HTTP 401 (Unauthorized) status code and
            -         include the "WWW-Authenticate" response header field
            -         matching the authentication scheme used by the client.
            - invalid_grant
            -         The provided authorization grant (e.g., authorization
            -         code, resource owner credentials) or refresh token is
            -         invalid, expired, revoked, does not match the redirection
            -         URI used in the authorization request, or was issued to
            -         another client.
            - unauthorized_client
            -         The authenticated client is not authorized to use this
            -         authorization grant type.
            - unsupported_grant_type
            -         The authorization grant type is not supported by the
            -         authorization server.
            - invalid_scope
            -         The requested scope is invalid, unknown, malformed, or
            -         exceeds the scope granted by the resource owner.
            - mfa_required
            -         A custom response. The MFA flow has been initiated which
            -         means a one time code is required to finish the authentication 
            -         via the mfa_otp grant type. 
          enum:
            - invalid_request
            - invalid_client
            - invalid_grant
            - unauthorized_client
            - unsupported_grant_type
            - invalid_scope
            - mfa_required
          type: string
        error_description:
          description: OPTIONAL. A description of the error that occurred.
          type: string
        error_uri:
          description: OPTIONAL. URI identifying a human-readable web page with information about the error.
          type: string
      type: object
    AuthorizationConnectTokenRequest:
      required:
        - client_id
        - grant_type
      properties:
        redirect_uri:
          description: Required for the `authorization_code` grant type
          type: string
        username:
          description: Resource owner username (required for `password` grant type)
          type: string
        password:
          description: Resource owner password (required for `password` grant type)
          type: string
        client_secret:
          description: The client secret - either in the post body, or as a basic authentication header.
          type: string
        client_id:
          description: client identifier
          type: string
        code_verifier:
          description: PKCE proof key
          type: string
        code:
          description: The authorization code (required for `authorization_code` grant type)
          type: string
        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
        refresh_token:
          description: The refresh token (required for `refresh_token` 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
            - mfa_otp
            - otac
            - implicit
            - urn:ietf:params:oauth:grant-type:device_code
            - urn:ietf:params:oauth:grant-type:saml2-bearer
            - urn:ietf:params:oauth:grant-type:jwt-bearer
            - urn:ietf:params:oauth:grant-type:token-exchange
            - urn:openid:params:grant-type:ciba
          type: string
        device_code:
          description: The device code (required for `urn:ietf:params:oauth:grant-type:device_code` 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
    AuthorizationConnectTokenResponse:
      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
        token_type:
          description: This is always `bearer`, and is returned only  when `token` is specified as a `response_type`.
          type: string
        scope:
          description: The original scopes you provided.
          type: string
      type: object
    AuthorizationCreateUserRequest:
      properties:
        EmailAddress:
          description: User's email address
          type: string
        GivenName:
          description: User's given name
          type: string
        FamilyName:
          description: User's family name
          type: string
        Password:
          description: User's password
          type: string
        Tenant:
          description: Tenant
          type: string
        DeviceId:
          description: Device ID
          type: string
        ClientIp:
          description: Client IP
          type: string
        RecaptchaAnswer:
          description: Recaptcha answer
          type: string
        Device:
          description: Device name
          type: string
        Sdk:
          description: SDK version
          type: string
        Language:
          description: Language
          type: string
        UserAgent:
          description: User agent
          type: string
      type: object
    AutocompleteAutocompleteGetAddressDetailResponse:
      properties:
        type:
          type: string
          description: Root GeoJSON object
        features:
          description: Returned address details
          type: array
          items:
            type: object
            properties:
              geometry:
                $ref: '#/components/schemas/AutocompleteGeometry'
              properties:
                description: GeoJSON Feature metadata.
                properties:
                  createdDate:
                    description: Location context generated date
                    format: date-time
                    type: string
                  entryMethod:
                    description: Source of context
                    type: object
                    properties:
                      method:
                        type: string
                        description: Source of context
                  address:
                    items:
                      type: string
                    description: List of address parts.
                    type: array
                  countryCode:
                    type: string
                    description: Two digit country code (ISO-3166 alpha-2)
                  area:
                    type: object
                    description: Extended area information
                    properties:
                      fullFriendlyName:
                        type: string
                        description: Area friendly name for display information
                      fullCanonicalName:
                        type: string
                        description: Canonical name for search page
                  formattedAddress:
                    type: string
                    description: Address formatted according to country addressing convention
                  structuredAddress:
                    description: Example key-value pairs describing address fields. These fields are dynamic and are returned if available from the data provider. More fields may be added depending on the request.
                    type: object
                    properties:
                      streetNumberOrBuilding:
                        type: string
                        description: Address field describing street/building number
                      street:
                        type: string
                        description: Address field describing street address part
                      line1:
                        type: string
                        description: Address field describing the first address line, usually a combination of street number and street
                      city:
                        type: string
                        description: Address field describing city address part
                      countryCode:
                        type: string
                        description: Address field describing country address part
                      postcode:
                        type: string
                        description: Address field describing postcode address part
                    additionalProperties:
                      type: object
                      description: Additional address fields that may be assigned if available
                      properties:
                        adminAreaLevel1:
                          type: string
                          description: Address field describing admin area level 1 address part
                        adminAreaLevel2:
                          type: string
                          description: Address field describing admin area level 2 address part
                        adminAreaLevel3:
                          type: string
                          description: Address field describing admin area level 3 address part
                        country:
                          type: string
                          description: Address field describing country (long form) address part
                        locality:
                          type: string
                          description: Address field describing locality address part
                        political:
                          type: string
                          description: Address field describing political address part
                        political2:
                          type: string
                          description: Address field describing political 2 address part
                        political3:
                          type: string
                          description: Address field describing political 3 address part
                        postTown:
                          type: string
                          description: Address field describing post town address part
                        premise:
                          type: string
                          description: Address field describing premise address part
                        route:
                          type: string
                          description: Address field describing route address part
                        streetNumber:
                          type: string
                          description: Address field describing street number address part
                        building:
                          type: string
                          description: Address field describing building address part
                  addressDisplayLines:
                    description: Shows the address formatted to be displayed on the screen.
                    type: object
                    properties:
                      metadata:
                        type: object
                        description: Metadata describing how the address lines can be displayed
                        properties:
                          isPart1Fallback:
                            type: boolean
                            description: Is the part 1 of the address Display Lines a fallback to show postcode and city when the full address is not found
                          hasNameInAddressLines:
                            type: boolean
                            description: Describes if the address lines has name so that geocoding can act accordingly
                      parts:
                        items:
                          type: string
                        description: List of address parts.
                        type: array
                      full:
                        type: string
                        description: Full formatted Address display lines
                  addressLineMapping:
                    description: Shows the address lines to be mapped at the checkout fields
                    type: object
                    properties:
                      line1:
                        type: string
                        description: Address field describing the first address line, usually a combination of building name, street number and street. May not be returned if it doesn't exist.
                      line2:
                        type: string
                        description: Address field describing the second address line, usually the area name. May not be returned if it doesn't exist.
                      line3:
                        type: string
                        description: Address field describing the third address line, usually the town or village name. May not be returned if it doesn't exist.
                      city:
                        type: string
                        description: Address field describing city address part. This will return empty field when doesn't exist.
                      postcode:
                        type: string
                        description: Address field describing postcode address part. This will return empty field when doesn't exist.
                  source:
                    type: object
                    description: The origin of the location context
                    properties:
                      systemId:
                        type: string
                        description: Originating system for Location context. (Loqate, Google, Manual Input)
                      externalId:
                        type: string
                        description: Google Place Id, Loqate Id, empty if manual input
                  languageDetails:
                    type: object
                    description: Language details of the returned address detail
                    properties:
                      code:
                        type: string
                        description: Language ISO code
                      name:
                        type: string
                        description: Language friendly name
                  tenant:
                    type: string
                    description: JET tenant code of address detail
                type: object
              type:
                description: Type of geometry object.
                type: string
            description: Best guess location for the specified geolocation.
      example:
        type: FeatureCollection
        features:
          - type: Feature
            geometry:
              coordinates:
                - -0.1030613
                - 51.5164275
              type: Point
            properties:
              createdDate: '2023-08-08T08:37:17.0493163+00:00'
              entryMethod:
                method: autocompleteapi
              area:
                fullFriendlyName: Fleet Street
                fullCanonicalName: ec4-fleetstreet
              address:
                - 2 Fleet Place
                - London
                - Greater London
                - England
                - United Kingdom
                - EC4M 7RF
              structuredAddress:
                streetNumberOrBuilding: '2'
                street: Fleet Place
                line1: 2 Fleet Place
                city: London
                postcode: EC4M 7RF
                countryCode: GB
              addressDisplayLines:
                metadata:
                  isPart1Fallback: false
                  hasNameInAddressLines: false
                parts:
                  - Fleet Place House, 2 Fleet Place
                  - London, EC4M 7RF
                full: Fleet Place House, 2 Fleet Place, London, EC4M 7RF
              addressLineMapping:
                line1: Fleet Place House
                line2: 2 Fleet Place
                city: London
                postcode: EC4M 7RF
              formattedAddress: Fleet Place House, 2 Fleet Pl, London EC4M 7RF, UK
              source:
                systemId: Google
                externalId: ChIJJcYS5lIbdkgRDCfBhM3aYms
              languageDetails:
                code: en
                name: English
              countryCode: GB
              tenant: UK
      type: object
    AutocompleteAutocompleteGetAddressesResponse:
      properties:
        data:
          description: Location autocomplete address suggestions for given input.
          type: array
          maxItems: 50
          minItems: 1
          items:
            type: object
            properties:
              description:
                type: string
                description: Location description.
              id:
                type: string
                description: Location detail identifier retrieved from external data source.
              type:
                description: Type of returned location from provider.
                enum:
                  - address
                  - postcode
                  - street
                type: string
              next:
                description: Next type of request this location links to.
                enum:
                  - suggestion
                  - detail
                type: string
              postcode:
                nullable: true
                type: string
                description: Postcode for given location, e.g. a postcode, ZIP or pin depending on tenant (UK - EC4M7RF, IE - A65F4E2, AUS - 2599) (Loqate Only)
        session:
          description: Passed to next endpoint in autocomplete flow, contains state information.
          type: string
        links:
          description: OpenAPI Links response for constructing next request in flow.
          properties:
            detail:
              type: object
              description: Describes how to proceed to autocomplete address detail operation from this response.
              properties:
                description:
                  type: string
                  description: Describes the linked fields and how to use them.
                operationId:
                  type: string
                  description: Id of operation
                parameters:
                  type: object
                  description: Parameters to be passed into next operation.
                  properties:
                    id:
                      type: string
                      description: Path on response object to retrieve id.
                    session:
                      type: string
                      description: Path on response object to retrieve session id.
          type: object
      description: Location information suggestions for given input and information to structure request for next stage in autocomplete flow.
      example:
        data:
          - description: Fleet Place, London, UK
            id: EhdGbGVldCBQbGFjZSwgTG9uZG9uLCBVSyIuKiwKFAoSCXkM5tNSG3ZIEfJ6Mm2Nv50UEhQKEgnz8xe3Wxt2SBEKsgA5eS6RSQ
            type: address
            next: detail
        session: eyJCaWxsaW5nVG9rZW4iOiI3ODk4MGYwNy1kNmQ1LTQ1MzUtOTA3NC0wNjhlNGIwMzg3ZWUiLCJQcm92aWRlciI6Ikdvb2dsZSJ9
        source:
          - systemId: Google
        links:
          detail:
            description: The 'data/id' response field should be used as the 'id' path parameter, the 'session' response field should be used as the 'session' query parameter in GET /autocomplete/address/{tenant}/{id}?session={session}
            operationId: getAutocompleteAddress
            parameters:
              session: $response.body#/session
              id: $response.body#/data/0/id
      type: object
    AutocompleteGeometry:
      type: object
      description: Geometry information for location.
      properties:
        coordinates:
          maxItems: 2
          type: array
          minItems: 2
          items:
            format: double
            type: number
          description: Longitude and latitude.
        type:
          description: Type of geometry object.
          type: string
    AvailabilityScheduledUnavailabilityRequest:
      properties:
        serviceTypes:
          description: An array of Service Types to be included in the request. Excluding this field from the request will set the restaurant unavailable for all known Service Types.
          type: array
          items:
            $ref: '#/components/schemas/AvailabilityServiceTypes'
          nullable: true
        startDate:
          description: ISO 8601 format of the start datetime of the request. In addition, the keyword 'now' can be supplied in lieu of the current time.
          type: string
          format: date-time
          minLength: 1
        endDate:
          description: ISO 8601 format of the end datetime of the request.
          type: string
          format: date-time
          minLength: 1
          nullable: true
        name:
          description: Name of the request to be created.
          type: string
          maxLength: 150
        reason:
          description: The reason for creating the request.
          type: string
          maxLength: 5000
        allowRestaurantOverride:
          description: Whether a restaurant should be allowed to delete this request, regardless of who raised it.
          type: boolean
        categories:
          description: A free text category used to group multiple requests. This field is not intended to be used by clients.
          type: array
          items:
            type: string
            maxLength: 100
          nullable: true
      type: object
      description: A request to make restaurant unavailable.
      required:
        - startDate
        - name
        - reason
        - allowRestaurantOverride
      additionalProperties: false
      example:
        serviceTypes:
          - dineIn
          - delivery
        startDate: '2020-01-16T09:00:00Z'
        endDate: '2020-01-16T19:00:00Z'
        name: Out of Chicken
        reason: No more chicken in stock.
        allowRestaurantOverride: true
        categories:
          - chicken-issue
    AvailabilityScheduledUnavailabilityStatus:
      properties:
        delivery:
          $ref: '#/components/schemas/AvailabilityServiceTypeStatus'
        collection:
          $ref: '#/components/schemas/AvailabilityServiceTypeStatus'
        dineIn:
          $ref: '#/components/schemas/AvailabilityServiceTypeStatus'
      type: object
      example:
        delivery:
          currentlyAvailable: true
          restaurantIsReadyForAvailability: false
          restaurantIsAbleToMakeAvailable: true
        collection:
          currentlyAvailable: true
          restaurantIsReadyForAvailability: false
          restaurantIsAbleToMakeAvailable: true
        dineIn:
          currentlyAvailable: true
          restaurantIsReadyForAvailability: false
          restaurantIsAbleToMakeAvailable: true
    AvailabilityServiceTypeStatus:
      properties:
        currentlyAvailable:
          description: Whether the restaurant is currently available or not.
          type: boolean
        restaurantIsReadyForAvailability:
          description: If there are events the restaurant CAN remove this will be `False`. Some events will be set with the `allowRestaurantOverride` flag as `False` meaning a Restaurant Partner cannot remove the event. This value being true advises the restaurant partner there are some events they can remove, regardless if removing those events will make them available or not.
          type: boolean
        restaurantIsAbleToMakeAvailable:
          description: If there are events the restaurant CAN NOT remove this will be `False`. There may also be events the restaurant can remove, however if this flag is `False` it means a call to make restaurant available by a Restaurant Partner will only remove events they are able to and not result in the restaurant becoming available.
          type: boolean
      type: object
      description: Provides information on a Service Type's Scheduled Unavailability state.
      example:
        currentlyAvailable: true
        restaurantIsReadyForAvailability: false
        restaurantIsAbleToMakeAvailable: true
    AvailabilityServiceTypes:
      type: string
      enum:
        - delivery
        - collection
        - dineIn
    BankdetailsGetAccessRolesResponse:
      description: Response containing information on what rights the user has to update the bank details
      properties:
        canUpdateBankDetails:
          type: boolean
          description: If the partner has all bank details filled
        hasMfa:
          type: boolean
          description: If the partner has MFA enabled
        inCooldown:
          type: boolean
          description: If the partner has inserted too many wrong verification codes and their profile is in cooldown
      type: object
      example:
        canUpdateBankDetails: true
        hasMfa: false
        inCooldown: false
    BankdetailsGetBankDetailsResponse:
      description: Response containing the bank details of the restaurant
      properties:
        bankName:
          description: Name of the bank
          type: string
        bankAccountNumber:
          description: 8 digit string containing the bank account number
          type: string
        accountHolderName:
          description: Name of the account holder
          type: string
        bankSortCode:
          description: 6 digit sort code of the bank
          type: string
      type: object
      example:
        bankName: PostBank
        bankAccountNumber: '12345678'
        accountHolderName: John Doe
        bankSortCode: '102030'
    BankdetailsUpdateBankDetailsRequest:
      description: A request model to change the bank details of a partner
      properties:
        bankName:
          type: string
          description: Name of the Bank
        accountHolderName:
          type: string
          description: Name of the account holder
        bankSortCode:
          type: string
          minLength: 6
          maxLength: 6
          pattern: ^[0-9]*$
          description: 6 digit sort code of the bank
        bankAccountNumber:
          type: string
          minLength: 8
          maxLength: 8
          pattern: ^[0-9]*$
          description: 8 digit bank account number
        verificationCode:
          type: string
          minLength: 6
          maxLength: 6
          pattern: ^[A-Z0-9]*$
          description: Unique verification code
      type: object
      example:
        bankName: PostBank
        accountHolderName: John Doe
        bankSortCode: '102030'
        bankAccountNumber: '12345678'
        verificationCode: A1B2C3
    BankintegrationJwksResponse:
      type: object
      description: RFC 7517 JSON Web Key Set containing the public RSA keys that Barclays uses to verify PS256-signed client assertion tokens issued by this service.
      properties:
        keys:
          type: array
          description: Array of JSON Web Keys.
          items:
            type: object
            description: A single RSA JSON Web Key.
            properties:
              kty:
                type: string
                description: Key type. Always `RSA` for Barclays signing keys.
                example: RSA
              use:
                type: string
                description: Intended use of the key. Always `sig` for signature verification.
                example: sig
              alg:
                type: string
                description: Algorithm used with the key. Always `PS256` for Barclays signing keys.
                example: PS256
              kid:
                type: string
                description: Key identifier used to select the appropriate key for verification.
                example: barclays-signing-key-1
              'n':
                type: string
                description: RSA public modulus, Base64url-encoded.
              e:
                type: string
                description: RSA public exponent, Base64url-encoded.
                example: AQAB
            required:
              - kty
              - use
              - alg
              - kid
              - 'n'
              - e
      required:
        - keys
      example:
        keys:
          - kty: RSA
            use: sig
            alg: PS256
            kid: barclays-signing-key-1
            'n': syfN3s8pZmMJXPNaBLTJaHQL9H_Ot4H0z6OZQV7t...
            e: AQAB
    BasketActiveBasketsResponse:
      required:
        - Baskets
      description: The response object for listing all active baskets of a consumer
      properties:
        PaginationToken:
          type: string
          description: A token to retrieve the next page of results. If null, there are no more results.
          example: eyJQYWdlSW5kZXgiOjAsIlBhZ2VTaXplIjozLCJGb3J3YXJkUGFnZVNpemUiOjN9
          nullable: true
        Counts:
          type: object
          description: The count of active baskets by type
          required:
            - Total
            - TotalIsCapped
            - Single
            - SingleIsCapped
            - Group
            - GroupIsCapped
          properties:
            Total:
              type: number
              format: integer
              description: This shows the total count of active baskets. If the actual number is larger than the page size, this value will be limited to the page size.
              example: 3
            TotalIsCapped:
              type: boolean
              description: True if the total count of active baskets is bigger than page size limit
              example: false
            Single:
              type: number
              format: integer
              description: This shows the total count of single active baskets. If the actual number is larger than the page size, this value will be limited to the page size.
              example: 1
            SingleIsCapped:
              type: boolean
              description: True if the count of single active baskets is bigger than page size limit
              example: false
            Group:
              type: number
              format: integer
              description: This shows the total count of group active baskets. If the actual number is larger than the page size, this value will be limited to the page size.
              example: 2
            GroupIsCapped:
              type: boolean
              description: True if the count of group active baskets is bigger than page size limit
              example: false
        Baskets:
          type: array
          description: A list of baskets
          nullable: false
          items:
            type: object
            description: The details of a basket
            required:
              - Id
              - Restaurant
              - Fulfilment
              - CustomerRole
              - Mode
              - ItemCount
              - Status
            properties:
              Id:
                type: string
                description: The basket id
                example: EDAwNTY4ZGEtYjk4NC99OD-v1
              CampaignId:
                nullable: true
                type: string
                maxLength: 100
                description: The identifier of the marketing campaign that drove the basket creation. Only present when a campaign id was supplied at basket creation; omitted otherwise.
                example: aba84b9f-9752-43b6-af37-3b4d07c6029d
              Restaurant:
                type: object
                description: The restaurant partner details
                required:
                  - Id
                  - Name
                  - SeoName
                  - Logo
                properties:
                  Id:
                    type: string
                    description: The restaurant id
                    example: '1690'
                  Name:
                    type: string
                    description: The restaurant partner name
                    example: Pizza Place
                  SeoName:
                    type: string
                    description: A unique name per tenant for a restaurant used for external operations.
                    example: pizza-place-downtown
                  Logo:
                    type: object
                    description: The restaurant partner logo
                    required:
                      - Url
                    properties:
                      Url:
                        type: string
                        description: The restaurant logo url
                        example: https://res.cloudinary.com/......./pizza-place-logo.png
                      AltText:
                        type: string
                        description: The restaurant logo alternative text
                        example: Pizza Place logo
                        nullable: true
              Fulfilment:
                type: object
                description: The fulfilment details
                required:
                  - ServiceType
                  - IsAsap
                properties:
                  ServiceType:
                    type: string
                    description: The service type
                    enum:
                      - Delivery
                      - Collection
                    example: Delivery
                  ScheduledDeliveryDateTime:
                    type: string
                    description: The scheduled delivery date time of the order
                    format: date-time
                    example: '2025-06-26T11:30:00Z'
                    nullable: true
                  IsAsap:
                    type: boolean
                    description: True if the fulfilment is asap
                    example: true
              CustomerRole:
                type: string
                description: The role of the customer in the Basket
                enum:
                  - Initiator
                  - Participant
                example: Participant
              Mode:
                type: string
                enum:
                  - None
                  - Group
                description: The basket mode
                example: Group
              ItemCount:
                type: number
                format: integer
                description: The item count in the basket
                example: 2
              Status:
                type: string
                description: The basket status
                enum:
                  - Ordering
                  - Ready
                  - Ordered
                example: Ready
      type: object
    BasketAdjustments:
      description: Adjustments related to the basket
      required:
        - Type
        - Name
        - Adjustment
        - Description
      properties:
        Type:
          type: string
          description: Type of adjustment. Known values include ServiceFee, BagFee, ItemDepositGroup, SmallOrderFee and WeighedReservation
        Name:
          type: string
          description: Name of the adjustment
        Adjustment:
          format: decimal
          type: number
          description: Value of the adjustment
        Description:
          type: string
          description: Description of the adjustment
        Info:
          nullable: true
          $ref: '#/components/schemas/PurchaseSharedEntitiesCompositesLineItemDetailsEntity'
          description: Additional rendering details for the adjustment, semantically identical to the info on the matching pricing summary line item. Optional. Present only for WeighedReservation adjustments.
    BasketAgeVerification:
      description: Schema for AgeVerification information
      properties:
        DateOfBirth:
          type: string
          format: date-time
          description: |
            Customer's date of birth represented in ISO 8601 date format.

            Required in Australia (AU) only for fulfilling an order that contain items being purchased that require age verification.
          nullable: true
      type: object
    BasketAvailability:
      description: Represents the availability information for a product, including stock status and potentially other availability details.
      type: object
      properties:
        StockStatus:
          $ref: '#/components/schemas/BasketStockStatus'
          description: The current stock status of the product
        DisplayText:
          type: string
          description: A human readable, localized message describing the stock availability status (e.g., 'In stock', 'Low in stock')
          example: Low in stock
    BasketBasketErrorResponse:
      description: The error object returned when an operation fails
      properties:
        ErrorType:
          $ref: '#/components/schemas/BasketBasketErrorType'
        SubErrorType:
          $ref: '#/components/schemas/BasketBasketSubErrorType'
        InnerErrors:
          items:
            properties:
              ErrorType:
                $ref: '#/components/schemas/BasketBasketErrorType'
              Message:
                type: string
                description: The details of the inner errors
            type: object
          type: array
        Message:
          type: string
          description: The details of the error
        BasketId:
          type: string
          description: The id of the basket
        QuantityRestrictionIds:
          items:
            type: string
          description: The collection of quantity restriction ids that would be violated.
          type: array
      type: object
    BasketBasketErrorType:
      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
        - InvalidUpdateUseStampCardDiscountRequest
        - UseStampCardDiscountFlagNotFound
        - QuantityRestrictionViolation
        - InvalidCountryCode
        - InvalidUserAgent
      type: string
      description: The type of basket error
    BasketBasketPurchaseCreateRequest:
      description: Alternative request object for creating a basket using purchase-based creation.
      type: object
      required:
        - Purchase
      properties:
        Purchase:
          $ref: '#/components/schemas/PurchaseRequestsPurchaseCreateRequest'
          description: Purchase-based creation operations for the basket.
    BasketBasketPurchaseUpdateRequest:
      description: Alternative request object for updating a basket using purchase-based updates.
      type: object
      required:
        - Purchase
      properties:
        Purchase:
          $ref: '#/components/schemas/PurchaseRequestsPurchaseUpdateRequest'
          description: Purchase-based update operations for the basket.
    BasketBasketResponse:
      description: The response object for all basket endpoints.
      properties:
        BasketId:
          type: string
          description: The basket id
        Currency:
          type: string
          description: The currency used to represent prices, represented as an ISO 4217 currency code. For example, GBP, EUR or AUD.
          minLength: 3
          maxLength: 3
        SubstitutionPreference:
          nullable: true
          type: string
          description: The basket level substitution preference. Currently BestMatch, Refund or Item are supported. When null it means that basket level substitution preference is not supported.
        SupportsItemLevelNotes:
          nullable: true
          type: boolean
          description: True if the RP supports item-level notes and this is not a group basket. Currently group orders do not support item-level notes.
        CreateDate:
          nullable: true
          description: When the basket was created
          type: string
        RestaurantSeoName:
          nullable: true
          description: A unique name per tenant for a restaurant used for external operations.
          type: string
        RestaurantId:
          description: A unique identifier per tenant for a restaurant.
          type: string
        MenuGroupId:
          type: string
          description: The menu group Id
        MenuVersion:
          type: string
          description: The version identifier of the menu
        CampaignId:
          type: string
          nullable: true
          maxLength: 100
          description: The identifier of the marketing campaign that drove the basket creation. Only present when a campaign id was supplied at basket creation; omitted otherwise.
          example: aba84b9f-9752-43b6-af37-3b4d07c6029d
        ServiceType:
          type: string
          description: The service type
        IsOrderable:
          type: boolean
          description: True if the basket is orderable
        PaymentResponsibility:
          nullable: true
          type: string
          description: Defines who is responsible for payment when ordering a basket. Only returned on group baskets. Can be 'Initiator' or 'Shared'
        BasketMode:
          nullable: true
          type: string
          enum:
            - Standard
            - Group
          description: Mode of the current basket.
        BasketSummary:
          $ref: '#/components/schemas/BasketBasketSummary'
        GroupSummary:
          nullable: true
          $ref: '#/components/schemas/BasketGroupSummary'
        Consents:
          items:
            $ref: '#/components/schemas/BasketConsent'
          description: Consents added to the basket.
          type: array
        DeliveryModelOptions:
          nullable: true
          $ref: '#/components/schemas/BasketDeliveryModelOptions'
        BasketPurchase:
          $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponse'
          description: The platform representation of the purchase associated with this basket (will be returned as PascalCase).
          nullable: true
        Purchase:
          $ref: '#/components/schemas/PurchaseResponsesPurchaseResponse'
          description: The BFF represenation of the purchase associated with this basket (will be returned as PascalCase).
          nullable: true
      type: object
    BasketBasketSubErrorType:
      enum:
        - PartnerThrottled
      nullable: true
      type: string
      description: The sub error type for the basket error
    BasketBasketSummary:
      description: Information for displaying the basket to the user.
      properties:
        Products:
          items:
            $ref: '#/components/schemas/BasketProduct'
          type: array
        Deals:
          items:
            $ref: '#/components/schemas/BasketDeal'
          type: array
        CategoryOffers:
          items:
            $ref: '#/components/schemas/BasketCategoryOffer'
          type: array
        RestaurantOffers:
          items:
            $ref: '#/components/schemas/BasketRestaurantOffer'
          description: The list of restaurant offers
          example:
            - DiscountValue: 20
              OfferType: Percent
              ConsumerSegment: NewToRestaurant
              DiscountApplied: 8.37
              OfferId: ftcOfferId75
              MaxDiscountValue: 10
              Name: 80% off order (max £40)
              Information:
                Title: 80% off order
                Description: You qualified for 80% off your order with a £20 minimum spend. Save up to £40!
            - OfferType: StampCard
              OfferId: stampCardLoyaltyCampaignOfferId287
              DiscountValue: 0
              ConsumerSegment: All
              DiscountApplied: 28.37
              DiscountCode: mgt36rtp8VoucherCode
          type: array
        DeliveryCharge:
          format: decimal
          type: number
          description: The delivery charge
        DeliveryChargeWithBenefit:
          nullable: true
          format: decimal
          type: number
          description: The delivery charge when the delivery benefit is applied
        Adjustments:
          items:
            $ref: '#/components/schemas/BasketAdjustments'
          description: List of basket adjustments
          example:
            - Type: ServiceFee
              Name: Service charge 10% (min £0.99 max £1.99)
              Adjustment: 1.5
              Description: Service charge 10% (min £0.99 max £1.99)
            - Type: BagFee
              Name: Bag fee
              Adjustment: 0.5
              Description: A charge for bags in collection
            - Type: ItemDepositGroup
              Name: Deposit £0.25 x 2
              Adjustment: 0.5
              Description: Deposit £0.25 x 2
        BasketTotals:
          $ref: '#/components/schemas/BasketBasketTotals'
        Prompts:
          nullable: true
          $ref: '#/components/schemas/BasketPrompts'
          type: object
        MaximumAdditionalOrderItems:
          format: integer
          type: number
          description: The upper limit for additional order items
        CustomerNotesRemaining:
          nullable: true
          format: integer
          type: number
          description: The remaining number of customer notes that can be added to the basket
        PaymentDirectives:
          description: The directives to payment component
          example:
            DisableCashPayment: true
          $ref: '#/components/schemas/BasketPaymentDirectives'
        TotalDiscount:
          format: decimal
          type: number
          description: The total discount
        TotalMultibuyDiscount:
          format: decimal
          type: number
          description: The delivery charge
        TotalSavings:
          format: decimal
          type: number
          description: The total savings included in this basket, including item level offers, basket level offers and delivery savings.
        TotalDeliverySavings:
          format: decimal
          type: number
          description: The total delivery savings included in this basket
        UseStampCardDiscount:
          nullable: true
          type: boolean
          description: A flag to indicate if the stamp card discount should be used
        QuantityRestrictions:
          items:
            $ref: '#/components/schemas/BasketQuantityRestriction'
          type: array
      type: object
    BasketBasketTotals:
      description: The basket total
      required:
        - Total
        - SubTotal
        - AdjustmentsTotal
        - FeesTotal
      properties:
        Total:
          format: decimal
          type: number
          description: The total.
        SubTotal:
          format: decimal
          type: number
          description: Subtotal
        AdjustmentsTotal:
          format: decimal
          type: number
          description: Total of the adjustments.
        FeesTotal:
          format: decimal
          type: number
          description: The total of the fees
        TotalWithDeliveryBenefit:
          nullable: true
          format: decimal
          type: number
          description: The total when the delivery benefit is applied
        Estimated:
          type: boolean
          nullable: true
          description: Indicates that the total is an estimate rather than exact/actual value. If null or absent, assume the totals are exact/actual.
      type: object
    BasketCategoryOffer:
      description: Details of an offer
      properties:
        OfferId:
          nullable: true
          description: The unique identifier of underlying consumer offers, if applicable
          type: string
        DiscountValue:
          format: decimal
          type: number
          description: The discount value
        DiscountPercentage:
          nullable: true
          format: integer
          type: number
          description: The percentage discount applied.
          minimum: 1
          maximum: 100
        CategoryId:
          type: string
          description: The category Id
        DiscountType:
          description: The type of discount
          type: string
        ProductId:
          description: The unique identifier of product qualified for discount
          type: string
        BasketProductId:
          description: The unique identifier of the basket product qualified for discount
          type: string
        Benefits:
          type: array
          description: Intersection of membership benefits and offer qualifying criteria benefits
          items:
            type: string
      type: object
      example:
        Benefits:
          - PARTNER_EXCLUSIVE_OFFERS
    BasketConsent:
      description: Details of a consent
      properties:
        DecisionAt:
          description: The UTC datetime value in the format `YYYY-MM-DDThh:mm:ssZ` stamped at the time of consent collection.
          format: date-time
          type: string
        ConsentType:
          type: string
          description: The type of consent
        ConsentStatus:
          type: string
          description: The status of consent
      type: object
    BasketConstraints:
      description: Constraints for a basket item or modifier.
      additionalProperties: false
      type: object
      title: Constraints
      properties:
        MaxDiscountPercentage:
          description: The maximum discount percentage for a basket item or modifier. Null if no restriction applies.
          nullable: true
          type: integer
          format: int32
          minimum: 0
        MinPurchaseAge:
          description: The minimum purchase age for a basket item or modifier. Null if no age restriction applies.
          nullable: true
          type: integer
          format: int32
          minimum: 0
      example:
        MaxDiscountPercentage: 25
        MinPurchaseAge: 30
    BasketCreateDeal:
      description: Create a deal
      properties:
        Date:
          description: '`YYYY-MM-DDThh:mm:ssZ (UTC)`'
          type: string
        DealGroups:
          items:
            $ref: '#/components/schemas/BasketCreateDealGroup'
          type: array
        Quantity:
          format: integer
          type: number
          description: The quantity
        ProductId:
          type: string
          description: The product id
        CustomerNotes:
          type: string
          description: The customer's item-level notes
      type: object
    BasketCreateDealGroup:
      description: Details of a deal group
      properties:
        DealGroupId:
          type: string
          description: The deal group Id
        Products:
          items:
            $ref: '#/components/schemas/BasketCreateProduct'
          type: array
      type: object
    BasketCreateGeoLocation:
      description: The position on the globe
      properties:
        Longitude:
          format: decimal
          type: number
          description: The longitude
        Latitude:
          format: decimal
          type: number
          description: The latitude
      type: object
    BasketCreateLocation:
      description: The zip code
      properties:
        GeoLocation:
          nullable: true
          description: Not available across platform yet, but applied for future proofing.
          allOf:
            - $ref: '#/components/schemas/BasketCreateGeoLocation'
        ZipCode:
          type: string
          description: The zip code
      type: object
    BasketCreateModifier:
      description: The modifier Id
      properties:
        ModifierId:
          type: string
          description: The modifier Id
        Quantity:
          format: integer
          type: number
          description: The quantity
      type: object
    BasketCreateModifierGroup:
      description: A modifier group
      properties:
        Modifiers:
          items:
            $ref: '#/components/schemas/BasketCreateModifier'
          type: array
        ModifierGroupId:
          type: string
          description: The modifier group Id
      type: object
    BasketCreateOrderDetails:
      properties:
        Location:
          $ref: '#/components/schemas/BasketCreateLocation'
      type: object
    BasketCreateProduct:
      description: Create a product
      properties:
        Date:
          description: '`YYYY-MM-DDThh:mm:ssZ (UTC)`'
          type: string
        ModifierGroups:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketCreateModifierGroup'
          type: array
        Quantity:
          format: integer
          type: number
          description: The quantity
        RemovedIngredients:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketCreateRemovedIngredient'
          type: array
        ProductId:
          type: string
          description: The product Id
        CustomerNotes:
          type: string
          description: The customer's item-level notes
      type: object
    BasketCreateRemovedIngredient:
      description: Create a removed ingredient
      properties:
        Details:
          type: string
          description: The ingredient details
      type: object
    BasketCreateRequest:
      description: The request object for creating a basket.
      properties:
        MenuGroupId:
          nullable: true
          type: string
          description: The menu group id. Used to determine which menu to assign to the basket. Must be supplied when restaurant id is not present.
        RestaurantId:
          nullable: true
          type: string
          description: Used in conjunction with service type to determine which menu to assign to the basket. Not used when menu group id is supplied, but must be supplied when no menu group id.
        CampaignId:
          nullable: true
          type: string
          maxLength: 100
          description: The identifier of the marketing campaign that drove the basket creation. Optional. When supplied it is stored against the basket and returned on basket and active basket responses. Values longer than 100 characters will be rejected.
        Products:
          nullable: true
          items:
            allOf:
              - $ref: '#/components/schemas/BasketCreateProduct'
            description: Individual product to added to new basket.
          description: All products to added to new basket.
          type: array
        Deals:
          nullable: true
          items:
            allOf:
              - $ref: '#/components/schemas/BasketCreateDeal'
            description: Individual deal to added to new basket.
          description: All deals to added to new basket.
          type: array
        OrderDetails:
          allOf:
            - $ref: '#/components/schemas/BasketCreateOrderDetails'
          description: Information needed to allow an order to be placed on a basket.
        PaymentResponsibility:
          nullable: true
          type: string
          description: Defines who is responsible for payment when ordering a basket. Only supported on group basket requests. Can be 'Initiator' or 'Shared'
        BasketMode:
          nullable: true
          type: string
          enum:
            - Standard
            - Group
          description: Mode of the current basket.
        Consents:
          items:
            $ref: '#/components/schemas/BasketConsent'
          description: Consents added to the basket.
          type: array
      type: object
    BasketCustomer:
      description: Schema for Customer information
      properties:
        FirstName:
          type: string
          description: Participants first name
          nullable: true
          minLength: 1
          maxLength: 100
        LastName:
          type: string
          description: Participants last name
          nullable: true
          maxLength: 100
        PhoneNumber:
          type: string
          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.
          nullable: true
          minLength: 3
          maxLength: 16
      type: object
    BasketDeal:
      description: Details of a deal
      properties:
        Name:
          type: string
          description: Name of the deal
        Variation:
          nullable: true
          type: string
          description: The variation
        DealGroups:
          items:
            $ref: '#/components/schemas/BasketDealGroup'
          type: array
        Quantity:
          format: integer
          type: number
          description: The quantity
        BasketProductIds:
          items:
            type: string
          type: array
        CategoryId:
          type: string
          description: The category id
        ProductId:
          type: string
          description: The product id
        TotalPrice:
          format: decimal
          type: number
          description: The total price, based on the unit price and the quantity
        DiscountedPrice:
          format: decimal
          type: number
          nullable: true
          description: The discounted price, based on the total price less any offers. null if no offer has been applied.
        UnitPrice:
          format: decimal
          type: number
          description: The price of the single unit product
        Restrictions:
          items:
            $ref: '#/components/schemas/BasketRestrictionPrompt'
          description: Collection of restrictions prompts to be applied to the deal (e.g. the deal contains alcohol)
          type: array
        Substitution:
          $ref: '#/components/schemas/BasketItemSubstitution'
        CustomerNotes:
          nullable: true
          type: string
          description: The customer's item-level notes
      type: object
    BasketDealGroup:
      description: A deal group Id
      properties:
        DealGroupId:
          type: string
          description: The Id of a deal group
        Products:
          items:
            $ref: '#/components/schemas/BasketDealProduct'
          type: array
      type: object
    BasketDealProduct:
      description: A deal product
      properties:
        Name:
          type: string
          description: Name of the product
        Variation:
          nullable: true
          type: string
          description: The variation
        TotalPrice:
          format: decimal
          type: number
          description: The total price
        ModifierGroups:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketModifierGroup'
          type: array
        Quantity:
          format: integer
          type: number
          description: The quantity
        RemovedIngredients:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketRemovedIngredient'
          type: array
        ProductId:
          type: string
          description: The product id
        Availability:
          nullable: true
          $ref: '#/components/schemas/BasketAvailability'
          description: Availability information for the product including stock status
        Constraints:
          nullable: true
          $ref: '#/components/schemas/BasketConstraints'
      type: object
    BasketDeliveryModelOptions:
      type: object
      description: Contains the delivery quotes
      nullable: true
      required:
        - SelectedOption
        - HasChanged
        - Options
      properties:
        SelectedOption:
          type: string
          description: The identifier of the delivery model option selected by the customer.
          nullable: false
          enum:
            - courier
            - drone
        HasChanged:
          nullable: false
          type: boolean
          description: Indicates whether the delivery model option has changed during this request.
        AssociatedPartners:
          type: array
          nullable: false
          description: A list of other partners that this basket is valid for.
          items:
            type: object
            description: A separate partner associated with this partner.
            required:
              - Id
              - SeoName
            properties:
              Id:
                type: string
                description: Unique identifier for this partner.
                minLength: 1
                maxLength: 100
                nullable: false
              SeoName:
                type: string
                description: Public name of this partner used for Search Engine Optimization (SEO).
                minLength: 1
                maxLength: 100
                nullable: false
              IsPrimary:
                type: boolean
                description: Indicates whether this partner is the primary partner for this basket.
        Options:
          type: array
          nullable: false
          description: The list of available delivery models for the checkout.
          minItems: 1
          items:
            type: object
            required:
              - Id
              - Available
            properties:
              Id:
                type: string
                description: The identifier of the delivery model.
                nullable: false
                enum:
                  - courier
                  - drone
              DeliveryCharge:
                type: object
                nullable: true
                description: The delivery fee for this delivery model - null if fee is not calculated.
                properties:
                  fee:
                    format: decimal
                    type: number
                    nullable: false
                    minimum: 0
                    description: The amount of the delivery fee
              Available:
                type: boolean
                description: Whether the delivery model is currently available
                nullable: false
              UnavailabilityReason:
                type: string
                description: A localized message explaining to the customer why the delivery model is not available, if applicable.
                nullable: true
                minLength: 0
                maxLength: 250
    BasketDiscount:
      description: Discount details.
      additionalProperties: false
      type: object
      title: Discount
      properties:
        discountAmount:
          description: Money discount.
          nullable: false
          type: number
          format: decimal
          minimum: 0.01
        discountPercentage:
          description: Percent discount.
          nullable: false
          format: integer
          type: number
          minimum: 1
          maximum: 100
      minProperties: 1
      maxProperties: 1
      example:
        discountAmount: 51.07
    BasketGenericErrorResponse:
      description: Generic error response structure
      properties:
        ErrorCode:
          type: string
          description: Detailed error code that happened
        Description:
          type: string
          description: The details of the error
        SubErrors:
          items:
            type: string
          type: array
          description: The details of the inner errors
      type: object
    BasketGroupSummary:
      description: Group information.
      properties:
        GroupSummaryId:
          type: string
          description: Unique identifier of the group
        GroupName:
          type: string
          description: Name of the group based on the Initiator name
        Url:
          type: string
          description: URL to user-facing web application to join the group
        Status:
          type: string
          description: Status of the actual group
          enum:
            - open
            - locked
            - deleted
        Participants:
          type: array
          description: Participant needed to relate products to participants of the group.
          items:
            type: object
            properties:
              ParticipantId:
                type: string
                description: Unique identifier of the participant
              IsMe:
                type: boolean
                description: Indicates if the participant is the caller
                nullable: true
              Name:
                type: string
                description: Name of the participant
              FirstName:
                type: string
                description: Participants first name
                nullable: true
                minLength: 1
                maxLength: 100
              LastName:
                type: string
                description: Participants last name
                nullable: true
                maxLength: 100
              PhoneNumber:
                type: string
                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.
                nullable: true
                minLength: 3
                maxLength: 16
              DateOfBirth:
                type: string
                format: date
                description: |
                  Customer's date of birth represented in ISO 8601 date format.

                  Required in Australia (AU) only for fulfilling an order that contain items being purchased that require age verification.
                nullable: true
              Role:
                type: string
                enum:
                  - initiator
                  - participant
                description: Role of the participant within the group
              Status:
                type: string
                enum:
                  - ordering
                  - ready
                description: Status of the participant within the group
              PaymentMethods:
                type: array
                description: List of payment methods
                maxItems: 4
                nullable: true
                items:
                  $ref: '#/components/schemas/BasketPaymentMethod'
              Tipping:
                type: object
                nullable: true
                description: Tipping information for the participant
                allOf:
                  - $ref: '#/components/schemas/BasketTipping'
              Voucher:
                nullable: true
                type: object
                description: Participant voucher information
                properties:
                  Code:
                    type: string
                    description: Voucher code applied by participant.
              DeliveryVoucher:
                nullable: true
                type: object
                description: Delivery voucher information
                properties:
                  Code:
                    type: string
                    description: The delivery voucher code
              BalanceShare:
                nullable: true
                type: object
                description: JET Pay information
                properties:
                  IsAvailable:
                    type: boolean
                    description: Indicates if participant can share their balance with initiator.
                  Balance:
                    format: decimal
                    type: number
                    description: The amount participant has to share from their balance.
                  OptedIn:
                    type: boolean
                    description: Indicates if participant opted to share their balance with initiator.
                  Reference:
                    type: string
                    description: The reference information that participant can add for their tracking purpose.
                  ReferenceRequired:
                    type: boolean
                    description: Indicates if Reference is mandatory field that need to be filled by participant.
              Adjustments:
                items:
                  $ref: '#/components/schemas/BasketAdjustments'
                type: array
                description: List of participant adjustments
                example:
                  - Type: ItemDepositGroup
                    Name: Deposit £0.25 x 2
                    Adjustment: 0.5
                    Description: Deposit £0.25 x 2
                  - Type: ShareMyBalance
                    Name: Share My Balance
                    Adjustment: -4
                    Description: Share My Balance
              BasketTotals:
                type: object
                description: Calculated totals for participant.
                properties:
                  SubTotal:
                    format: decimal
                    type: number
                    description: The subtotal for the participant before any discounts or fees.
                  AdjustmentsTotal:
                    format: decimal
                    type: number
                    description: Total of the adjustments.
                  FeesTotal:
                    nullable: true
                    format: decimal
                    type: number
                    description: Total fees (e.g. delivery charge, service fee) applicable to the participant. Only populated for participants with the initiator role.
                  Total:
                    format: decimal
                    type: number
                    description: The total for the participant after shared balance.
              Products:
                type: array
                description: Product selected
                items:
                  type: object
                  properties:
                    BasketProductId:
                      type: string
                      description: The basket product identifier
                    TotalPrice:
                      format: decimal
                      type: number
                      description: The total price
                    Quantity:
                      type: number
                      format: integer
                      description: The quantity
              Deals:
                type: array
                description: Deals selected
                items:
                  type: object
                  properties:
                    BasketProductId:
                      type: string
                      description: The basket product identifier
                    TotalPrice:
                      format: decimal
                      type: number
                      description: The total price
                    Quantity:
                      type: number
                      format: integer
                      description: The quantity
              CategoryOffers:
                type: array
                description: List of category offers applied by the participant
                nullable: true
                items:
                  type: object
                  properties:
                    OfferId:
                      type: string
                      nullable: false
                      description: The unique identifier of the offer
                    Quantity:
                      type: integer
                      nullable: false
                      format: int32
                      description: The quantity of the offer
      type: object
    BasketInvalidParticipant:
      description: Details about error with group order participant
      properties:
        ParticipantId:
          type: string
          description: The participant id
        ErrorType:
          type: string
          description: The type of the error
      type: object
    BasketInvalidProduct:
      description: An invalid product
      properties:
        Name:
          type: string
          description: The name
        ProductId:
          type: string
          description: The product id
      type: object
    BasketItemDiscount:
      additionalProperties: false
      description: Details of an Item discount
      type: object
      title: ItemDiscount
      properties:
        OfferId:
          description: The unique identifier of underlying consumer offers
          nullable: false
          type: string
        OfferType:
          description: The type of the offer
          nullable: false
          type: string
        ConsumerSegment:
          description: Consumer Segment to which offer applies
          nullable: false
          type: string
        Amount:
          description: The absolute amount of the discount
          nullable: false
          type: number
          format: decimal
          minimum: 0.01
        Discount:
          description: Discount details
          $ref: '#/components/schemas/BasketDiscount'
    BasketItemDiscountPrompt:
      additionalProperties: false
      type: object
      title: ItemDiscountPrompt
      description: The prompt to display for an item discount
      properties:
        Title:
          description: The title to show in prompt for customer
          type: string
        ItemDiscounts:
          items:
            $ref: '#/components/schemas/BasketItemDiscountPromptItem'
          description: The array of items with discounts
          type: array
        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
        OfferId:
          description: The identifier of offer causing prompt to be shown
          type: string
        RedeemableQuantity:
          description: The number of times the offer can be redeemed
          format: integer
          type: number
      example:
        ItemDiscounts:
          - ProductId: Lemonade1234
            DiscountPercentage: 100
            ModifierGroups:
              - ModifierGroupId: modifier111
                MinimumChoices: 1
                Modifiers:
                  - ModifierId: NoSugar11
                    Quantity: 1
                    TotalPrice: 0
                    MaximumAdditionalModifiers: 0
        Title: Get free lemonade
        Description: Get free lemonade with Super Burger
        Header: Free item!
        OfferId: abf1234G
        RedeemableQuantity: 1
    BasketItemDiscountPromptItem:
      additionalProperties: false
      description: An Item discount prompt item
      type: object
      title: ItemDiscountPromptItem
      properties:
        DiscountPercentage:
          description: The discount percentage applied.
          format: integer
          type: number
          minimum: 1
          maximum: 100
        ProductId:
          description: The unique identifier of the discounted product item.
          type: string
        ModifierGroups:
          nullable: true
          minLength: 1
          items:
            $ref: '#/components/schemas/BasketModifierGroup'
          description: The collection of preselected modifier groups for the item.
          type: array
      example:
        ProductId: Lemonade1234
        DiscountPercentage: 100
        ModifierGroups:
          - ModifierGroupId: modifier111
            MinimumChoices: 1
            Modifiers:
              - ModifierId: NoSugar11
                Quantity: 1
                TotalPrice: 0
                MaximumAdditionalModifiers: 0
    BasketItemSubstitution:
      description: Information about basket item substitution preference.
      properties:
        Preference:
          type: string
          description: The substitution preference. Currently BestMatch or Refund are supported. If the partner supports basket level substitution then BestMatch is used by default. Otherwise - Refund
      type: object
    BasketJoinResponse:
      description: The response object for join endpoint.
      properties:
        GroupId:
          type: string
          description: The group identifier
        GroupName:
          type: string
          description: Name of the group based on the Initiator name
        RestaurantSeoName:
          description: A unique name per tenant for a restaurant used for external operations.
          type: string
        MenuUrl:
          description: Restaurant menu URL with group identifier.
          type: string
      type: object
    BasketModifier:
      description: Details of a basket modifier
      properties:
        Name:
          type: string
          description: The name
        MaximumAdditionalModifiers:
          format: integer
          type: number
          description: The upper limit for additional modifiers
        ModifierId:
          type: string
          description: The modifier Id
        Quantity:
          format: integer
          type: number
          description: The Quantity
        TotalPrice:
          format: decimal
          type: number
          description: The total price
        UnitPrice:
          format: decimal
          type: number
          description: The total price
        Constraints:
          nullable: true
          $ref: '#/components/schemas/BasketConstraints'
      type: object
    BasketModifierGroup:
      description: Details of a modifier group
      required:
        - MinimumChoices
      properties:
        MinimumChoices:
          format: integer
          type: number
          description: The minimum number of choices
        ModifierGroupId:
          type: string
          description: The modifier group Id
        Modifiers:
          items:
            $ref: '#/components/schemas/BasketModifier'
          type: array
      type: object
    BasketOffer:
      description: Object containing all information about an offer
      properties:
        OfferId:
          type: string
          description: The id of the offer
        OfferType:
          type: string
          description: The type of offer
        QualifyingValue:
          format: decimal
          type: number
          description: The amount required to qualify
        ToSpendValue:
          format: decimal
          type: number
          description: The amount left to spend to qualify
        ToSpendDescription:
          nullable: true
          type: string
          description: The description to show for customer in case Subtotal is less than offer qualifying value
        DiscountValue:
          format: decimal
          type: number
          description: The percent value of the percent offer discount
      type: object
    BasketOfflineProduct:
      description: The details of an offline product
      properties:
        Name:
          type: string
          description: The name
        ProductId:
          type: string
          description: The product Id
      type: object
    BasketPayment:
      description: Schema for Payment information
      properties:
        Methods:
          nullable: true
          type: array
          description: List of payment methods
          items:
            $ref: '#/components/schemas/BasketPaymentMethod'
      type: object
    BasketPaymentDirectives:
      description: The directives for payment component
      properties:
        DisableCashPayment:
          description: Indicates if cash payment option should be disabled
          type: boolean
        PaymentCaptureMode:
          description: Describes the type of payment. If null, it's at the point of purchase. Values currently only include 'afterFulfillment', meaning payment is taken after the order is fulfilled.
          type: string
          nullable: true
          enum:
            - afterFulfillment
      type: object
    BasketPaymentMethod:
      description: Payment method information
      properties:
        Type:
          type: string
          description: The payment method type
          minLength: 1
          maxLength: 100
        AdditionalData:
          type: object
          nullable: true
          description: Additional data related to the payment method
          additionalProperties: true
      type: object
    BasketProduct:
      description: The details of a product
      properties:
        Name:
          type: string
          description: The name
        Variation:
          nullable: true
          type: string
          description: The variation
        ModifierGroups:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketModifierGroup'
          type: array
        Quantity:
          format: integer
          type: number
          description: The quantity
        RemovedIngredients:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketRemovedIngredient'
          type: array
        BasketProductIds:
          items:
            type: string
          type: array
        CategoryId:
          type: string
          description: The category Id
        ProductId:
          type: string
          description: The product Id
        TotalPrice:
          format: decimal
          type: number
          description: The total price, based on the unit price and the quantity
        DiscountedPrice:
          format: decimal
          type: number
          nullable: true
          description: The discounted price, based on the total price less any offers. null if no offer has been applied.
        UnitPrice:
          format: decimal
          type: number
          description: The price of the single unit product
        Restrictions:
          items:
            $ref: '#/components/schemas/BasketRestrictionPrompt'
          description: Collection of restrictions prompts to be applied to the product (e.g. the product contains alcohol)
          type: array
        Prompts:
          $ref: '#/components/schemas/BasketProductPrompts'
          description: Collection of prompts to be applied to the product (e.g. the max quantity reached)
        Availability:
          nullable: true
          $ref: '#/components/schemas/BasketAvailability'
          description: Availability information for the product including stock status
        Discounts:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketItemDiscount'
          description: Collection of discounts applied to the product (e.g. `FreeItem`, `Bogof`, `ItemLevelDiscount`, `BogofMixMatch` or `Bogo` etc)
          type: array
        Substitution:
          $ref: '#/components/schemas/BasketItemSubstitution'
        CustomerNotes:
          nullable: true
          type: string
          description: The customer's item-level notes
        Constraints:
          nullable: true
          $ref: '#/components/schemas/BasketConstraints'
        NetQuantity:
          type: object
          nullable: true
          description: The net quantity of a single basket line for an item sold by net quantity (by weight or volume) rather than by unit. Present only for items sold by net quantity.
          required:
            - Unit
            - Value
          properties:
            Unit:
              type: string
              description: Unit of measurement for the net quantity.
            Value:
              format: decimal
              type: number
              minimum: 0
              description: Numeric value of the net quantity, expressed in the unit given by the Unit property.
      type: object
    BasketProductPrompts:
      description: Prompts related to the product.
      properties:
        MaxQuantityReached:
          description: If no more of the product can be added to the basket this will be `True`
          type: boolean
      type: object
    BasketPrompts:
      description: A basket prompt
      properties:
        OfflineProducts:
          items:
            $ref: '#/components/schemas/BasketOfflineProduct'
          description: Collection of product ids (variations, deals or both) that could not be added to the basket as they are currently offline. These will include product/deals which modifiers are also offline
          type: array
        SpendMore:
          nullable: true
          $ref: '#/components/schemas/BasketSpendMore'
        TopUpToMov:
          nullable: true
          $ref: '#/components/schemas/BasketSmallOrderFeePrompt'
          description: The Minimum Order Value (MOV) of the restaurant if a TopUpToMov Small Order Fee has been applied to the basket. Mutually exclusive with FixedByBand.
        FixedByBand:
          nullable: true
          $ref: '#/components/schemas/BasketSmallOrderFeePrompt'
          description: The highest 'MaxOrderAmount' of the restaurant's Small Order Fee config bands, if a FixedByBand Small Order Fee has been applied to the basket. Mutually exclusive with TopUpToMov.
        Offers:
          items:
            $ref: '#/components/schemas/BasketOffer'
          type: array
        InvalidProducts:
          items:
            $ref: '#/components/schemas/BasketInvalidProduct'
          type: array
        InvalidParticipants:
          items:
            $ref: '#/components/schemas/BasketInvalidParticipant'
          type: array
          description: Collection of errors that happened to the participant to be shown to the customer
        ItemDiscounts:
          items:
            $ref: '#/components/schemas/BasketItemDiscountPrompt'
          description: Collection of item discount prompts to be shown to the customer
          type: array
        RequiresOther:
          type: boolean
          description: True if extra products are required. An example is when you need to add food if your basket only contains drinks
        DiscountApplied:
          nullable: true
          description: Details of applied discounts
          properties:
            Amount:
              format: decimal
              type: number
              description: The amount
          type: object
        RefreshMenu:
          type: boolean
          description: Flag that describes the menu needs to be reloaded (e.g. items in the basket become invalid so the menu needs to be re-fetched)
        Restrictions:
          items:
            $ref: '#/components/schemas/BasketRestrictionPrompt'
          description: Collection of restrictions prompts to be shown to the customer (e.g. the basket contains alcoholic items)
          type: array
        AmountSavedWithDeliveryBenefit:
          nullable: true
          description: The amount saved when the delivery benefit is applied
          format: decimal
          type: number
        RemainingSpendForDeliveryBenefit:
          nullable: true
          description: The amount a user still needs to spend to get the delivery benefit applied
          format: decimal
          type: number
        ClaimedVouchersAvailable:
          nullable: true
          type: boolean
          description: Indicated whether the user has a claimed voucher.
      type: object
    BasketQuantityRestriction:
      description: Quantity restriction details.
      required:
        - Id
        - Quota
        - Remaining
      properties:
        Id:
          type: string
          description: The unique identifier of the quantity restriction.
        Quota:
          type: number
          format: decimal
          description: The maximum allowed quota for the quantity restriction, treated as a number that variations can contribute towards.
        Remaining:
          type: number
          format: decimal
          description: The remaining quota for the quantity restriction, treated as a number that variations can still contribute towards.
      type: object
    BasketRemovedIngredient:
      description: A removed ingredient
      properties:
        Details:
          type: string
          description: The ingredient details
      type: object
    BasketRestaurantOffer:
      description: Details of a restaurant offer
      required:
        - OfferId
        - OfferType
        - ConsumerSegment
        - DiscountApplied
      properties:
        OfferType:
          nullable: false
          description: The type of the offer
          type: string
        OfferId:
          nullable: false
          description: The unique identifier of the offer
          type: string
        DiscountValue:
          nullable: false
          description: The percentage value discount. Returned 0 when offer is not of Percent type
          format: decimal
          type: number
        ConsumerSegment:
          nullable: false
          description: Consumer Segment to which offer applies
          example: NewToRestaurant
          type: string
        DiscountApplied:
          nullable: false
          description: The money value discount
          format: decimal
          type: number
        DiscountCode:
          nullable: true
          description: The unique code of the discount, acts as a lock object at payment stage
          type: string
        Benefits:
          type: array
          items:
            type: string
          description: Intersection of membership benefits and offer qualifying criteria benefits
        HasMinimumSpendValue:
          nullable: false
          description: If the offer had a minimum spend value to be applied.
          type: boolean
        MaxDiscountValue:
          nullable: true
          description: The maximum discount value for this specific offer
          format: decimal
          type: number
        Name:
          nullable: true
          description: The display name of the offer
          type: string
        Information:
          nullable: true
          description: Details for the offer bottom sheet
          type: object
          properties:
            Title:
              nullable: false
              description: The bottom sheet heading
              type: string
            Description:
              nullable: false
              description: The bottom sheet body text
              type: string
          required:
            - Title
            - Description
      type: object
    BasketRestrictionPrompt:
      description: A restriction prompt. Represents an uncommon characteristic/type of an item or basket (e.g. item or basket items contain alcohol)
      properties:
        Type:
          description: The restriction type
          $ref: '#/components/schemas/BasketRestrictionPromptType'
      type: object
    BasketRestrictionPromptType:
      description: The restriction prompt type
      enum:
        - None
        - Alcohol
      type: string
    BasketSmallOrderFeePrompt:
      description: Details of additional required spend to meet the criteria for a Small Order Fee to not be applied.
      properties:
        Threshold:
          format: decimal
          type: number
          nullable: true
          description: Additional required spend, in major currency units, to meet the criteria for a Small Order Fee to not be applied e.g. in GBP £10.00
      type: object
    BasketSpendMore:
      description: Details of additional required spend to meet minimum order value (MOV). When null it means that MOV is reached
      properties:
        ToSpend:
          format: decimal
          type: number
          description: Amount to spend
        MinimumOrderAmount:
          format: decimal
          type: number
          description: The minimum order required
      type: object
    BasketStockStatus:
      description: The current stock status of the product.
      type: string
      enum:
        - InStock
        - LowStock
      example: LowStock
    BasketTipping:
      description: Tipping information
      properties:
        Courier:
          type: object
          description: Courier tipping information
          properties:
            FixedAmount:
              type: object
              description: Fixed amount tipped to courier.
              properties:
                Amount:
                  format: integer
                  type: number
                  description: Tipping Amount.
            CustomAmount:
              type: object
              description: Custom amount tipped to courier.
              properties:
                Amount:
                  format: integer
                  type: number
                  description: Tipping Amount.
      type: object
    BasketUpdateAddedDeal:
      description: Update a deal
      properties:
        Date:
          description: '`YYYY-MM-DDThh:mm:ssZ (UTC)`'
          type: string
        DealGroups:
          items:
            $ref: '#/components/schemas/BasketUpdateDealGroup'
          type: array
        Quantity:
          format: integer
          type: number
          description: The quantity
        ProductId:
          type: string
          description: The product Id
      type: object
    BasketUpdateAddedProduct:
      description: Update an added deal
      properties:
        Date:
          description: '`YYYY-MM-DDThh:mm:ssZ (UTC)`'
          type: string
        ModifierGroups:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketUpdateModifierGroup'
          type: array
        Quantity:
          format: integer
          type: number
          description: The quantity
        RemovedIngredients:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketUpdateRemovedIngredient'
          type: array
        ProductId:
          type: string
          description: The product Id
      type: object
    BasketUpdateDeal:
      description: Details of the deal to update
      properties:
        Added:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketUpdateAddedDeal'
          type: array
        Removed:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketUpdateRemoved'
          type: array
        Updated:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketUpdateUpdatedDeal'
          type: array
      type: object
    BasketUpdateDealGroup:
      properties:
        DealGroupId:
          type: string
          description: The Id of the deal group
        Products:
          items:
            $ref: '#/components/schemas/BasketUpdateAddedProduct'
          type: array
      type: object
    BasketUpdateLocation:
      description: Details of a location update
      properties:
        GeoLocation:
          nullable: true
          description: The location
          properties:
            Date:
              type: string
              description: The date
            Value:
              allOf:
                - properties:
                    Longitude:
                      format: decimal
                      type: number
                      description: Longitude
                    Latitude:
                      format: decimal
                      type: number
                      description: Latitude
                  type: object
              description: Not available across platform yet, but applied for future proofing.
          type: object
        ZipCode:
          nullable: true
          description: Zip code details
          properties:
            Date:
              type: string
              description: The date of the update
            Value:
              type: string
              description: The updated value
          type: object
      type: object
    BasketUpdateModifier:
      description: Details of an update to the modifier
      properties:
        ModifierId:
          type: string
          description: The modifier Id
        Quantity:
          format: integer
          type: number
          description: The Quantity
      type: object
    BasketUpdateModifierGroup:
      description: Update to a modifier group
      properties:
        Modifiers:
          items:
            $ref: '#/components/schemas/BasketUpdateModifier'
          type: array
        ModifierGroupId:
          type: string
          description: The Id of the modifier group
      type: object
    BasketUpdateOrderDetails:
      description: Order details update
      properties:
        Location:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BasketUpdateLocation'
        Customer:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BasketCustomer'
        AgeVerification:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BasketAgeVerification'
        Payment:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BasketPayment'
        Tipping:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BasketTipping'
        Voucher:
          nullable: true
          type: object
          description: Participant voucher information
          properties:
            Code:
              type: string
              description: Voucher code applied by participant.
        DeliveryVoucher:
          nullable: true
          type: object
          description: Delivery voucher information
          properties:
            Code:
              type: string
              description: The delivery voucher code
      type: object
    BasketUpdateProduct:
      description: A product update
      properties:
        Added:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketUpdateAddedProduct'
          type: array
        Removed:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketUpdateRemoved'
          type: array
        Updated:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketUpdateUpdatedProduct'
          type: array
      type: object
    BasketUpdateQuantity:
      description: Update the quantity of an item
      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
    BasketUpdateRemoved:
      description: Update removed items
      properties:
        Date:
          description: '`YYYY-MM-DDThh:mm:ssZ (UTC)`'
          type: string
        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
      type: object
    BasketUpdateRemovedIngredient:
      description: An update to the removed ingredient
      properties:
        Details:
          type: string
          description: Details of the removed ingredient
      type: object
    BasketUpdateRequest:
      description: The request object for updating a basket.
      properties:
        Product:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BasketUpdateProduct'
        BasketId:
          type: string
          description: The basket id
        SelectedServiceType:
          description: The selected service type
          nullable: true
          properties:
            Date:
              type: string
              description: The timestamp
            Value:
              type: string
              description: The value of the type selected
          type: object
        DeliveryModelOption:
          type: string
          nullable: true
          description: The new delivery model option for the basket
          enum:
            - courier
            - drone
        SubstitutionPreference:
          description: The basket level substitution preference. Currently BestMatch, Refund or Item are supported. If provided, will update the selected preference, but only if the partner supports substitution. Otherwise - ignored.
          nullable: true
          type: string
        OrderDetails:
          nullable: true
          description: Information needed to allow an order to be placed on a basket.
          allOf:
            - $ref: '#/components/schemas/BasketUpdateOrderDetails'
        Deal:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BasketUpdateDeal'
        Consents:
          items:
            $ref: '#/components/schemas/BasketConsent'
          description: Consents added to the basket.
          type: array
      type: object
    BasketUpdateUpdatedDeal:
      description: An update to a deal
      properties:
        Date:
          description: '`YYYY-MM-DDThh:mm:ssZ (UTC)`'
          type: string
        DealGroups:
          items:
            $ref: '#/components/schemas/BasketUpdateDealGroup'
          type: array
        Quantity:
          $ref: '#/components/schemas/BasketUpdateQuantity'
        BasketProductId:
          type: string
          description: The basket product Id
        CustomerNotes:
          maxLength: 160
          nullable: true
          type: string
          description: The customer's item-level notes. Maximum length 160 characters.
      type: object
    BasketUpdateUpdatedProduct:
      description: An update to a product
      properties:
        Date:
          description: '`YYYY-MM-DDThh:mm:ssZ (UTC)`'
          type: string
        ModifierGroups:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketUpdateModifierGroup'
          type: array
        Quantity:
          $ref: '#/components/schemas/BasketUpdateQuantity'
        RemovedIngredients:
          nullable: true
          items:
            $ref: '#/components/schemas/BasketUpdateRemovedIngredient'
          type: array
        BasketProductId:
          type: string
          description: The basket product id
        CustomerNotes:
          maxLength: 160
          nullable: true
          type: string
          description: The customer's item-level notes. Maximum length 160 characters.
      type: object
    BenderBenderErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: The error message
          type: string
        error:
          description: Error Title
          type: string
      type: object
    BenderBenderSettings:
      description: The bender settings object for all endpoints.
      properties:
        settingsFlexStates:
          allOf:
            - $ref: '#/components/schemas/BenderSettingsFlexStates'
          description: Flex states information for given Delivery Zone Id
        protectionThreshold:
          description: Number of hours of Threshold protection
          format: integer
          type: number
        targetUsage:
          nullable: true
          description: Minimum target Usage Percentage
          format: double
          type: number
        benderStatus:
          description: Bender On/Off Status
          type: boolean
        deliveryZoneId:
          description: Bender Settings Delivery Zone Id
          type: string
      type: object
    BenderBenderSettingsList:
      description: Bender Settings List
      properties:
        benderSettingsList:
          items:
            $ref: '#/components/schemas/BenderBenderSettings'
          description: List of Bender Settings
          type: array
      type: object
    BenderFlexStateType:
      enum:
        - CODE_RED
        - OPEN
        - SEEKING
      type: string
      description: Flex State Type Options
    BenderSettingsFlexStates:
      properties:
        triggerUsage:
          description: Usage percentage for given state type
          format: double
          type: number
        flexStateType:
          $ref: '#/components/schemas/BenderFlexStateType'
        averageAssignableJobLoad:
          nullable: true
          description: Average assignable Job load for given state type
          format: double
          type: number
      type: object
    BinaryObject:
      format: binary
      type: string
    BitbucketBitbucketCloudWebhook:
      description: Bitbucket cloud webhook event
      properties:
        actor:
          type: string
          description: The user who pushed the commits.
        repository:
          type: string
          description: The repository with the commits
        push:
          description: The details of the push, which includes the changes property.
          properties:
            new:
              description: An object containing information about the state of the reference after the push.
              properties:
                type:
                  type: string
                  description: The type of reference with the change.
                name:
                  type: string
                  description: The name of the branch, tag, named branch, or bookmark.
                target:
                  type: string
                  description: The details of the most recent commits after the push.
                links:
                  type: string
                  description: Links to the reference in the API
              type: object
            old:
              description: An object containing information about the state of the reference before the push.
              properties:
                type:
                  type: string
                  description: The type of reference with the change.
                name:
                  type: string
                  description: The name of the branch, tag, named branch, or bookmark.
                target:
                  type: string
                  description: The details of the most recent commits after the push.
                links:
                  type: string
                  description: Links to the reference in the API
              type: object
            links:
              type: string
              description: Links to the reference in the API
            created:
              type: boolean
              description: true or false to indicate whether the reference is new.
            closed:
              type: boolean
              description: true or false to indicate whether the reference is old.
            forced:
              type: boolean
              description: true or false to indicate whether the push was forced.
            truncated:
              type: boolean
              description: true or false to indicate whether Bitbucket truncated the commits array.
          type: object
      type: object
    BitbucketcloudBitbucketCloudWebhook:
      description: Bitbucket cloud webhook event
      properties:
        actor:
          type: string
          description: The user who pushed the commits.
        repository:
          type: string
          description: The repository with the commits
        push:
          description: The details of the push, which includes the changes property.
          properties:
            new:
              description: An object containing information about the state of the reference after the push.
              properties:
                type:
                  type: string
                  description: The type of reference with the change.
                name:
                  type: string
                  description: The name of the branch, tag, named branch, or bookmark.
                target:
                  type: string
                  description: The details of the most recent commits after the push.
                links:
                  type: string
                  description: Links to the reference in the API
              type: object
            old:
              description: An object containing information about the state of the reference before the push.
              properties:
                type:
                  type: string
                  description: The type of reference with the change.
                name:
                  type: string
                  description: The name of the branch, tag, named branch, or bookmark.
                target:
                  type: string
                  description: The details of the most recent commits after the push.
                links:
                  type: string
                  description: Links to the reference in the API
              type: object
            links:
              type: string
              description: Links to the reference in the API
            created:
              type: boolean
              description: true or false to indicate whether the reference is new.
            closed:
              type: boolean
              description: true or false to indicate whether the reference is old.
            forced:
              type: boolean
              description: true or false to indicate whether the push was forced.
            commits:
              description: An object containing the commit
              properties:
                hash:
                  type: string
                  description: The hash of the commit.
                message:
                  type: string
                  description: the commit message
                links:
                  type: string
                  description: The link to the commit.
                author:
                  type: string
                  description: The link to the user.
              type: array
            truncated:
              type: boolean
              description: true or false to indicate whether Bitbucket truncated the commits array.
          type: object
      type: object
    BotgatewayapiAvailabilityResponse:
      type: object
      description: Availability response
      properties:
        status:
          description: Agent availability status
          type: string
          enum:
            - online
            - away
            - offline
      example:
        status: online
    BotgatewayapiBadItemsQueryAcceptResolutionRequest:
      type: object
      description: Accept query resolution
      properties:
        type:
          $ref: '#/components/schemas/BotgatewayapiResolutionType'
        queryType:
          $ref: '#/components/schemas/BotgatewayapiResolutionQueryType'
        method:
          $ref: '#/components/schemas/BotgatewayapiCompensationMethodType'
        comments:
          description: Customers comment.
          type: string
        metadata:
          $ref: '#/components/schemas/BotgatewayapiRequestMetadata'
      example:
        type: Compensation
        queryType: cold
        method: Credit
        comments: Bad item
        metadata:
          languageCode: en
          platform: android
          externalId: 68fa23490330bba0b7b2ijk
    BotgatewayapiBadItemsQueryRequest:
      type: object
      description: Bad items query for resolution
      properties:
        queryType:
          $ref: '#/components/schemas/BotgatewayapiResolutionType'
        userType:
          $ref: '#/components/schemas/BotgatewayapiUserType'
        metadata:
          $ref: '#/components/schemas/BotgatewayapiRequestMetadata'
      example:
        queryType: Compensation
        userType: LOGGED_IN
        metadata:
          languageCode: en
          platform: android
          externalId: 68fa23490330bba0b7b2ijk
    BotgatewayapiBadItemsQueryResponse:
      type: object
      description: Bad items query success response
      properties:
        queryId:
          description: Query id.
          type: string
        reason:
          description: Reason.
          type: string
        resolutionId:
          description: Resolution id.
          type: string
        resolutionType:
          $ref: '#/components/schemas/BotgatewayapiResolutionType'
        totalCompensationAmount:
          description: Total compensation amount
          type: number
        cardCompensation:
          $ref: '#/components/schemas/BotgatewayapiCompensationMethod'
        creditCompensation:
          $ref: '#/components/schemas/BotgatewayapiCompensationMethod'
        corporatePayCompensation:
          $ref: '#/components/schemas/BotgatewayapiCompensationMethod'
        splitCompensation:
          $ref: '#/components/schemas/BotgatewayapiSplitCompensationMethod'
        compensationAdjustmentPolicy:
          $ref: '#/components/schemas/BotgatewayapiCompensationAdjustmentPolicy'
        compensationAffectedItems:
          description: Compensation affected items
          type: array
          items:
            $ref: '#/components/schemas/BotgatewayapiCompensationAffectedItem'
        compensationPolicyFailures:
          description: Compensation policy failures
          type: array
          items:
            type: string
        offlineCompensationPolicyFailures:
          description: Offline compensation policy failures
          type: array
          items:
            type: string
      example:
        queryId: 5e8493c85-902a-45fd-91f6-432896e9f48d
        reason: bad item
        resolutionType: Compensation
        totalCompensationAmount: 6.75
        cardCompensation:
          amount: 6.75
          isOffered: true
        creditCompensation:
          amount: 6.75
          isOffered: true
        compensationAffectedItems:
          - itemId: i11-9430ee9-93dc-8a4f549e3289
            name: Fresh Co-op Tomato 300g
            offeredReturn: 2.3
            price: 2.3
            affectedSubItemsPrice: 2.3
    BotgatewayapiCancellationAcceptResolutionRequest:
      type: object
      description: Cancellation accept resolution query
      properties:
        comments:
          description: Comments
          type: string
        metadata:
          $ref: '#/components/schemas/BotgatewayapiRequestMetadata'
    BotgatewayapiCancellationQueryRequest:
      type: object
      description: Cancellation query request for resolutions
      properties:
        reasonCode:
          description: Reason code
          type: string
        metadata:
          $ref: '#/components/schemas/BotgatewayapiRequestMetadata'
    BotgatewayapiCancellationQueryResponse:
      type: object
      description: Cancellation query success response
      properties:
        queryId:
          description: Query id.
          type: string
        reasonCode:
          description: Reason code.
          type: string
        resolutionType:
          $ref: '#/components/schemas/BotgatewayapiResolutionType'
        resolutionExpiresAt:
          description: Resolution expiry date
          format: date-time
          type: string
        isOffered:
          description: Cancellation query offered flag.
          type: boolean
        cancellationResolution:
          description: Cancellation Resolution
          type: object
          properties:
            feeAmount:
              description: Fee amount
              type: number
            feePercentage:
              description: Fee percentage
              type: number
            feeJustification:
              description: Fee description
              type: string
            feeBreakdownItems:
              description: Fee breakdown items
              type: array
              items:
                $ref: '#/components/schemas/BotgatewayapiFeeBreakdownItem'
        policyRuleFailures:
          description: Policy rule failures
          type: array
          items:
            type: string
        state:
          description: State
          type: string
    BotgatewayapiCompensationAdjustmentPolicy:
      type: object
      description: Compensation adjustment policy
      properties:
        adjustmentType:
          description: Adjustment type
          type: string
        adjustmentValue:
          description: Adjustment value
          type: number
    BotgatewayapiCompensationAffectedItem:
      type: object
      description: Compensation affected item
      properties:
        itemId:
          description: Item id.
          type: string
        name:
          description: Name.
          type: string
        compensationAffectedSubItems:
          description: Compensation affected sub items.
          type: array
          items:
            type: object
            properties:
              itemId:
                description: Item id.
                type: string
              name:
                description: Name.
                type: string
              price:
                description: Price
                type: number
              affectedSubItemsPrice:
                description: Affected sub items price
                type: number
    BotgatewayapiCompensationMethod:
      type: object
      description: Compensation method
      properties:
        isOffered:
          description: Compensation method offered flag
          type: boolean
        amount:
          description: Compensation method amount
          type: number
    BotgatewayapiCompensationMethodType:
      type: string
      description: Compensation method type
      enum:
        - Credit
        - CardRefund
        - CorporatePay
        - Split
    BotgatewayapiConversationMetadata:
      type: object
      description: Conversation metadata
      properties:
        conversationId:
          description: Conversation id
          type: string
        userId:
          description: User id
          type: string
        language:
          $ref: '#/components/schemas/BotgatewayapiLanguage'
        summaryMessagePrefix:
          description: Summary message prefix
          type: string
    BotgatewayapiEvidencePreCheckRequest:
      type: object
      description: Submit media pre check request
      properties:
        orderId:
          description: Order identifier.
          type: string
        tenant:
          description: Tenant.
          type: string
          enum:
            - uk
            - ie
            - de
            - at
            - be
            - nl
            - it
            - es
            - ca
            - bg
            - ch
            - dk
            - au
            - pl
            - lu
            - sk
        platform:
          $ref: '#/components/schemas/BotgatewayapiPlatform'
        externalId:
          description: External id.
          type: string
        source:
          description: Source.
          type: string
          enum:
            - chatbot
        mediaUrl:
          description: Media url.
          type: string
      example:
        orderId: o0fu6v9agkkeh0mggd0jfq
        tenant: uk
        platform: android
        externalId: o0fu6
        source: chatbot
        mediaUrl: https://justeatukpoc.zendesk.com/sc/attachments/v2/media_url.jpg
    BotgatewayapiEvidencePreCheckResponse:
      type: object
      description: Evidence pre-check response
      properties:
        mediaUrl:
          description: Media url.
          type: string
        error:
          description: Media validation error.
          type: object
          properties:
            code:
              description: Media validation error code
              type: string
            description:
              description: Media validation error description
              type: string
      example:
        mediaUrl: https://justeatukpoc.zendesk.com/sc/attachments/v2/media_url.jpg
    BotgatewayapiFeeBreakdownItem:
      type: object
      description: Fee breakdown item
      properties:
        paymentType:
          description: Payment type.
          type: string
        amountToTake:
          description: Amount to take.
          type: number
        amountToReturn:
          description: Amount to return.
          type: number
        totalPaymentAmount:
          description: Total payment amount
          type: number
    BotgatewayapiLanguage:
      type: string
      description: Language
      enum:
        - en
        - de
        - nl
        - pl
        - fr
        - bg
        - it
        - da
        - sk
        - es
        - ca
    BotgatewayapiLateOrderCompensationQueryResponse:
      type: object
      description: Late order query request
      properties:
        queryId:
          description: Query id.
          type: string
        resolutionType:
          $ref: '#/components/schemas/BotgatewayapiResolutionType'
        resolutionExpiresAt:
          description: Resolution expiry date
          format: date-time
          type: string
      example:
        queryId: 5e8493c85-902a-45fd-91f6-432896e9f48d
        resolutionType: Compensation
        resolutionExpiresAt: '2025-10-23T13:14:47.282870702Z'
    BotgatewayapiLateOrderEtaUpdateQueryRequest:
      type: object
      description: Late order ETA update request
      properties:
        userType:
          $ref: '#/components/schemas/BotgatewayapiUserType'
        metadata:
          $ref: '#/components/schemas/BotgatewayapiRequestMetadata'
      example:
        userType: LOGGED_IN
        metadata:
          languageCode: en
          platform: android
          externalId: 68fa23490330bba0b7b2ijk
    BotgatewayapiLateOrderQueryRequest:
      type: object
      description: Late order query request
      properties:
        metadata:
          $ref: '#/components/schemas/BotgatewayapiRequestMetadata'
      example:
        metadata:
          languageCode: en
          platform: android
          externalId: 68fa23490330bba0b7b2ijk
    BotgatewayapiLateOrderQueryResponse:
      type: object
      description: Late order query success response
      properties:
        queryId:
          description: Query id.
          type: string
        resolutionType:
          $ref: '#/components/schemas/BotgatewayapiResolutionType'
        resolutionExpiresAt:
          description: Resolution expiry date
          format: date-time
          type: string
        canRaiseCompensationQuery:
          description: Can raise compensation query flag
          type: boolean
      example:
        queryId: 5e8493c85-902a-45fd-91f6-432896e9f48d
        resolutionType: Compensation
        resolutionExpiresAt: '2025-10-23T13:14:47.282870702Z'
        canRaiseCompensationQuery: false
    BotgatewayapiOrderContextResponse:
      type: object
      description: Order Context DTO, including partner and delivery information
      properties:
        identifier:
          description: Order identifier.
          type: string
        reference:
          description: Order reference.
          type: string
        paymentContext:
          description: The subject of the request.
          type: object
          properties:
            payments:
              description: Applied payments
              type: array
              items:
                type: object
                properties:
                  paymentMethod:
                    description: Payment method
                    type: string
                  amount:
                    description: Paid amount
                    type: number
            payOnDelivery:
              description: Pay on delivery
              type: boolean
            currencySymbol:
              description: Currency symbol
              type: string
        partnerContext:
          description: Partner information.
          type: object
          properties:
            id:
              description: Partner id
              type: string
            name:
              description: Partner name
              type: string
            brandName:
              description: Brand name
              type: string
            type:
              description: Partner type
              type: string
              enum:
                - Grocery
                - Restaurant
                - Pharmacy
            phone:
              description: Contact phone
              type: string
            chain:
              description: Is it chain partner?
              type: boolean
            dispatchMethod:
              description: Dispatch method
              type: string
        deliveryContext:
          $ref: '#/components/schemas/BotgatewayapiOrderDeliveryContextResponse'
        historyContext:
          description: Delivery information.
          type: array
          items:
            type: object
            properties:
              timestamp:
                description: Timestamp
                type: string
                format: date-time
              value:
                description: Value
                type: string
              confidence:
                description: Confidence
                type: string
              reason:
                description: Reason
                type: string
              valueTimestamp:
                description: Value timestamp
                type: string
                format: date-time
              dueDateTimestamp:
                description: Due date timestamp
                type: string
                format: date-time
              dueDate:
                description: Due date
                type: string
                format: date-time
        itemsContext:
          description: Order items details
          type: object
          properties:
            containsSubstitutions:
              description: Are there substitution items?
              type: boolean
            items:
              description: Ordered items list
              type: array
              items:
                $ref: '#/components/schemas/BotgatewayapiOrderItems'
        metadata:
          description: Conversation metadata.
          type: object
          properties:
            itemPickerUrl:
              description: Item picker url
              type: string
            customerSupportEmail:
              description: Customer support email
              type: string
            language:
              description: Language code
              type: string
            source:
              description: Source
              type: string
            platform:
              description: Platform
              type: string
            guestUser:
              description: Guest user
              type: boolean
      example:
        identifier: o0fu6v9agkkeh0mggd0jfq
        reference: '1992921232'
        paymentContext:
          payments:
            - amount: 20
              paymentMethod: Cash
          payOnDelivery: false
          currencySymbol: £
        partnerContext:
          id: '212405'
          name: The Codfather
          brandName: McDonalds
          type: Restaurant
          phone: '07825831000'
          chain: true
          dispatchMethod: ORDERPAD
        deliveryContext:
          status: DELIVERED
          rawStatus: Completed
          type: Marketplace
          ownDelivery: false
          etaData:
            etaTime: '2025-10-21T15:25:00'
            formattedEta: '15:25'
            etaExceededMinutes: '1630'
            etaDelayed: true
            isWithinLateOrderQueryWindow: false
          deliveryData:
            deliveryTime: '2025-10-21T15:25:00'
            pastDelivery:
              days: 1
              hours: 1
              minutes: 10
          placementData:
            placementTime: '2025-10-21T15:20:22.9131571'
            pastPlacement:
              days: 1
              hours: 1
              minutes: 15
        itemsContext:
          containsSubstitutions: false
          items:
            - id: i0-43be-824f-5ce77abe7810
              itemReference: productid-5ce77abe7810
              name: Hamburger
              description: hamburger di fassona
              unitPrice: 11.5
              discountedPrice: 10.5
              isOutOfStock: false
              isSubstitution: false
              isMealDeal: false
              additionalContextRequired: false
              subItems:
                - id: i0-8641032d-1748-39-0480e211d570
                  itemReference: productid-442b-a139-0480e211d570
                  name: Al Sangue
                  description: The best triple fried chips in england
                  quantity: 2
                  unitPrice: 1.5
    BotgatewayapiOrderDeliveryContextResponse:
      type: object
      description: Delivery information
      properties:
        status:
          $ref: '#/components/schemas/BotgatewayapiOrderStatus'
        rawStatus:
          description: Order raw status
          type: string
        type:
          description: Order type
          type: string
          enum:
            - Marketplace
            - Logistic
            - Pick_up
            - DineIn
        ownDelivery:
          description: Does partner handle delivery?
          type: boolean
        etaData:
          description: Delivery ETA details
          type: object
          properties:
            etaTime:
              description: Estimated time
              type: string
              format: date-time
            formattedEta:
              description: Formatted estimated time
              type: string
            etaExceededMinutes:
              description: How many minutes past from original ETA?
              type: string
            etaDelayed:
              description: Is there delay?
              type: boolean
            isWithinLateOrderQueryWindow:
              description: Is within late order query window?
              type: boolean
        deliveryData:
          description: Placement details
          type: object
          properties:
            deliveryTime:
              description: Delivery time
              type: string
              format: date-time
            pastDelivery:
              $ref: '#/components/schemas/BotgatewayapiTimePastObject'
        placementData:
          description: Placement details
          type: object
          properties:
            placementTime:
              description: Placement time
              type: string
              format: date-time
            pastPlacement:
              $ref: '#/components/schemas/BotgatewayapiTimePastObject'
        metadata:
          description: Conversation metadata.
          type: object
          properties:
            itemPickerUrl:
              description: Item picker url
              type: string
            customerSupportEmail:
              description: Customer support email
              type: string
            language:
              description: Language code
              type: string
            source:
              description: Source
              type: string
            platform:
              description: Platform
              type: string
            guestUser:
              description: Guest user
              type: boolean
      example:
        status: DELIVERED
        rawStatus: Completed
        type: Marketplace
        ownDelivery: false
        etaData:
          etaTime: '2025-10-21T15:25:00'
          formattedEta: '15:25'
          etaExceededMinutes: '1630'
          etaDelayed: true
          isWithinLateOrderQueryWindow: false
        deliveryData:
          deliveryTime: '2025-10-21T15:25:00'
          pastDelivery:
            days: 1
            hours: 1
            minutes: 10
        placementData:
          placementTime: '2025-10-21T15:20:22.9131571'
          pastPlacement:
            days: 1
            hours: 1
            minutes: 15
    BotgatewayapiOrderItems:
      type: object
      description: Order item details
      properties:
        id:
          description: Item's identifier
          type: string
        itemReference:
          description: Item's reference
          type: string
        name:
          description: Item's name
          type: string
        description:
          description: Item's description
          type: string
        unitPrice:
          description: Unit price of this particular item
          type: number
        discountedPrice:
          description: Discounted price of the order item
          type: number
        isOutOfStock:
          description: Whether the item has been flagged as out of stock when being picked by our restaurant/grocery partners and an automatic refund has been processed
          type: boolean
        isSubstitution:
          description: Whether the item has been flagged as being substituted for another item when being picked by our restaurant/grocery partners given that the original item is out of stock
          type: boolean
        isMealDeal:
          description: Whether the order item is a Meal Deal Item or not
          type: boolean
        additionalContextRequired:
          description: Is additional context required
          type: boolean
        subItems:
          description: Order sub items
          type: array
          items:
            $ref: '#/components/schemas/BotgatewayapiOrderSubItem'
        mealItems:
          description: Meal item details
          type: array
          items:
            type: object
            properties:
              id:
                description: Item's identifier
                type: string
              itemReference:
                description: Item's reference
                type: string
              name:
                description: Item's name
                type: string
              description:
                description: Item's description
                type: string
              quantity:
                description: Item's quantity
                type: number
              unitPrice:
                description: Unit price of this particular item
                type: number
              menuItemPrice:
                description: Standalone price of this particular item in the menu
                type: number
    BotgatewayapiOrderItemsContextResponse:
      type: object
      description: Order items details
      properties:
        items:
          description: Ordered items list.
          type: array
          items:
            $ref: '#/components/schemas/BotgatewayapiOrderItems'
        containsSubstitutions:
          description: Are there substitution items?
          type: boolean
      example:
        containsSubstitutions: false
        items:
          - id: i0-43be-824f-5ce77abe7810
            itemReference: productid-5ce77abe7810
            name: Hamburger
            description: hamburger di fassona
            unitPrice: 11.5
            discountedPrice: 10.5
            isOutOfStock: false
            isSubstitution: false
            isMealDeal: false
            additionalContextRequired: false
            subItems:
              - id: i0-8641032d-1748-39-0480e211d570
                itemReference: productid-442b-a139-0480e211d570
                name: Al Sangue
                description: The best triple fried chips in england
                quantity: 2
                unitPrice: 1.5
    BotgatewayapiOrderStatus:
      type: string
      description: Order status
      enum:
        - PRE_CONFIRMED
        - CONFIRMED
        - IN_PROGRESS
        - ON_THE_WAY
        - DELIVERED
        - CANCELLED
        - READY
        - UNKNOWN
    BotgatewayapiOrderSubItem:
      type: object
      description: Sub items and menu selections contained within this order item, this could be when the order item is a meal-deal and contains a burger, drink and fries for example or when the customer selects options and extras such as no lettuce or extra bacon
      properties:
        id:
          description: Item's identifier
          type: string
        itemReference:
          description: Item's reference
          type: string
        name:
          description: Item's name
          type: string
        description:
          description: Item's description
          type: string
        quantity:
          description: Item's quantity
          type: number
        unitPrice:
          description: Unit price of this particular item
          type: number
    BotgatewayapiPhotoEvidence:
      type: object
      description: Photo Evidence
      properties:
        url:
          description: Photo url.
          type: string
        description:
          description: Photo description.
          type: string
    BotgatewayapiPlatform:
      type: string
      description: Platform
      enum:
        - web
        - web_view_ios
        - web_view_android
        - mobile_web
        - ios
        - android
    BotgatewayapiRequestMetadata:
      type: object
      description: Request metadata
      properties:
        languageCode:
          description: Language code
          type: string
        platform:
          description: Platform
          type: string
        externalId:
          description: Conversation id
          type: string
        userId:
          description: User id
          type: string
    BotgatewayapiResolutionQueryType:
      type: string
      description: Resolution query type
      enum:
        - cold
        - damaged
        - missing
        - incorrect
        - incorrectlycooked
        - inappropriatesubstitution
        - dietaryrequirementsnotmet
        - dietaryinfo
        - FoodInedible
        - lateorder
        - lateordereta
        - lateordercompensation
        - orderNotArrived
        - unknown
    BotgatewayapiResolutionType:
      type: string
      description: Resolution type
      enum:
        - RequestCompensation
        - RequestRestaurantUpdate
        - Compensation
        - DeferredCompensation
        - OfflineCompensationRequest
        - NotOffered
        - Cancel
        - ReattemptRejection
    BotgatewayapiSelectedItem:
      type: object
      description: Selected item details
      properties:
        id:
          description: Selected item Id.
          type: string
        itemId:
          description: Selected item ID.
          type: string
        itemReference:
          description: Item reference.
          type: string
        name:
          description: Name.
          type: string
        additionalContext:
          description: Additional context
          type: string
        quantity:
          description: Quantity
          type: string
        photoEvidence:
          description: Photo evidence
          type: array
          items:
            $ref: '#/components/schemas/BotgatewayapiPhotoEvidence'
        subItems:
          description: Sub items
          type: array
          items:
            $ref: '#/components/schemas/BotgatewayapiSubItem'
    BotgatewayapiSelectedItemsPayload:
      type: object
      description: Selected items submission payload
      properties:
        conversationMetadata:
          $ref: '#/components/schemas/BotgatewayapiConversationMetadata'
        areAllItemsSelected:
          description: Are all items selected flag
          type: boolean
        selectedItems:
          description: List of selected items
          type: array
          items:
            $ref: '#/components/schemas/BotgatewayapiSelectedItem'
      example:
        conversationMetadata:
          conversationId: 68fhja4435ujsk3d323d887e
          userId: 68fa29395d3d3da903978
          summaryMessagePrefix: Selected item(s)
        areAllItemsSelected: false
        selectedItems:
          - additionalContext: Selected item
            id: i0-61348d3d-13a6-1e8sdj91a89e
            name: Large Fries [VE]
          - additionalContext: Selected item
            id: i0-613423d-13a6-1e8sdj91a89e
            name: Hamburger
    BotgatewayapiSplitCompensationMethod:
      type: object
      description: Split Compensation method
      properties:
        isOffered:
          description: Split compensation method offered flag
          type: boolean
        cardAmount:
          description: Card amount
          type: number
        creditAmout:
          description: Credit amount
          type: number
        corporatePayAmount:
          description: Corporate pay amount
          type: number
    BotgatewayapiSubItem:
      type: object
      description: Sub item details
      properties:
        id:
          description: Sub item Id.
          type: string
        itemId:
          description: Sub item ID.
          type: string
        name:
          description: Name.
          type: string
        additionalContext:
          description: Additional context
          type: string
    BotgatewayapiTicketRequest:
      type: object
      description: Create new ticket request
      properties:
        customerName:
          description: The customer's name.
          type: string
        customerEmail:
          description: The customer's email.
          type: string
        subject:
          description: The subject of the request.
          type: string
        description:
          description: The description of the request.
          type: string
        ticketCategory:
          description: Ticket category
          type: string
        language:
          nullable: false
          $ref: '#/components/schemas/BotgatewayapiLanguage'
        platform:
          nullable: false
          $ref: '#/components/schemas/BotgatewayapiPlatform'
        externalId:
          description: External ID
          type: string
        orderReference:
          description: Order reference
          type: string
        orderIdentifier:
          description: Order identifier
          type: string
        selectedItems:
          description: Selected items
          type: array
          items:
            $ref: '#/components/schemas/BotgatewayapiSelectedItem'
    BotgatewayapiTimePastObject:
      type: object
      description: Time past details
      properties:
        days:
          description: Past days
          type: number
        hours:
          description: Past hours
          type: number
        minutes:
          description: Past minutes
          type: number
    BotgatewayapiUserType:
      type: string
      description: User type
      enum:
        - LOGGED_IN
        - GUEST
    BotgatewayapiWaitItemResponse:
      type: object
      description: Wait item response
      properties:
        waitTimeInMinutes:
          description: Wait time in minutes
          type: number
        waitTimeLength:
          description: Wait time length
          type: string
          enum:
            - long
            - short
            - n/a
      example:
        waitTimeInMinutes: 20
        waitTimeLength: long
    BotgatewayapiWebhookPayload:
      type: object
      description: Webhook payload
      properties:
        bot:
          description: Webhook bot name.
          type: string
        event:
          description: Webhook event name.
          type: string
        platformConversationId:
          description: Platform conversation ID.
          type: string
        conversationId:
          description: Conversation ID.
          type: string
    BusinessSearchTypeaheadSearchResponse:
      type: object
      description: Company details for a typeahead search result
      uniqueItems: true
      properties:
        businesses:
          type: array
          items:
            $ref: '#/components/schemas/BusinessSearchTypeaheadSearchResponseItem'
      example:
        businesses:
          - duns: '123456789'
            name: Mira B.V.
            address:
              streetAddress:
                - Holtersweg 44
              postalCode: 7556 BX
              city: Hengelo OV
          - duns: '987654321'
            name: The Spicy Company B.V.
            address:
              streetAddress:
                - Harderwijkweg 1
              postalCode: 2803 PW
              city: Gouda
    BusinessSearchTypeaheadSearchResponseItem:
      type: object
      description: The main response from a business search request
      properties:
        duns:
          description: The D-U-N-S® Number provides unique identification of a subject organization, in accordance with the Data Universal Numbering System.
          type: string
          pattern: ^\d{9}$
        name:
          description: Single name by which the organization is primarily known or identified.
          type: string
        address:
          type: object
          description: Postal address details of the organization.
          properties:
            streetAddress:
              description: The details of the street address for this address of the organization.
              type: array
              items:
                type: string
            postalCode:
              description: The postal code for this address of the organization.
              type: string
            city:
              description: The name of the locality for this address of the organization. City, town, township, village, borough etc.
              type: string
      example:
        duns: '123456789'
        name: take a wok
        address:
          streetAddress:
            - Overtoom 97 H
          postalCode: 1054 HD
          city: Amsterdam
    BusinessesPermissionCategory:
      type: object
      description: A grouping of related permission features that can be assigned to partner users.
      required:
        - key
        - sortOrder
        - features
      properties:
        key:
          type: string
          description: Unique identifier for this permission category.
          example: management
        sortOrder:
          type: integer
          description: Numeric position used to order this category relative to other categories for display purposes.
          example: 1
        features:
          type: array
          description: List of individual permission features belonging to this category.
          items:
            $ref: '#/components/schemas/BusinessesPermissionFeature'
    BusinessesPermissionFeature:
      type: object
      description: A single permission feature that can be assigned to a partner user within a category.
      required:
        - key
        - relation
        - sortOrder
        - isEnabled
      properties:
        key:
          type: string
          description: Unique identifier for the permission feature within its category.
          example: menu
        relation:
          type: string
          description: The permission relation string used by the authorisation system to evaluate access, expressed in `camelCase`.
          example: canAccessMenu
        sortOrder:
          type: integer
          description: Numeric position used to order this feature within its parent category for display purposes.
          example: 1
        isEnabled:
          type: boolean
          description: Indicates whether this permission feature is currently active and assignable to partner users.
          example: true
    BusinessesPermissionsMetadataResponse:
      type: object
      description: Full catalogue of available permission categories and their features that can be assigned to partner users.
      required:
        - categories
      properties:
        categories:
          type: array
          description: List of permission categories, each containing a set of assignable permission features.
          items:
            $ref: '#/components/schemas/BusinessesPermissionCategory'
    CampaignsActorType:
      type: string
      title: ActorType
      description: Class of principal who performed an action.
      enum:
        - agent
        - partner
        - service
    CampaignsAudience:
      type: object
      title: Audience
      description: |
        User segment targeting for a campaign. When absent on a campaign,
        defaults to targeting all users.
      required:
        - segment
      properties:
        segment:
          description: Which user segment the campaign targets.
          $ref: '#/components/schemas/CampaignsAudienceSegment'
    CampaignsAudienceSegment:
      type: string
      title: AudienceSegment
      description: |
        User segment the campaign targets. Determines which users
        are eligible to see campaign placements.
      enum:
        - allUsers
        - newToPartner
    CampaignsAuditPrincipal:
      type: object
      title: AuditPrincipal
      description: Audit-time view of the principal who performed an action. Contains only stable, opaque identifiers and a display name. Email is excluded per JET PII policy.
      required:
        - subject
        - displayName
        - actorType
      properties:
        subject:
          description: Stable opaque JWT sub claim.
          type: string
        displayName:
          description: Human-readable display name from the JWT.
          type: string
        actorType:
          description: Class of principal who performed the action.
          $ref: '#/components/schemas/CampaignsActorType'
    CampaignsBidStrategy:
      type: string
      title: BidStrategy
      description: Determines whether a campaign bid is managed automatically or set manually.
      enum:
        - autobid
        - manualBid
    CampaignsBudget:
      type: object
      title: Budget
      description: Campaign spend budget. Controls how much the campaign is allowed to spend before auto-pausing. The remaining field is server-managed and read-only.
      required:
        - amount
        - type
        - currency
      properties:
        amount:
          description: Budget limit in minor units.
          type: integer
          format: int64
          minimum: 1
        type:
          description: Whether the limit applies per-day or over the campaign lifetime.
          $ref: '#/components/schemas/CampaignsBudgetType'
        currency:
          description: ISO 4217 alpha-3 currency code (must match tenant currency).
          type: string
          minLength: 3
          maxLength: 3
          pattern: ^[A-Z]{3}$
        remaining:
          description: Server-managed remaining budget in minor units. Read-only in API responses. Not accepted on create/update.
          type: integer
          format: int64
          readOnly: true
    CampaignsBudgetType:
      type: string
      title: BudgetType
      description: Whether the budget applies per-day or across the total campaign lifetime.
      enum:
        - daily
        - total
    CampaignsBulkCreateItem:
      type: object
      title: BulkCreateItem
      description: Individual campaign group item in a bulk create request.
      required:
        - partnerId
        - campaigns
      properties:
        partnerId:
          description: Partner identifier (string per HM01).
          type: string
        name:
          description: Campaign group name.
          type: string
          minLength: 1
          maxLength: 200
        campaigns:
          description: Array of campaigns in this group.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CampaignsCampaign'
        schedule:
          $ref: '#/components/schemas/CampaignsSchedule'
        budget:
          $ref: '#/components/schemas/CampaignsBudget'
    CampaignsBulkCreateRequest:
      type: object
      title: BulkCreateRequest
      description: Batch of campaign group create payloads for agent-only bulk creation (max 100).
      required:
        - items
      properties:
        items:
          description: Array of campaign group create payloads to process in bulk.
          type: array
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/CampaignsBulkCreateItem'
    CampaignsBulkItemResult:
      type: object
      title: BulkItemResult
      description: Result for an individual item in a bulk operation.
      required:
        - index
        - success
      properties:
        index:
          description: Zero-based index of this item in the request array.
          type: integer
          minimum: 0
        success:
          description: Whether this individual item succeeded.
          type: boolean
        campaignGroupId:
          description: Campaign group ID if creation succeeded. Null on failure.
          type: string
          nullable: true
        error:
          description: Error details if this item failed. Null on success.
          $ref: '#/components/schemas/CampaignsFault'
          nullable: true
    CampaignsBulkOperationResult:
      type: object
      title: BulkOperationResult
      description: Result of a bulk operation with per-item outcomes. Partial failures do not roll back successes.
      required:
        - succeeded
        - failed
        - results
      properties:
        succeeded:
          description: Count of successfully processed items.
          type: integer
          minimum: 0
        failed:
          description: Count of failed items.
          type: integer
          minimum: 0
        results:
          description: Per-item outcome details indexed to the original request order.
          type: array
          items:
            $ref: '#/components/schemas/CampaignsBulkItemResult'
    CampaignsBulkRemoveRequest:
      type: object
      title: BulkRemoveRequest
      description: A bulk operation request to deactivate campaign groups provided in a CSV file.
      required:
        - file
      properties:
        file:
          type: string
          format: binary
          description: The CSV file to be uploaded for processing.
          example: |-
            partnerId,campaignGroupId,stopReason
            partner-1,01ARZ3NDEKTSV4RRFFQ69G5FAV,budget exhausted
            partner-2,01ARZ3NDEKTSV4RRFFQ69G5FAW,
    CampaignsBulkWalletRequest:
      type: object
      title: BulkWalletRequest
      description: Batch of wallet modifications for agent-only bulk balance updates (max 100).
      required:
        - items
      properties:
        items:
          description: Array of wallet modification payloads to process in bulk.
          type: array
          minItems: 1
          maxItems: 100
          items:
            type: object
            required:
              - partnerId
              - walletId
              - delta
              - currency
            properties:
              partnerId:
                description: Partner identifier whose wallet will be modified.
                type: string
              walletId:
                description: Target wallet identifier.
                type: string
                format: guid
              delta:
                description: Amount to add (positive) or subtract (negative) in minor currency units.
                type: integer
                format: int64
              currency:
                description: ISO 4217 alpha-3 currency code. Must match the tenant's configured currency.
                type: string
                minLength: 3
                maxLength: 3
                pattern: ^[A-Z]{3}$
              reason:
                description: Free-text reason for the balance change used for audit purposes.
                type: string
                maxLength: 500
    CampaignsCampaign:
      title: Campaign
      description: Discriminated union of campaign entries. Each entry carries a type discriminator, its own pricing variant, and type-specific configuration fields.
      type: object
      required:
        - type
      anyOf:
        - $ref: '#/components/schemas/CampaignsCampaignBasketRecommendations'
        - $ref: '#/components/schemas/CampaignsCampaignBanner'
        - $ref: '#/components/schemas/CampaignsCampaignSponsoredListing'
      discriminator:
        propertyName: type
        mapping:
          basketRecommendations: '#/components/schemas/CampaignsCampaignBasketRecommendations'
          banner: '#/components/schemas/CampaignsCampaignBanner'
          sponsoredListing: '#/components/schemas/CampaignsCampaignSponsoredListing'
    CampaignsCampaignBanner:
      type: object
      title: CampaignBanner
      description: Type entry for banner campaigns (Display Ads). Permitted pricing models are costPerMille, costPerClick, and fixedPrice.
      required:
        - type
        - pricing
        - creativeAssetId
        - targetSurfaces
        - campaignId
      properties:
        campaignId:
          description: |
            Server-assigned campaign identifier, stable across updates. On update requests, supply the identifier of an existing campaign entry to update that entry; an identifier that does not match an existing entry for this campaign group results in a new campaign entry being created. Ignored on create requests, where the identifier is always assigned by the server.
          type: string
          format: guid
        type:
          description: Campaign type discriminator.
          type: string
          enum:
            - banner
        pricing:
          description: Pricing variant. Must be costPerMille, costPerClick, or fixedPrice for this type.
          $ref: '#/components/schemas/CampaignsPricing'
        creativeAssetId:
          description: Reference to a creative asset in the JET creatives store.
          type: string
          format: uuid
        targetSurfaces:
          description: Surfaces on which the banner should render.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CampaignsTargetSurface'
        frequencyCap:
          description: Optional per-user frequency cap limiting impressions in a rolling window.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CampaignsFrequencyCap'
        targeting:
          description: Geographic targeting for this campaign. When absent, targets all delivery areas for the partner.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CampaignsTargeting'
        audience:
          description: User segment targeting for this campaign. When absent, defaults to all users.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CampaignsAudience'
        isPaused:
          description: Whether this campaign is individually paused.
          type: boolean
        isJetCredit:
          description: Whether this is a JET-credit-funded campaign.
          type: boolean
        status:
          $ref: '#/components/schemas/CampaignsCampaignStatus'
        syncStatus:
          $ref: '#/components/schemas/CampaignsSyncStatus'
        externalCampaignId:
          description: TopSort campaign ID assigned after successful sync. Null until synced.
          type: string
          nullable: true
          readOnly: true
        syncFailureReason:
          description: Reason for last sync failure. Null if no failure.
          type: string
          nullable: true
          readOnly: true
        deletedAt:
          description: Soft-delete timestamp. Null if not deleted.
          type: string
          format: date-time
          nullable: true
          readOnly: true
        deletedBy:
          description: Audit principal who deleted the campaign. Null while active.
          nullable: true
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/CampaignsAuditPrincipal'
    CampaignsCampaignBasketRecommendations:
      type: object
      title: CampaignBasketRecommendations
      description: Type entry for basketRecommendations campaigns (TopRank). Permitted pricing models are costPerClick and costPerAcquisition.
      required:
        - type
        - pricing
        - productSkus
        - campaignId
      properties:
        campaignId:
          description: |
            Server-assigned campaign identifier, stable across updates. On update requests, supply the identifier of an existing campaign entry to update that entry; an identifier that does not match an existing entry for this campaign group results in a new campaign entry being created. Ignored on create requests, where the identifier is always assigned by the server.
          type: string
          format: guid
        type:
          description: Campaign type discriminator.
          type: string
          enum:
            - basketRecommendations
        pricing:
          description: Pricing variant. Must be costPerClick or costPerAcquisition for this type.
          $ref: '#/components/schemas/CampaignsPricing'
        productSkus:
          description: Partner-scoped SKUs to surface as basket recommendations.
          type: array
          minItems: 1
          uniqueItems: true
          items:
            type: string
            minLength: 1
        placementHints:
          description: Free-form placement hints consumed downstream.
          type: array
          nullable: true
          items:
            type: string
        dailyImpressionCap:
          description: Optional daily impression cap. Must be positive when present.
          type: integer
          nullable: true
          minimum: 1
        targeting:
          description: Geographic targeting for this campaign. When absent, targets all delivery areas for the partner.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CampaignsTargeting'
        audience:
          description: User segment targeting for this campaign. When absent, defaults to all users.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CampaignsAudience'
        isPaused:
          description: Whether this campaign is individually paused.
          type: boolean
        isJetCredit:
          description: Whether this is a JET-credit-funded campaign.
          type: boolean
        status:
          $ref: '#/components/schemas/CampaignsCampaignStatus'
        syncStatus:
          description: TopSort synchronisation status. Set by CampaignWorker only.
          $ref: '#/components/schemas/CampaignsSyncStatus'
        externalCampaignId:
          description: TopSort campaign ID assigned after successful sync. Null until synced.
          type: string
          nullable: true
          readOnly: true
        syncFailureReason:
          description: Reason for last sync failure. Null if no failure.
          type: string
          nullable: true
          readOnly: true
        deletedAt:
          description: Soft-delete timestamp. Null if not deleted.
          type: string
          format: date-time
          nullable: true
          readOnly: true
        deletedBy:
          description: Audit principal who deleted the campaign. Null while active.
          nullable: true
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/CampaignsAuditPrincipal'
    CampaignsCampaignGroup:
      type: object
      title: CampaignGroup
      description: Canonical CampaignGroup aggregate as visible to authenticated callers.
      required:
        - campaignGroupId
        - tenant
        - partnerId
        - campaigns
        - status
        - eTag
        - permissions
        - createdAt
        - createdBy
        - updatedAt
        - updatedBy
      properties:
        campaignGroupId:
          description: Server-assigned identifier.
          type: string
          format: guid
        tenant:
          description: ISO 3166-1 alpha-2 tenant code (lowercase).
          type: string
        partnerId:
          description: Partner identifier (string per HM01).
          type: string
        campaigns:
          description: One or more campaign entries. Each carries its own pricing and type-specific configuration. No duplicate type values within the array.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CampaignsCampaign'
        name:
          description: Optional human-readable label, unique per (tenant, partnerId) when supplied. Absent when the campaign group has no label.
          type: string
          minLength: 1
          maxLength: 200
        status:
          description: Current lifecycle status.
          $ref: '#/components/schemas/CampaignsCampaignGroupLifecycleStatus'
        schedule:
          description: Optional run window and recurring timetable.
          $ref: '#/components/schemas/CampaignsSchedule'
        budget:
          description: Optional spend budget. When absent, no budget cap is enforced.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CampaignsBudget'
        eTag:
          description: Opaque concurrency token.
          type: string
          pattern: ^[0-9a-fA-F-]{36}$
        permissions:
          description: |
            Controls which principal kinds may edit this campaign group. `all` — both partners and agents may edit (default). `agent` — only agents may edit; partner requests are rejected with 403. `partner` — only partners may edit; agent requests are rejected with 403. Only agents may change this field.
          $ref: '#/components/schemas/CampaignsCampaignGroupPermissions'
          default: all
        stopReason:
          description: Reason for archival. Null while active.
          type: string
          nullable: true
        createdAt:
          description: When the campaign group was created (UTC instant).
          type: string
          format: date-time
        createdBy:
          description: Audit principal who created the campaign group.
          $ref: '#/components/schemas/CampaignsAuditPrincipal'
        updatedAt:
          description: When the campaign group was last updated (UTC instant).
          type: string
          format: date-time
        updatedBy:
          description: Audit principal who last updated the campaign group.
          $ref: '#/components/schemas/CampaignsAuditPrincipal'
        archivedAt:
          description: When the campaign group was archived (UTC instant). Null while active.
          type: string
          format: date-time
          nullable: true
        archivedBy:
          description: Audit principal who archived the campaign group. Null while active.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CampaignsAuditPrincipal'
        skipEmailNotification:
          description: When true, the archival notification email was suppressed. False by default. Read-only in API responses.
          type: boolean
          readOnly: true
    CampaignsCampaignGroupAuditEntry:
      type: object
      title: CampaignGroupAuditEntry
      description: A single audit record representing one campaign group mutation.
      required:
        - version
        - changeType
        - changedBy
        - changedAt
        - snapshot
      properties:
        version:
          description: Campaign group version after this change was applied.
          type: integer
          minimum: 1
        changeType:
          description: Type of mutation that produced this audit entry.
          $ref: '#/components/schemas/CampaignsChangeType'
        changedBy:
          description: Principal who made the change.
          $ref: '#/components/schemas/CampaignsAuditPrincipal'
        changedAt:
          description: When the change was made (UTC instant).
          type: string
          format: date-time
        snapshot:
          description: Full campaign group state after the change was applied.
          $ref: '#/components/schemas/CampaignsCampaignGroup'
        diff:
          description: JSON Patch (RFC 6902) describing what changed. Present only for updated entries. Null for created, transitioned, and archived entries.
          type: array
          nullable: true
          items:
            type: object
            properties:
              op:
                description: Patch operation type.
                $ref: '#/components/schemas/CampaignsJsonPatchOperationType'
              path:
                description: JSON Pointer to the changed location.
                type: string
              value:
                description: New value after the change.
    CampaignsCampaignGroupHistoryPage:
      type: object
      title: CampaignGroupHistoryPage
      description: Cursor-paginated page of campaign group audit entries (QEPG04).
      required:
        - data
        - paging
      properties:
        data:
          description: Audit entries on this page, ordered oldest first.
          type: array
          items:
            $ref: '#/components/schemas/CampaignsCampaignGroupAuditEntry'
        paging:
          description: Cursor block for fetching adjacent pages.
          $ref: '#/components/schemas/CampaignsCursorPaging'
    CampaignsCampaignGroupLifecycleStatus:
      type: string
      title: CampaignGroupLifecycleStatus
      description: Current lifecycle state of a campaign group through its supported transitions.
      enum:
        - scheduled
        - active
        - paused
        - ended
        - archived
    CampaignsCampaignGroupPage:
      type: object
      title: CampaignGroupPage
      description: Cursor-paginated page of campaign groups (QEPG04).
      required:
        - data
        - paging
      properties:
        data:
          description: Campaign groups on this page.
          type: array
          items:
            $ref: '#/components/schemas/CampaignsCampaignGroup'
        paging:
          description: Cursor block for fetching adjacent pages.
          $ref: '#/components/schemas/CampaignsCursorPaging'
    CampaignsCampaignGroupPermissions:
      type: string
      title: CampaignGroupPermissions
      description: Permission control enum for campaign group visibility.
      enum:
        - all
        - agent
        - partner
    CampaignsCampaignInsights:
      type: object
      title: CampaignInsights
      description: |
        Insights for a partner's campaigns. Additional sections will be populated in future releases. In Phase 0, `keyMetrics` scalar values and `keyMetrics.charts.moneySpent` are populated. All other sections and chart properties are null.
      additionalProperties: false
      required:
        - keyMetrics
      properties:
        lastUpdatedTimestamp:
          description: The UTC date and time when the insights data was last updated. Null when not yet available.
          type: string
          format: date-time
          nullable: true
        keyMetrics:
          description: Scalar key performance metrics and time-series charts for the period.
          $ref: '#/components/schemas/CampaignsCampaignInsightsKeyMetrics'
        funnel:
          description: Phase 1 — requires impression and click event tracking (A2).
          nullable: true
          type: object
        customerSegments:
          description: Phase 2 — requires new/existing customer classification at order level (A3).
          nullable: true
          type: object
        customerOriginClicks:
          description: Phase 2 — requires customer origin click attribution.
          nullable: true
          type: object
        menuPerformance:
          description: Phase 2 — requires item-level order attribution.
          nullable: true
          type: object
        orderActivityHeatmap:
          description: Phase 2 — requires organic vs ads attribution model (A1).
          nullable: true
          type: object
        recommendations:
          description: Phase 3 — requires rules engine and campaign action deep-links.
          nullable: true
          type: object
      example:
        lastUpdatedTimestamp: '2026-07-31T18:42:00Z'
        keyMetrics:
          currency: GBP
          totalRevenue:
            value: 29800
          totalSpend:
            value: 8540
          totalCredits:
            value: 5000
          ordersFromAds:
            value: 142
          impressions:
            value: 4210
          returnOnAdSpend:
            value: 3.49
          avgCostPerOrder:
            value: 60.14
          menuConversionRate:
            value: null
          auctionWinRate:
            value: null
          charts:
            moneySpent:
              unit: currency
              series:
                - type: spend
                  points:
                    - date: '2026-07-29'
                      value: 1200
                    - date: '2026-07-30'
                      value: null
                    - date: '2026-07-31'
                      value: 985
                - type: credits
                  points:
                    - date: '2026-07-29'
                      value: 500
                    - date: '2026-07-30'
                      value: null
                    - date: '2026-07-31'
                      value: 1250
        funnel: null
        customerSegments: null
        customerOriginClicks: null
        menuPerformance: null
        orderActivityHeatmap: null
        recommendations: null
    CampaignsCampaignInsightsChart:
      type: object
      title: CampaignInsightsChart
      description: |
        A single time-series chart. The `series` array carries one entry per measure — new measures can be added in future releases without breaking existing consumers.
      additionalProperties: false
      required:
        - unit
        - series
      properties:
        unit:
          description: |
            The unit of measurement for all series in this chart. `currency` values are in minor currency units (pence/cents) — the frontend handles conversion.
          type: string
          enum:
            - currency
            - count
            - ratio
            - percentage
        series:
          description: One or more typed data series.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CampaignsCampaignInsightsSeries'
    CampaignsCampaignInsightsCharts:
      type: object
      title: CampaignInsightsCharts
      description: |
        Time-series charts for the insights dashboard. Each chart is null until the required upstream data is available — clients should render a placeholder for null charts. Charts become non-null as data sources are added across phases.
      additionalProperties: false
      properties:
        moneySpent:
          description: |
            Bar chart — daily ad spend in minor currency units. Series: `spend`, `credits`.
          nullable: true
          $ref: '#/components/schemas/CampaignsCampaignInsightsChart'
        returnOnAdSpend:
          description: Line chart — return on ad spend per day (dimensionless ratio).
          nullable: true
          $ref: '#/components/schemas/CampaignsCampaignInsightsChart'
        totalRevenue:
          description: Line chart — total revenue per day, in minor currency units.
          nullable: true
          $ref: '#/components/schemas/CampaignsCampaignInsightsChart'
        costPerOrder:
          description: Line chart — average cost per order per day, in minor currency units.
          nullable: true
          $ref: '#/components/schemas/CampaignsCampaignInsightsChart'
        impressionsFromAds:
          description: Bar chart — ad impressions per day.
          nullable: true
          $ref: '#/components/schemas/CampaignsCampaignInsightsChart'
        ordersFromAds:
          description: |
            Bar chart — orders per day. Series: `organicOrders`, `adsOrders`. Requires organic vs ads attribution model (A1).
          nullable: true
          $ref: '#/components/schemas/CampaignsCampaignInsightsChart'
        auctionsWon:
          description: Bar chart — auctions won per day.
          nullable: true
          $ref: '#/components/schemas/CampaignsCampaignInsightsChart'
        menuViews:
          description: Bar chart — menu views (clicks) per day.
          nullable: true
          $ref: '#/components/schemas/CampaignsCampaignInsightsChart'
      example:
        moneySpent:
          unit: currency
          series:
            - type: spend
              points:
                - date: '2026-07-29'
                  value: 1200
                - date: '2026-07-30'
                  value: null
                - date: '2026-07-31'
                  value: 985
            - type: credits
              points:
                - date: '2026-07-29'
                  value: 50
                - date: '2026-07-30'
                  value: null
                - date: '2026-07-31'
                  value: 25
        returnOnAdSpend:
          unit: ratio
          series:
            - type: returnOnAdSpend
              points:
                - date: '2026-07-29'
                  value: 3.29
                - date: '2026-07-30'
                  value: null
                - date: '2026-07-31'
                  value: 3.45
        totalRevenue:
          unit: currency
          series:
            - type: totalRevenue
              points:
                - date: '2026-07-29'
                  value: 29800
                - date: '2026-07-30'
                  value: null
                - date: '2026-07-31'
                  value: 31200
        costPerOrder:
          unit: currency
          series:
            - type: costPerOrder
              points:
                - date: '2026-07-29'
                  value: 6014
                - date: '2026-07-30'
                  value: null
                - date: '2026-07-31'
                  value: 5832
        impressionsFromAds:
          unit: count
          series:
            - type: impressionsFromAds
              points:
                - date: '2026-07-29'
                  value: 4210
                - date: '2026-07-30'
                  value: null
                - date: '2026-07-31'
                  value: 3850
        ordersFromAds:
          unit: count
          series:
            - type: organicOrders
              points:
                - date: '2026-07-29'
                  value: 95
                - date: '2026-07-30'
                  value: null
                - date: '2026-07-31'
                  value: 102
            - type: adsOrders
              points:
                - date: '2026-07-29'
                  value: 47
                - date: '2026-07-30'
                  value: null
                - date: '2026-07-31'
                  value: 51
        auctionsWon:
          unit: count
          series:
            - type: auctionsWon
              points:
                - date: '2026-07-29'
                  value: 318
                - date: '2026-07-30'
                  value: null
                - date: '2026-07-31'
                  value: 294
        menuViews:
          unit: count
          series:
            - type: menuViews
              points:
                - date: '2026-07-29'
                  value: 1420
                - date: '2026-07-30'
                  value: null
                - date: '2026-07-31'
                  value: 1385
    CampaignsCampaignInsightsDataPoint:
      type: object
      title: CampaignInsightsDataPoint
      description: |
        A single date-bucketed value in a chart series. A null value means no data for that day — the entry is included so clients can render a continuous time axis.
      additionalProperties: false
      required:
        - date
        - value
      properties:
        date:
          description: The date this data point represents (ISO 8601, YYYY-MM-DD).
          type: string
          format: date
          example: '2026-07-29'
        value:
          description: |
            The metric value for this day. Type depends on the parent chart's unit: `currency` series carry integer minor-unit values (pence/cents); `ratio` and `percentage` series carry decimal values; `count` series carry integer values. Null when no data was recorded.
          type: number
          nullable: true
          example: 1200
    CampaignsCampaignInsightsIntegerMetricValue:
      type: object
      title: CampaignInsightsIntegerMetricValue
      description: A scalar integer metric value. Wrapped in an object so delta, trend, and other fields can be added in later phases without a breaking contract change.
      additionalProperties: false
      properties:
        value:
          description: The metric value. Null when no data is available for this metric in the current phase.
          type: integer
          format: int64
          nullable: true
    CampaignsCampaignInsightsKeyMetrics:
      type: object
      title: CampaignInsightsKeyMetrics
      description: Key performance metrics for a campaign or set of campaigns.
      additionalProperties: false
      required:
        - currency
        - totalRevenue
        - totalSpend
        - totalCredits
        - ordersFromAds
        - impressions
        - returnOnAdSpend
        - avgCostPerOrder
        - menuConversionRate
        - auctionWinRate
      properties:
        currency:
          description: ISO 4217 currency code for all monetary values in this object.
          type: string
          example: GBP
        totalRevenue:
          description: Total revenue generated by ad-attributed orders, in minor currency units (pence/cents).
          $ref: '#/components/schemas/CampaignsCampaignInsightsIntegerMetricValue'
        totalSpend:
          description: Total ad spend, in minor currency units (pence/cents).
          $ref: '#/components/schemas/CampaignsCampaignInsightsIntegerMetricValue'
        totalCredits:
          description: Total promotional credits applied, in minor currency units (pence/cents).
          $ref: '#/components/schemas/CampaignsCampaignInsightsIntegerMetricValue'
        ordersFromAds:
          description: Number of orders attributed to ads.
          $ref: '#/components/schemas/CampaignsCampaignInsightsIntegerMetricValue'
        impressions:
          description: Number of ad impressions.
          $ref: '#/components/schemas/CampaignsCampaignInsightsIntegerMetricValue'
        returnOnAdSpend:
          description: Return on ad spend (dimensionless ratio). Derived as totalRevenue / (totalSpend + totalCredits). Returns 0 when denominator is 0.
          $ref: '#/components/schemas/CampaignsCampaignInsightsMetricValue'
        avgCostPerOrder:
          description: Average cost per ad-attributed order, in minor currency units (pence/cents). Derived as totalSpend / ordersFromAds. Returns 0 when ordersFromAds is 0.
          $ref: '#/components/schemas/CampaignsCampaignInsightsMetricValue'
        menuConversionRate:
          description: Menu conversion rate. Not yet available — returns null.
          $ref: '#/components/schemas/CampaignsCampaignInsightsMetricValue'
        auctionWinRate:
          description: Auction win rate. Not yet available — returns null.
          $ref: '#/components/schemas/CampaignsCampaignInsightsMetricValue'
        charts:
          description: |
            Time-series charts. Each chart is null until the required upstream data is available. In Phase 0 only `moneySpent` is populated.
          nullable: true
          $ref: '#/components/schemas/CampaignsCampaignInsightsCharts'
    CampaignsCampaignInsightsMetricValue:
      type: object
      title: CampaignInsightsMetricValue
      description: |
        A scalar metric value for ratio or derived metrics (e.g. ROAS, average cost per order). Average cost per order is in minor currency units (pence/cents); ROAS is a dimensionless ratio. Wrapped in an object so delta, trend, and other fields can be added in later phases without a breaking contract change.
      additionalProperties: false
      properties:
        value:
          description: The metric value. Null when no data is available for this metric in the current phase.
          type: number
          format: decimal
          nullable: true
    CampaignsCampaignInsightsSeries:
      type: object
      title: CampaignInsightsSeries
      description: |
        A typed series of data points within a chart. The `type` field is a stable enum that identifies the measure being plotted and serves as the canonical list of series the API can emit. Adding a new enum value in a future release is non-breaking.
      additionalProperties: false
      required:
        - type
        - points
      properties:
        type:
          description: The measure this series represents.
          type: string
          enum:
            - spend
            - credits
            - returnOnAdSpend
            - totalRevenue
            - costPerOrder
            - impressionsFromAds
            - organicOrders
            - adsOrders
            - auctionsWon
            - menuViews
        points:
          description: Ordered data points, one per day in the requested range.
          type: array
          items:
            $ref: '#/components/schemas/CampaignsCampaignInsightsDataPoint'
    CampaignsCampaignSponsoredListing:
      type: object
      title: CampaignSponsoredListing
      description: Type entry for sponsored listing campaigns (TopRank auction). Permitted pricing model is costPerClick; bid strategy governs whether the bid is manual or auto.
      required:
        - type
        - pricing
        - bidStrategy
        - campaignId
      properties:
        campaignId:
          description: Server-assigned campaign identifier. Stable across updates.
          type: string
          readOnly: true
        type:
          description: Campaign type discriminator.
          type: string
          enum:
            - sponsoredListing
        pricing:
          description: Pricing variant. Must be costPerClick for this type.
          $ref: '#/components/schemas/CampaignsPricing'
        bidStrategy:
          description: Whether the bid is managed automatically or set manually.
          $ref: '#/components/schemas/CampaignsBidStrategy'
        skipEmail:
          description: When true, suppresses the post-creation notification email.
          type: boolean
        manualInvoice:
          description: Whether manual invoice is enabled. Null uses market default.
          type: boolean
          nullable: true
        targeting:
          description: Geographic targeting for this campaign. When absent, targets all delivery areas for the partner.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CampaignsTargeting'
        audience:
          description: User segment targeting for this campaign. When absent, defaults to all users.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CampaignsAudience'
        isPaused:
          description: Whether this campaign is individually paused.
          type: boolean
        isJetCredit:
          description: When true, this campaign is billed against the partner's JET Credit balance. A JET Credit campaign must be the only campaign in its group and the only active campaign for the partner across all groups.
          type: boolean
        status:
          $ref: '#/components/schemas/CampaignsCampaignStatus'
        syncStatus:
          $ref: '#/components/schemas/CampaignsSyncStatus'
        externalCampaignId:
          description: TopSort campaign ID assigned after successful sync. Null until synced.
          type: string
          nullable: true
          readOnly: true
        syncFailureReason:
          description: Reason for last sync failure. Null if no failure.
          type: string
          nullable: true
          readOnly: true
        deletedAt:
          description: Soft-delete timestamp. Null if not deleted.
          type: string
          format: date-time
          nullable: true
          readOnly: true
        deletedBy:
          description: Audit principal who deleted the campaign. Null while active.
          nullable: true
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/CampaignsAuditPrincipal'
    CampaignsCampaignStatus:
      type: string
      title: CampaignStatus
      description: Current lifecycle status of a campaign.
      enum:
        - scheduled
        - active
        - paused
        - ended
        - migrated
    CampaignsChain:
      type: object
      title: Chain
      description: A distinct chain within a tenant.
      required:
        - chainName
        - normalisedChainName
      properties:
        chainName:
          description: Display chain name (the product-facing "Chain ID"). Sourced from the central platform's `brandName`.
          type: string
          example: Domino's Pizza
        normalisedChainName:
          description: A normalised grouping key (ignoring case and spacing) used to group chains together. Generated by normalising the central platform's `brandName`. Chains have no canonical, globally-normalised chain ID yet, so they are identified by free-text names; the same chain can therefore appear with different casing or spacing. This key lets consumers deduplicate and group those name variants into a single logical chain.
          type: string
          example: DOMINO'S PIZZA
    CampaignsChainDeal:
      type: object
      title: ChainDeal
      description: 'An HQ deal as surfaced in the chains-with-deals view: the Deal identity/audit fields plus a derived count of the deal''s active partners.'
      allOf:
        - $ref: '#/components/schemas/CampaignsDeal'
        - type: object
          properties:
            activePartnerCount:
              description: 'Count of distinct partners with an active campaign tagged with this hqDealId — active meaning the campaign is not deleted and its end date is null or in the future. Derived on read from the campaign-by-hqDealId index. Optional and nullable: absent or null when the source is unavailable or ahead of that integration.'
              type: integer
              minimum: 0
              nullable: true
              readOnly: true
              example: 17
    CampaignsChainDealsPage:
      type: object
      title: ChainDealsPage
      description: Offset-paginated page of chains, each with its HQ deals. Pagination is over chains; each chain carries its full (small) deal set inline. Carries a total count so the UI can render numbered pagination (e.g. "Page 3 of 12").
      required:
        - data
        - paging
      properties:
        data:
          description: The chains on this page.
          type: array
          items:
            $ref: '#/components/schemas/CampaignsChainWithDeals'
        paging:
          description: Offset/page block with a total count for numbered pagination.
          $ref: '#/components/schemas/CampaignsOffsetPaging'
    CampaignsChainList:
      type: object
      title: ChainList
      description: The complete list of a tenant's distinct chains. Not client-paginated; the server pages the store internally.
      required:
        - data
      properties:
        data:
          description: The tenant's distinct chains.
          type: array
          items:
            $ref: '#/components/schemas/CampaignsChain'
    CampaignsChainWithDeals:
      type: object
      title: ChainWithDeals
      description: A chain within a tenant, with its partner count, logo, and all HQ deals registered for it.
      required:
        - chainName
        - partnerCount
        - deals
      properties:
        chainName:
          description: Display chain name (the product-facing "Chain ID"). Sourced from the central platform's `brandName`.
          type: string
          example: Domino's Pizza
        partnerCount:
          description: The number of partners currently mapped to this chain.
          type: integer
          minimum: 0
          example: 42
        chainLogoUrl:
          description: Absolute URL of the chain's logo. Null when no logo is available.
          type: string
          format: uri
          nullable: true
          example: https://cdn.example.com/chains/dominos-pizza.png
        deals:
          description: All HQ deals for the chain (active and historical). May be empty.
          type: array
          items:
            $ref: '#/components/schemas/CampaignsChainDeal'
    CampaignsChangeType:
      type: string
      title: ChangeType
      description: Type of mutation that produced an audit entry in campaign group history.
      enum:
        - created
        - updated
        - transitioned
        - archived
    CampaignsCreateCampaignGroupRequest:
      type: object
      title: CreateCampaignGroupRequest
      description: Request body for creating a new campaign group.
      required:
        - campaigns
      properties:
        name:
          description: Optional human-readable label, unique per (tenant, partnerId) when supplied.
          type: string
          minLength: 1
          maxLength: 200
        campaigns:
          description: One or more campaign entries, each with pricing and type-specific configuration.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CampaignsCampaign'
        schedule:
          description: Optional run window. Absent means starts immediately and runs indefinitely.
          $ref: '#/components/schemas/CampaignsSchedule'
        budget:
          description: Optional spend budget. Absent means no budget cap is enforced.
          $ref: '#/components/schemas/CampaignsBudget'
    CampaignsCreateDealRequest:
      type: object
      title: CreateDealRequest
      description: Request to create an HQ Deal ID. idempotencyKey is a body field (not the shared Idempotency-Key header) because it is the dedup token that forms the deal's sort key; it is not the resulting hqDealId, which the server mints.
      required:
        - chain
        - idempotencyKey
      properties:
        chain:
          description: Display chain name; normalised server-side to derive the deal partition.
          type: string
          minLength: 1
          example: Domino's Pizza
        idempotencyKey:
          description: Client-minted v4 GUID; the dedup token, minted once per create-intent and reused on retry so a double-click no-ops. Not the resulting hqDealId (which the server mints). Reusing the same key for a different chain mints a distinct deal.
          type: string
          format: uuid
          example: 3f9c2a18-4b7e-4c1a-9f2d-8a1b6c5d4e3f
    CampaignsCreateDealResponse:
      type: object
      title: CreateDealResponse
      description: The created (or, on idempotent replay, existing) HQ Deal ID.
      required:
        - hqDealId
      properties:
        hqDealId:
          description: Opaque, server-minted HQ Deal ID (a GUID). Treat as opaque.
          type: string
          format: uuid
          example: 3f9c2a18-4b7e-4c1a-9f2d-8a1b6c5d4e3f
    CampaignsCreateWalletRequest:
      type: object
      title: CreateWalletRequest
      description: Request body for creating a new wallet for a partner.
      required:
        - walletName
        - currency
      properties:
        walletName:
          description: Human-readable label for the wallet. Unique per (tenant, partnerId).
          type: string
          minLength: 1
          maxLength: 100
        currency:
          description: ISO 4217 alpha-3 currency code. Must match the tenant's configured currency.
          type: string
          minLength: 3
          maxLength: 3
          pattern: ^[A-Z]{3}$
    CampaignsCursorPaging:
      type: object
      title: CursorPaging
      description: Cursor pagination metadata wrapper.
      required:
        - cursors
      properties:
        cursors:
          $ref: '#/components/schemas/CampaignsCursors'
    CampaignsCursors:
      type: object
      title: Cursors
      description: Cursor object for pagination (QEPG04).
      properties:
        after:
          description: Cursor for the next page (null if no more pages).
          type: string
          nullable: true
        before:
          description: Cursor for the previous page (null if at first page).
          type: string
          nullable: true
    CampaignsDayOfWeek:
      type: string
      title: DayOfWeek
      description: ISO 8601 day of week (lowerCamelCase).
      enum:
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday
        - sunday
    CampaignsDeal:
      type: object
      title: Deal
      description: An HQ deal. Identity only.
      required:
        - hqDealId
        - createdAt
        - activePartnerCount
      properties:
        hqDealId:
          description: Opaque HQ Deal ID (a GUID). Treat as opaque.
          type: string
          format: uuid
          example: 3f9c2a18-4b7e-4c1a-9f2d-8a1b6c5d4e3f
        createdAt:
          description: The UTC date and time at which the deal was created.
          type: string
          format: date-time
        createdBy:
          description: The agent who created the deal (audit).
          type: string
        activePartnerCount:
          description: Number of distinct partners or stores with a non-deleted V2 campaign for this deal, whose start time is absent or started and whose end time is future or open-ended. This is not campaign-row count. Zero means no qualifying active partners, including a deal with no campaigns.
          type: integer
          minimum: 0
    CampaignsDealPage:
      type: object
      title: DealPage
      description: A page of HQ deal IDs for a chain. Identity only — this endpoint returns just the hqDealIds; the full deal detail (createdAt, audit, active partner count, ...) is served by GET /chains/deals. Pagination-ready envelope; in MVP the full list is returned and nextToken is always null.
      required:
        - hqDealIds
        - nextToken
      properties:
        hqDealIds:
          description: The HQ deal IDs registered for the requested chain (active and historical).
          type: array
          items:
            description: Opaque HQ Deal ID (a GUID). Treat as opaque.
            type: string
            format: uuid
            example: 3f9c2a18-4b7e-4c1a-9f2d-8a1b6c5d4e3f
        nextToken:
          description: Forward cursor; null on the last page (present from day one, always null in MVP).
          type: string
          nullable: true
    CampaignsDeliveryArea:
      type: object
      title: DeliveryArea
      description: A geographic delivery area that the campaign targets. A campaign is served only in the specified areas.
      required:
        - type
        - value
      properties:
        type:
          description: Classification of the delivery area.
          type: string
          enum:
            - postcode
            - city
            - zone
        value:
          description: The area identifier (e.g. a postcode, city name, or zone ID) matching the chosen type.
          type: string
          minLength: 1
    CampaignsFault:
      type: object
      title: Fault
      description: |
        Standard fault envelope used as the response body for all error responses.
        Compliant with JET API design standards ER04/ER05.
      required:
        - fault
      properties:
        fault:
          $ref: '#/components/schemas/CampaignsFaultDetail'
    CampaignsFaultDetail:
      type: object
      title: FaultDetail
      required:
        - faultId
        - traceId
      properties:
        faultId:
          description: Unique identifier for this fault occurrence (ER04).
          type: string
          format: uuid
        traceId:
          description: Trace identifier correlating this fault to telemetry (ER04).
          type: string
        errors:
          description: One or more error entries.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CampaignsFaultError'
    CampaignsFaultError:
      type: object
      title: FaultError
      description: Single error entry per ER04. May be extended with safe diagnostic members per ER09.
      properties:
        errorCode:
          description: Stable error-code identifier documented on the developer portal (ER07).
          type: string
        description:
          description: Human-readable diagnostic message (ER04).
          type: string
      additionalProperties: true
    CampaignsFrequencyCap:
      type: object
      title: FrequencyCap
      description: Per-user frequency cap configuration for banner campaigns, limiting impressions within a rolling time window.
      required:
        - perUser
        - windowHours
      properties:
        perUser:
          description: Maximum number of impressions shown to a single user in the rolling window.
          type: integer
          minimum: 1
        windowHours:
          description: Length of the rolling window in hours.
          type: integer
          minimum: 1
    CampaignsJsonPatchDocument:
      type: array
      title: JsonPatchDocument
      description: RFC 6902 JSON Patch document containing one or more patch operations.
      items:
        $ref: '#/components/schemas/CampaignsJsonPatchOperation'
    CampaignsJsonPatchOperation:
      type: object
      title: JsonPatchOperation
      description: A single RFC 6902 JSON Patch operation.
      required:
        - op
        - path
      properties:
        op:
          description: Operation discriminator (add/remove/replace/move/copy/test).
          $ref: '#/components/schemas/CampaignsJsonPatchOperationType'
        path:
          description: JSON Pointer to the target location (RFC 6901).
          type: string
          minLength: 1
        value:
          description: Value used by add, replace, and test operations. Omitted for remove, move, and copy.
        from:
          description: Source pointer used by move and copy operations.
          type: string
    CampaignsJsonPatchOperationType:
      type: string
      title: JsonPatchOperationType
      description: JSON Patch operation types per RFC 6902.
      enum:
        - add
        - remove
        - replace
        - move
        - copy
        - test
    CampaignsMarketCapabilities:
      type: object
      title: MarketCapabilities
      description: Derived capabilities flags for frontend consumers.
      required:
        - supportsWallet
        - supportsBasketRecommendations
        - supportsBanner
        - supportsSponsoredListing
      properties:
        supportsWallet:
          type: boolean
        supportsBasketRecommendations:
          type: boolean
        supportsBanner:
          type: boolean
        supportsSponsoredListing:
          type: boolean
    CampaignsMarketPricing:
      type: object
      title: MarketPricing
      description: Market-level pricing bounds. Bid amounts are in the market currency's minor units.
      required:
        - minBidAmount
        - maxBidAmount
        - defaultBidAmount
        - currency
        - auctionType
      properties:
        minBidAmount:
          description: Minimum allowed bid in minor units.
          type: number
        maxBidAmount:
          description: Maximum allowed bid in minor units.
          type: number
        defaultBidAmount:
          description: Default bid amount in minor units.
          type: number
        currency:
          description: ISO 4217 alpha-3 currency code.
          type: string
          minLength: 3
          maxLength: 3
          pattern: ^[A-Z]{3}$
        auctionType:
          description: Auction type in use for this market.
          type: string
    CampaignsMarketSettings:
      type: object
      title: MarketSettings
      description: Market-level configuration for a tenant.
      required:
        - timezone
        - allowedSlotTypes
        - pricing
        - wallet
        - capabilities
      properties:
        timezone:
          description: IANA timezone identifier for the market (e.g. `Europe/Dublin`).
          type: string
        allowedSlotTypes:
          description: Slot types available in this market.
          type: array
          items:
            $ref: '#/components/schemas/CampaignsSlotType'
        pricing:
          $ref: '#/components/schemas/CampaignsMarketPricing'
        wallet:
          $ref: '#/components/schemas/CampaignsMarketWallet'
        capabilities:
          $ref: '#/components/schemas/CampaignsMarketCapabilities'
    CampaignsMarketWallet:
      type: object
      title: MarketWallet
      description: Market-level wallet configuration.
      required:
        - enabled
        - minTopUp
      properties:
        enabled:
          description: Whether wallet funding is enabled in this market.
          type: boolean
        minTopUp:
          description: Minimum top-up amount in minor units of the market currency.
          type: number
    CampaignsMoney:
      type: object
      title: Money
      description: Monetary amount in minor units of an ISO 4217 currency (RDMO01).
      required:
        - amount
        - currency
      properties:
        amount:
          description: Amount in the smallest unit of the currency (e.g. pence, cents). Always non-negative.
          type: integer
          format: int64
          minimum: 0
        currency:
          description: ISO 4217 alpha-3 currency code (RDMO02).
          type: string
          minLength: 3
          maxLength: 3
          pattern: ^[A-Z]{3}$
    CampaignsOffsetPaging:
      type: object
      title: OffsetPaging
      description: Offset/page pagination metadata. Carries a total count so the UI can render numbered pagination (e.g. "Page 3 of 12"). The server counts the full result set for each request.
      required:
        - page
        - pageSize
        - totalCount
        - totalPages
      properties:
        page:
          description: Current page number (starts at one); echoes the page query parameter.
          type: integer
          format: int32
          minimum: 1
          example: 3
        pageSize:
          description: Maximum number of items per page; echoes the limit query parameter.
          type: integer
          format: int32
          minimum: 1
          example: 20
        totalCount:
          description: Total number of chains matching the query across all pages.
          type: integer
          format: int64
          minimum: 0
          example: 234
        totalPages:
          description: Total number of pages available for the current page size (0 when no chains match).
          type: integer
          format: int32
          minimum: 0
          example: 12
    CampaignsPartnerProfile:
      type: object
      title: PartnerProfile
      description: Partner-specific state for a given tenant.
      required:
        - partnerId
        - brandName
        - deliveryAreas
      properties:
        partnerId:
          description: Partner identifier (string per HM01).
          type: string
        brandName:
          description: Brand display name for the partner.
          type: string
        deliveryAreas:
          description: Delivery area identifiers configured for this partner.
          type: array
          items:
            type: string
    CampaignsPricing:
      title: Pricing
      description: Tagged union of pricing variants, discriminated by the model field.
      oneOf:
        - $ref: '#/components/schemas/CampaignsPricingCostPerClick'
        - $ref: '#/components/schemas/CampaignsPricingCostPerAcquisition'
        - $ref: '#/components/schemas/CampaignsPricingCostPerMille'
        - $ref: '#/components/schemas/CampaignsPricingFixedPrice'
      discriminator:
        propertyName: model
        mapping:
          costPerClick: '#/components/schemas/CampaignsPricingCostPerClick'
          costPerAcquisition: '#/components/schemas/CampaignsPricingCostPerAcquisition'
          costPerMille: '#/components/schemas/CampaignsPricingCostPerMille'
          fixedPrice: '#/components/schemas/CampaignsPricingFixedPrice'
    CampaignsPricingCostPerAcquisition:
      type: object
      title: PricingCostPerAcquisition
      description: Cost-per-acquisition pricing variant.
      required:
        - model
        - acquisitionPrice
      properties:
        model:
          description: Pricing model discriminator.
          type: string
          enum:
            - costPerAcquisition
        acquisitionPrice:
          description: Price paid per acquisition event in minor currency units.
          $ref: '#/components/schemas/CampaignsMoney'
    CampaignsPricingCostPerClick:
      type: object
      title: PricingCostPerClick
      description: Cost-per-click pricing variant.
      required:
        - model
        - maxBid
      properties:
        model:
          description: Pricing model discriminator.
          type: string
          enum:
            - costPerClick
        maxBid:
          description: Maximum bid per click in minor currency units.
          $ref: '#/components/schemas/CampaignsMoney'
    CampaignsPricingCostPerMille:
      type: object
      title: PricingCostPerMille
      description: Cost-per-mille (per 1000 impressions) pricing variant.
      required:
        - model
        - impressionBudget
        - targetImpressions
      properties:
        model:
          description: Pricing model discriminator.
          type: string
          enum:
            - costPerMille
        impressionBudget:
          description: Total budget for the impression buy in minor currency units.
          $ref: '#/components/schemas/CampaignsMoney'
        targetImpressions:
          description: Target impression count over the campaign window.
          type: integer
          format: int64
          minimum: 1
    CampaignsPricingFixedPrice:
      type: object
      title: PricingFixedPrice
      description: Fixed-price pricing for an agreed window. The agreed window IS the campaign window.
      required:
        - model
        - amount
        - agreedWindow
      properties:
        model:
          description: Pricing model discriminator.
          type: string
          enum:
            - fixedPrice
        amount:
          description: Fixed price agreed with the partner for the window in minor currency units.
          $ref: '#/components/schemas/CampaignsMoney'
        agreedWindow:
          description: Must equal the campaign schedule block (startsAt, endsAt, timezoneId).
          $ref: '#/components/schemas/CampaignsSchedule'
    CampaignsRecurringScheduleEntry:
      type: object
      title: RecurringScheduleEntry
      description: A recurring day-of-week schedule entry with optional time slots.
      required:
        - day
      properties:
        day:
          description: Day of the week this entry applies to.
          $ref: '#/components/schemas/CampaignsDayOfWeek'
        timeSlots:
          description: Optional time windows within this day. When absent, the campaign runs for the entire day. When present, the campaign is active only during the specified windows.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CampaignsTimeSlot'
    CampaignsReplaceCampaignGroupRequest:
      type: object
      title: ReplaceCampaignGroupRequest
      description: Full replacement payload for PUT (idempotent per VE06/VE07). Server-managed fields such as status, version, audit, identity, and syncStatus are not accepted.
      required:
        - campaigns
        - eTag
      properties:
        name:
          description: |
            Optional human-readable label for the campaign group, unique per (tenant, partnerId) when supplied. As this is a full replacement, omitting the field clears any existing label rather than leaving it unchanged.
          type: string
          minLength: 1
          maxLength: 200
        campaigns:
          description: One or more campaign entries, each with pricing and type-specific configuration.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CampaignsCampaign'
        schedule:
          description: Optional run window.
          $ref: '#/components/schemas/CampaignsSchedule'
        budget:
          description: Optional spend budget (limit and type only; remaining is server-managed).
          $ref: '#/components/schemas/CampaignsBudget'
        eTag:
          description: Opaque concurrency token from a prior GET or creation response.
          type: string
    CampaignsSchedule:
      type: object
      title: Schedule
      description: Campaign scheduling. Supports both simple start/end windows and recurring day-of-week timetables. When recurringSchedule is provided, the campaign is only active during the specified days/times within the startsAt/endsAt window.
      properties:
        startsAt:
          description: When the campaign becomes Active. Absent means immediately.
          $ref: '#/components/schemas/CampaignsZonedTimestamp'
        endsAt:
          description: When the campaign auto-Ends. Absent means runs indefinitely.
          $ref: '#/components/schemas/CampaignsZonedTimestamp'
        recurringSchedule:
          description: Recurring day-of-week timetable. When present, the campaign is only active during the specified days and time slots within the startsAt/endsAt window (if set).
          type: array
          minItems: 1
          maxItems: 7
          items:
            $ref: '#/components/schemas/CampaignsRecurringScheduleEntry'
      additionalProperties: false
    CampaignsSlotType:
      type: string
      title: SlotType
      description: Discriminator that selects the configuration and pricing variants permitted for a campaign.
      enum:
        - basketRecommendations
        - banner
        - sponsoredListing
    CampaignsSyncStatus:
      type: string
      title: SyncStatus
      description: Synchronisation status with external ad platforms (e.g. TopSort).
      enum:
        - pending
        - synced
        - failed
    CampaignsTargetSurface:
      type: string
      title: TargetSurface
      description: Platform or surface on which a banner campaign should render.
      enum:
        - web
        - ios
        - android
    CampaignsTargeting:
      type: object
      title: Targeting
      description: Geographic targeting criteria. When absent, the campaign targets all delivery areas for the partner.
      required:
        - deliveryAreas
      properties:
        deliveryAreas:
          description: Delivery areas the campaign is scoped to. At least one required.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CampaignsDeliveryArea'
    CampaignsTimeSlot:
      type: object
      title: TimeSlot
      description: A time window within a single day (24h clock, tenant timezone).
      required:
        - startTime
        - endTime
      properties:
        startTime:
          description: Start time in HH:mm format (inclusive).
          type: string
          pattern: ^([01]\d|2[0-3]):[0-5]\d$
          example: '09:00'
        endTime:
          description: End time in HH:mm format (exclusive). Must be after startTime.
          type: string
          pattern: ^([01]\d|2[0-3]):[0-5]\d$
          example: '22:00'
    CampaignsWallet:
      type: object
      title: Wallet
      description: Per-partner per-tenant wallet balance.
      required:
        - walletId
        - walletName
        - tenant
        - partnerId
        - balance
        - currency
        - updatedAt
      properties:
        walletId:
          description: Server-assigned wallet identifier.
          type: string
          format: guid
        walletName:
          description: Human-readable label for the wallet (e.g. "Default", "Promotions"). Unique per (tenant, partnerId).
          type: string
          minLength: 1
          maxLength: 100
        tenant:
          description: ISO 3166-1 alpha-2 tenant code (lowercase).
          type: string
        partnerId:
          description: Partner identifier (string per HM01).
          type: string
        balance:
          description: Current balance in integer minor units.
          type: integer
          format: int64
        currency:
          description: ISO 4217 alpha-3 currency code.
          type: string
          minLength: 3
          maxLength: 3
          pattern: ^[A-Z]{3}$
        updatedAt:
          description: When the wallet balance was last updated (UTC instant).
          type: string
          format: date-time
    CampaignsWalletHistoryPage:
      type: object
      title: WalletHistoryPage
      description: Cursor-paginated page of wallet transactions (QEPG04).
      required:
        - data
        - paging
      properties:
        data:
          description: Wallet transactions on this page.
          type: array
          items:
            $ref: '#/components/schemas/CampaignsWalletTransaction'
        paging:
          description: Cursor block for fetching adjacent pages.
          type: object
          required:
            - cursors
          properties:
            cursors:
              description: Cursors usable in the before and after query parameters.
              type: object
              properties:
                after:
                  description: Cursor for the next page. Null when this is the last page.
                  type: string
                  nullable: true
                before:
                  description: Cursor for the previous page. Null when this is the first page.
                  type: string
                  nullable: true
    CampaignsWalletList:
      type: object
      title: WalletList
      description: List of wallets for a partner.
      required:
        - data
      properties:
        data:
          description: Wallets belonging to the partner.
          type: array
          items:
            $ref: '#/components/schemas/CampaignsWallet'
    CampaignsWalletModifyRequest:
      type: object
      title: WalletModifyRequest
      description: Credit (positive delta) or debit (negative delta) a partner wallet balance.
      required:
        - delta
        - currency
      properties:
        delta:
          description: Amount to add (positive) or subtract (negative) in minor currency units.
          type: integer
          format: int64
        currency:
          description: Currency code that must match the tenant's configured currency (ISO 4217 alpha-3).
          type: string
          minLength: 3
          maxLength: 3
          pattern: ^[A-Z]{3}$
        reason:
          description: Free-text reason for the balance change used for audit purposes.
          type: string
          maxLength: 500
    CampaignsWalletTransaction:
      type: object
      title: WalletTransaction
      description: A single wallet balance change event record.
      required:
        - transactionId
        - delta
        - balanceAfter
        - currency
        - reason
        - performedBy
        - performedAt
      properties:
        transactionId:
          description: Unique transaction identifier.
          type: string
          format: guid
        delta:
          description: Amount changed (positive for credit, negative for debit) in minor currency units.
          type: integer
          format: int64
        balanceAfter:
          description: Wallet balance after this transaction was applied in minor currency units.
          type: integer
          format: int64
        currency:
          description: ISO 4217 alpha-3 currency code.
          type: string
          minLength: 3
          maxLength: 3
          pattern: ^[A-Z]{3}$
        reason:
          description: Reason for the balance change. Null when no reason was provided.
          type: string
          nullable: true
        performedBy:
          description: Principal who performed the wallet transaction.
          $ref: '#/components/schemas/CampaignsAuditPrincipal'
        performedAt:
          description: When the transaction was performed (UTC instant).
          type: string
          format: date-time
    CampaignsZonedTimestamp:
      type: object
      title: ZonedTimestamp
      description: Wall-clock instant with explicit IANA timezone. The pair round-trips byte-for-byte through the API and events.
      required:
        - instant
        - timezoneId
      properties:
        instant:
          description: RFC 3339 timestamp with offset (e.g. 2026-05-01T09:00:00+01:00).
          type: string
          format: date-time
        timezoneId:
          description: IANA timezone identifier (e.g. Europe/Dublin).
          type: string
          minLength: 1
    CatalogueSharedEntitiesAction:
      description: An action that triggers client-side routing with analytics event tracking.
      type: object
      required:
        - type
        - trigger
      properties:
        type:
          type: string
          description: Type of the action.
          enum:
            - navigate
        trigger:
          type: object
          required:
            - eventName
          properties:
            eventName:
              type: string
              description: The event the client interprets to determine the action to take.
              example: partnerView
            params:
              type: object
              description: Key-value parameters associated with the navigation action.
              additionalProperties:
                type: string
              example:
                id: '124852'
                seoName: example-restaurant-london
        analytics:
          type: object
          description: Analytics triggers for the action.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesAnalyticsTriggers'
    CatalogueSharedEntitiesAnalyticsRegistry:
      type: object
      description: |
        Defines a standardized tracking instruction. This schema allows any entity
        to trigger an analytics event across multiple providers using a consistent contract.
      additionalProperties:
        type: array
        description: Standardized tracking instruction for multiple providers.
        items:
          oneOf:
            - type: object
              description: Payload structure for Snowplow Analytics.
              required:
                - snowplow
              properties:
                snowplow:
                  type: object
                  required:
                    - schema
                    - data
                  properties:
                    schema:
                      type: string
                      description: The Iglu URI for the Self-Describing Event (e.g., iglu:com.acme/event/jsonschema/1-0-0).
                    data:
                      type: object
                      description: The business data associated with the event schema.
                      default: {}
                      additionalProperties: true
                    contexts:
                      type: array
                      description: Provided business contexts.
                      items:
                        type: object
                        required:
                          - schema
                          - data
                        properties:
                          schema:
                            type: string
                            description: |
                              The formal Iglu Schema URI defining the structure and validation rules for the associated 
                              data (e.g., iglu:com.acme/context/jsonschema/1-0-0).
                          data:
                            type: object
                            description: |
                              A JSON object containing the properties defined in the schema URI. 
                              This must pass validation against the referenced Iglu schema.
                              Note, the Iglu schema may not align with API contract guidelines (e.g. prices as decimals rather than integers).
                            additionalProperties: true
                    clientContexts:
                      type: array
                      description: |
                        Semantic hints for the Client to inject locally-managed metadata. 
                        The Client maps these keys to specific provider schemas (e.g., 'platform' -> 'cx_platform').
                      items:
                        type: string
                        enum:
                          - accessibility
                          - advertisers
                          - api
                          - appStore
                          - authentication
                          - basket
                          - cfBot
                          - component
                          - consent
                          - content
                          - customization
                          - error
                          - experiment
                          - formField
                          - menu
                          - page
                          - partner
                          - platform
                          - producer
                          - request
                          - requestRenderTime
                          - user
      x-examples:
        viewBasket:
          - snowplow:
              schema: iglu:jet.cust/basket_view/jsonschema/1-0-0
              data: {}
              contexts:
                - schema: iglu:jet.cust/cx_menu/jsonschema/1-0-1
                  data:
                    id: uk:124852:7d15ea45e67809fb00b888517ccabf57f8a00644
                - schema: iglu:jet.cust/cx_partner/jsonschema/1-1-3
                  data:
                    id: 124852
                    status: open
                    minimumOrderValue: 0
                    isThrottled: false
                - schema: iglu:jet.cust/cx_fulfillment/jsonschema/1-0-5
                  data:
                    method: delivery
                    availableMethods:
                      - delivery
                      - collection
                - schema: iglu:jet.cust/cx_basket/jsonschema/1-0-3
                  data:
                    id: TestBasketId
                    total: 12
                    serviceFee: 0
                    deliveryFee: 1
                    type: single
              clientContexts:
                - page
                - platform
                - consent
                - producer
                - user
                - advertisers
                - api
    CatalogueSharedEntitiesAnalyticsTriggers:
      type: object
      description: |
        Maps UI lifecycle events to analytical instructions defined in the analytics registry.
        Values are plain string keys used to look up entries in the registry under registry -> analytics.
      properties:
        impression:
          type: string
          description: Fired once when the component is initially loaded. Key must exist in the analytics registry.
          example: basket_load
          nullable: true
        visible:
          type: string
          description: Fired every time the component enters the viewport. Key must exist in the analytics registry.
          example: basket_view
          nullable: true
        click:
          type: string
          description: Fired on user tap/interaction. Key must exist in the analytics registry.
          example: remove_item
          nullable: true
        swipe:
          type: string
          description: Fired on horizontal or vertical drag gestures (limited scope). Key must exist in the analytics registry.
          example: offers_carousel_swipe
          nullable: true
    CatalogueSharedEntitiesButton:
      type: object
      description: A button entity.
      required:
        - type
        - data
        - action
      properties:
        type:
          type: string
          description: Type of the entity.
          enum:
            - button
        meta:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesMeta'
        data:
          type: object
          description: Data payload for the entity.
          properties:
            label:
              type: object
              description: The text label displayed on the button.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesTextPrimitive'
        action:
          type: object
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesAction'
    CatalogueSharedEntitiesCarousel:
      type: object
      description: A carousel entity.
      required:
        - type
        - data
      properties:
        type:
          type: string
          description: Type of the entity.
          enum:
            - carousel
        meta:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesMeta'
        data:
          type: object
          description: Data payload for the entity.
          required:
            - items
          properties:
            title:
              type: object
              description: The title of the carousel.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesTextPrimitive'
            viewAll:
              type: object
              description: A button that allows users to view all items in the carousel.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CatalogueSharedEntitiesButton'
            items:
              type: array
              minItems: 1
              maxItems: 50
              items:
                type: object
                additionalProperties: true
                description: Items follow same entity structure with type and data properties.
    CatalogueSharedEntitiesIcon:
      type: object
      description: An icon entity.
      required:
        - type
        - data
      properties:
        type:
          type: string
          description: Type of the entity.
          enum:
            - icon
        meta:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesMeta'
        data:
          type: object
          description: Data payload for the entity.
          required:
            - name
          properties:
            name:
              type: string
              description: |
                The name of the icon from the PIE design system or a custom icon set.

                This icon set will be extended over time and fallback should be used if unknown.
              enum:
                - offerFilled
                - bike
                - clock
                - routePin
                - basket
                - starFilled
                - starHalfFilled
                - star
                - alertTriangle
                - weight
                - jetPlus
    CatalogueSharedEntitiesMedia:
      type: object
      description: A media component for displaying images or other visual content.
      required:
        - type
        - data
      properties:
        type:
          type: string
          description: Type of the entity.
          enum:
            - media
        meta:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesMeta'
        data:
          type: object
          description: Data payload for the entity.
          required:
            - type
            - data
          properties:
            type:
              type: string
              description: The media type.
              enum:
                - image
            data:
              type: object
              required:
                - source
                - url
              properties:
                source:
                  type: string
                  description: The image hosting source.
                  enum:
                    - cloudinary
                url:
                  type: string
                  description: The URL of the image resource, including any transformation parameters.
                  format: uri
                  example: https://just-eat-prod-eu-res.cloudinary.com/image/upload//v1/uk/restaurants/235329
    CatalogueSharedEntitiesMeta:
      type: object
      description: |
        Metadata information for an entity.

        When not set, default values for `type` and `theme` apply.
      additionalProperties: true
      properties:
        type:
          type: string
          description: |
            Determines the structure of the entity.

            When not set, default value applies.
          nullable: true
          default: standard
        theme:
          type: object
          description: |
            Determines the styling of the entity.

            Clients should be tolerant of unrecognised names and use the default value for `name` when necessary.

            When not set, default value for `name` applies.
          nullable: true
          properties:
            name:
              type: string
              description: |
                The name of the theme to apply to the entity.

                When not set, default value applies.
              nullable: true
              default: standard
        accessibilityLabel:
          type: string
          description: A string that labels the entity for accessibility purposes.
          nullable: true
        analytics:
          type: object
          description: Analytics triggers for the entity.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesAnalyticsTriggers'
    CatalogueSharedEntitiesPartnerCard:
      type: object
      description: A partner card entity.
      required:
        - type
        - data
      properties:
        type:
          type: string
          description: Type of the entity.
          enum:
            - partnerCard
        meta:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesMeta'
        data:
          type: object
          description: Data payload for the entity.
          required:
            - name
          properties:
            banner:
              type: object
              description: The banner for the partner card.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CatalogueSharedEntitiesMedia'
            logo:
              type: object
              description: The logo for the partner card.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CatalogueSharedEntitiesMedia'
            name:
              type: object
              description: The name of the partner.
              allOf:
                - $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesTextPrimitive'
            details:
              type: object
              description: Additional details about the partner.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CatalogueSharedEntitiesTagContainer'
            promotions:
              type: object
              description: Promotional information related to the partner.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CatalogueSharedEntitiesTagContainer'
            tags:
              type: object
              description: Tags associated with the partner.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CatalogueSharedEntitiesTagContainer'
        action:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesAction'
    CatalogueSharedEntitiesTag:
      type: object
      description: |
        A tag entity. 

        Only one of "label' or "icon" needs to be present, but both may be present.
      required:
        - type
        - data
      properties:
        type:
          type: string
          description: Type of the entity.
          enum:
            - tag
        meta:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesMeta'
            - type: object
              properties:
                theme:
                  type: object
                  properties:
                    name:
                      type: string
                      enum:
                        - standard
                        - newPartner
                        - offer
                        - sponsored
                        - stampcard
                        - socialProofing1
                        - neutral
                        - neutralAlternative
                        - jetPlus
        data:
          type: object
          description: Data payload for the entity.
          anyOf:
            - required:
                - label
            - required:
                - icon
          properties:
            label:
              type: object
              description: The text label for the tag.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesTextPrimitive'
            icon:
              type: object
              description: An icon to display.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CatalogueSharedEntitiesIcon'
    CatalogueSharedEntitiesTagContainer:
      type: object
      description: A container entity allowing tags and nested tag containers.
      required:
        - type
        - data
      properties:
        type:
          type: string
          description: Type of the entity.
          enum:
            - container
        meta:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesMeta'
        data:
          type: object
          description: The data payload.
          required:
            - items
          properties:
            items:
              type: array
              description: List of tags or nested tag containers.
              items:
                anyOf:
                  - $ref: '#/components/schemas/CatalogueSharedEntitiesTag'
                  - $ref: '#/components/schemas/CatalogueSharedEntitiesTagContainer'
    CdeChangewindowsopaCanDeployRequest:
      type: object
      description: |
        OPA request wrapper for the deployment eligibility check endpoint. The `input` field contains the policy input document.
      properties:
        input:
          type: object
          description: Policy input for the change window deployment check.
          required:
            - componentId
          properties:
            componentId:
              type: string
              description: |
                The component identifier as registered in Platform Metadata.
              example: myapp
            environmentId:
              type: string
              description: |
                The target environment ID. Provide either `environmentId` or `bulkheadId`, not both.
              example: euw1-pdv-prd-5
            bulkheadId:
              type: string
              description: |
                Perform a bulkhead-level check using default windows (no per-environment overrides). Provide either `environmentId` or `bulkheadId`, not both.
              enum:
                - eu1
                - eu2
                - na1
                - oc1
              example: eu1
            timestamp:
              type: string
              format: date-time
              description: |
                ISO 8601 timestamp to evaluate. Defaults to the current server time when omitted.
              example: '2026-01-21T10:00:00Z'
            canary:
              type: boolean
              description: |
                Per-deployment assertion: this release uses a canary mechanism. Adds +1 to the score when the PMD tag is absent.
              default: false
              example: false
            featureFlag:
              type: boolean
              description: |
                Per-deployment assertion: this change is behind a feature flag. Adds +1 to the score when the PMD tag is absent.
              default: false
              example: false
            fastRollback:
              type: boolean
              description: |
                Per-deployment assertion: this change can be rolled back in under 5 minutes. Adds +1 to the score when the PMD tag is absent.
              default: false
              example: false
            override:
              type: object
              description: |
                Change window override, set by the PR comment parser in the GitHub Action. When `enabled: true` the deployment is allowed regardless of window status.
              properties:
                enabled:
                  type: boolean
                  example: true
                approved_by:
                  type: string
                  description: GitHub username of the person who approved the override.
                  example: johndoe
                reason:
                  type: string
                  description: Human-readable reason for the override.
                  example: Critical hotfix for order processing outage
    CdeChangewindowsopaCanDeployResponse:
      type: object
      description: OPA response wrapper for the deployment eligibility check endpoint.
      properties:
        result:
          type: object
          description: |
            The policy evaluation result. Absent if OPA could not evaluate the rule (e.g., missing required input).
          properties:
            allowed:
              type: boolean
              description: Whether the deployment is allowed at the evaluated timestamp.
              example: true
            componentId:
              type: string
              description: The component identifier from the request input.
              example: myapp
            environmentId:
              type: string
              description: The environment ID evaluated, or null for bulkhead-level checks.
              nullable: true
              example: euw1-pdv-prd-5
            bulkheadId:
              type: string
              description: The bulkhead the environment belongs to, or the directly requested bulkhead.
              nullable: true
              example: eu1
            rank:
              type: string
              description: |
                The component's change window rank derived from its score. `unrestricted` is returned for non-production environments and the retired `oc1` bulkhead.
              enum:
                - bronze
                - silver
                - gold
                - unrestricted
              example: silver
            isProduction:
              type: boolean
              description: Whether the evaluated environment is a production environment.
              example: true
            window:
              $ref: '#/components/schemas/CdeChangewindowsopaChangeWindowInfo'
            overrideActive:
              type: boolean
              description: Whether a change window override is currently active for this request.
              example: false
            hasEnvironmentOverride:
              type: boolean
              description: |
                Whether the environment has a custom change window configured that differs from the bulkhead default.
              example: false
    CdeChangewindowsopaChangeWindowInfo:
      type: object
      description: Information about the current or next change window.
      nullable: true
      properties:
        open:
          type: boolean
          description: Whether the change window is currently open.
          example: true
        windowStart:
          type: string
          format: date-time
          description: |
            RFC3339 timestamp of when the current window opened (if open), or when the most recent window opened (if closed).
          example: '2026-01-26T23:00:00+01:00'
        windowEnd:
          type: string
          format: date-time
          description: RFC3339 timestamp of when the current window closes (if open).
          nullable: true
          example: '2026-01-27T11:00:00+01:00'
        nextWindowStart:
          type: string
          format: date-time
          description: RFC3339 timestamp of when the next window will open (if closed).
          nullable: true
          example: '2026-01-27T23:00:00+01:00'
        timeZone:
          type: string
          description: IANA timezone identifier used for the window times.
          example: Europe/Amsterdam
    CdeChangewindowsopaComponentDetailRequest:
      type: object
      description: |
        OPA request wrapper for the component scoring and schedule endpoint. The `input` field contains the policy input document.
      properties:
        input:
          type: object
          description: Policy input for the component detail query.
          required:
            - componentId
          properties:
            componentId:
              type: string
              description: |
                The component identifier as registered in Platform Metadata.
              example: myapp
            environmentId:
              type: string
              description: |
                Optional. When provided, limits the bulkhead details in the response to the single bulkhead that contains this environment.
              example: euw1-pdv-prd-5
    CdeChangewindowsopaComponentDetailResponse:
      type: object
      description: OPA response wrapper for the component scoring and schedule endpoint.
      properties:
        result:
          type: object
          description: |
            The policy evaluation result. Absent if OPA could not evaluate the rule.
          properties:
            componentId:
              type: string
              description: The component identifier from the request input.
              example: myapp
            score:
              type: integer
              description: |
                Total numeric score computed from the 8 criteria. Null when the component is not found in Platform Metadata.
              nullable: true
              example: 2
            scoreAvailable:
              type: boolean
              description: |
                Whether all 8 criteria could be fully evaluated. False when no deployments data exists for criteria 4 (Sonic Runtime) or 7 (EC2 Runtime).
              example: false
            rank:
              type: string
              description: |
                Change window rank derived from the score. Bronze (below 0), Silver (0-2), Gold (3+).
              enum:
                - bronze
                - silver
                - gold
              example: silver
            criteria:
              type: array
              description: Breakdown of all 8 scoring criteria.
              items:
                $ref: '#/components/schemas/CdeChangewindowsopaCriterion'
            bulkheads:
              type: object
              description: |
                Map of bulkhead ID to its window details and current status. When `environmentId` was provided in the request, contains only the single bulkhead for that environment.
              additionalProperties:
                type: object
                description: Details for a single bulkhead.
                properties:
                  bulkheadId:
                    type: string
                    example: eu1
                  description:
                    type: string
                    example: Europe (Amsterdam)
                  timeZone:
                    type: string
                    description: IANA timezone for this bulkhead.
                    example: Europe/Amsterdam
                  rank:
                    type: string
                    description: The rank used to determine window times for this bulkhead.
                    example: silver
                  schedule:
                    type: array
                    description: |
                      Weekly schedule showing window times for each day of the week.
                    items:
                      type: object
                      properties:
                        day:
                          type: string
                          enum:
                            - Sunday
                            - Monday
                            - Tuesday
                            - Wednesday
                            - Thursday
                            - Friday
                            - Saturday
                          example: Monday
                        windows:
                          type: array
                          description: List of open windows for this day.
                          items:
                            type: object
                            properties:
                              from:
                                type: string
                                description: Window open time in HH:MM format (local time).
                                example: '23:00'
                              to:
                                type: string
                                description: Window close time in HH:MM format (local time, next calendar day).
                                example: '11:00'
                  currentWindow:
                    $ref: '#/components/schemas/CdeChangewindowsopaChangeWindowInfo'
                  hasOverride:
                    type: boolean
                    description: |
                      Whether any environment in this bulkhead has a custom change window override for this component's rank.
                    example: false
    CdeChangewindowsopaCriterion:
      type: object
      description: A single scoring criterion from the change window charter.
      properties:
        id:
          type: integer
          description: Criterion number (1–8).
          example: 1
        name:
          type: string
          description: Human-readable criterion name.
          example: Canary Launch
        question:
          type: string
          description: The yes/no question that determines whether the criterion is met.
          example: Will the release use a canary mechanism to control traffic?
        value:
          type: boolean
          description: Whether the criterion is met for this component.
          nullable: true
          example: true
        score:
          type: integer
          description: Score contribution from this criterion (positive or negative).
          example: 1
        available:
          type: boolean
          description: |
            Whether this criterion could be evaluated. False when the required data source (deployments data for criteria 4 and 7) is not available for this component.
          example: true
        source:
          type: string
          description: Data source used to evaluate the criterion.
          enum:
            - pmd_tag
            - input
            - odl
            - computed
          nullable: true
          example: pmd_tag
        message:
          type: string
          description: Optional explanatory message about the criterion result.
          nullable: true
          example: null
        data:
          type: object
          description: Optional additional structured data for the criterion.
          nullable: true
          example: null
    CdeChangewindowsopaEnvironmentDetailRequest:
      type: object
      description: |
        OPA request wrapper for the environment listing and window status endpoint. The `input` field contains the policy input document.
      properties:
        input:
          type: object
          description: Policy input for the environment detail query.
          properties:
            componentId:
              type: string
              description: |
                Optional. When provided, the response includes the component's effective rank and per-environment override status. When omitted, all environments are returned without component-specific information.
              example: myapp
    CdeChangewindowsopaEnvironmentDetailResponse:
      type: object
      description: OPA response wrapper for the environment listing and window status endpoint.
      properties:
        result:
          type: object
          description: |
            The policy evaluation result. Absent if OPA could not evaluate the rule.
          properties:
            componentId:
              type: string
              description: |
                The component identifier from the request input. Null when no component identifier was provided.
              nullable: true
              example: myapp
            rank:
              type: string
              description: |
                The component's change window rank. Null when no component identifier was provided.
              enum:
                - bronze
                - silver
                - gold
              nullable: true
              example: silver
            environments:
              type: array
              description: List of environments and their change window details.
              items:
                type: object
                properties:
                  environmentId:
                    type: string
                    description: The environment identifier.
                    example: euw1-pdv-prd-5
                  bulkheadId:
                    type: string
                    description: The bulkhead this environment belongs to.
                    nullable: true
                    example: eu1
                  isProduction:
                    type: boolean
                    description: Whether this is a production environment.
                    example: true
                  effectiveRank:
                    type: string
                    description: |
                      The rank that applies to this environment for the given component. `unrestricted` for non-production environments. Null when no component identifier was provided.
                    nullable: true
                    example: silver
                  hasOverride:
                    type: boolean
                    description: |
                      Whether this environment has a custom change window override for the component's rank.
                    example: false
    CheckoutAvailableFulfilmentTimesIssue:
      discriminator:
        propertyName: code
        mapping:
          RESTAURANT_NOT_TAKING_ORDERS: '#/components/schemas/CheckoutIssuesCheckoutIssueRestaurantNotTakingOrders'
          SERVICE_TYPE_UNAVAILABLE: '#/components/schemas/CheckoutIssuesCheckoutIssueServiceTypeUnavailable'
          ITEMS_UNORDERABLE: '#/components/schemas/CheckoutIssuesCheckoutIssueItemsUnorderable'
        oneOf:
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueRestaurantNotTakingOrders'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueServiceTypeUnavailable'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueItemsUnorderable'
      required:
        - code
      properties:
        code:
          nullable: false
          description: The issue code
          enum:
            - RESTAURANT_NOT_TAKING_ORDERS
            - SERVICE_TYPE_UNAVAILABLE
            - ITEMS_UNORDERABLE
          type: string
      type: object
    CheckoutCheckoutAction:
      required:
        - Type
        - Data
      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:
          description: Action data dictionary. Key value pairs required to make payment.
          additionalProperties:
            type: string
          example:
            BraintreeDeviceData: someescapedjson
            PayerId: somepaypalpayerid12345
            PayerEmail: someemail@paypal.com
            Nonce: acbd2334
            DeviceId: somedeviceid
          type: object
        Type:
          description: Identifier for the type of action data for the payment method dependant on PaymentOptionType.
          type: string
      type: object
    CheckoutCheckoutAdditionalProductsMembership:
      type: object
      description: Details of the membership the customer wants to purchase.
      required:
        - id
        - status
        - consented
      properties:
        id:
          type: string
          nullable: false
          description: The Id of the membership.
        consented:
          type: boolean
          nullable: false
          description: Indicates whether the membership terms and conditions have been consented to by the customer.
        status:
          type: object
          nullable: false
          description: Indicates the status of the membership.
          required:
            - available
            - price
          properties:
            available:
              type: boolean
              nullable: false
              description: Indicates whether the membership is available.
            price:
              type: object
              nullable: false
              description: Indicates the price of the membership.
              required:
                - amount
              properties:
                amount:
                  type: integer
                  format: int32
                  nullable: false
                  description: Indicates the amount of the price, in minor currency units.
            reasons:
              type: array
              nullable: true
              description: Provides reasons the membership is not available.
              items:
                nullable: false
                $ref: '#/components/schemas/CheckoutCheckoutMembershipAvailabilityReasons'
    CheckoutCheckoutAdditionalProductsResponse:
      type: object
      description: Contains the additional products associated with the Checkout.
      properties:
        memberships:
          type: array
          description: Contains any memberships associated with the Checkout.
          nullable: true
          items:
            $ref: '#/components/schemas/CheckoutCheckoutAdditionalProductsMembership'
    CheckoutCheckoutDeliveryModelOptions:
      type: object
      description: |
        Information about the new delivery model option for the checkout
      additionalProperties: false
      properties:
        selectedOption:
          type: string
          nullable: true
          description: The selected delivery model option for the checkout
          enum:
            - courier
            - drone
            - robot
      required:
        - selectedOption
    CheckoutCheckoutDeliveryOptionsResponse:
      type: object
      description: |
        Information about delivery options including voucher applied for delivery fee.
      properties:
        voucher:
          $ref: '#/components/schemas/CheckoutCheckoutVoucherResponse'
    CheckoutCheckoutGetCustomer:
      type: object
      nullable: false
      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.
      properties:
        lastName:
          maxLength: 100
          type: string
          description: |
            Customer's last name (Optional). Also known as Family Name.

            Please note, for the following countries, the maximum length is 30 characters:
              - Austria (AT)
              - Belgium (BE)
              - Bulgaria (BG)
              - Denmark (DK)
              - Germany (DE)
              - Luxembourg (LU)
              - Netherlands (NL)
              - Poland (PL)
              - Slovakia (SK)
              - Switzerland (CH)
          minLength: 0
          nullable: true
        phoneNumber:
          maxLength: 16
          type: string
          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.
          minLength: 3
          nullable: true
        firstName:
          maxLength: 100
          type: string
          description: |
            Customer's first name. Also known as Given Name(s).

            Please note, for the following countries, the maximum length is 30 characters:
              - Austria (AT)
              - Belgium (BE)
              - Bulgaria (BG)
              - Denmark (DK)
              - Germany (DE)
              - Luxembourg (LU)
              - Netherlands (NL)
              - Poland (PL)
              - Slovakia (SK)
              - Switzerland (CH)
          minLength: 1
          nullable: true
        dateOfBirth:
          nullable: true
          description: |
            Customer's date of birth represented in ISO 8601 date format.

            Required in Australia (AU) only for fulfilling an order that contain items being purchased that require age verification.
          type: string
          format: date
        taxId:
          type: string
          description: Customer's tax ID reference.
          minLength: 0
          maxLength: 50
          nullable: true
    CheckoutCheckoutGetFulfilment:
      type: object
      nullable: false
      description: How and when the items will be received by the customer.
      properties:
        time:
          required:
            - asap
          type: object
          description: Time the customer wants to receive the order i.e. when order is fulfilled.
          properties:
            scheduled:
              required:
                - from
                - to
              type: object
              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.
              properties:
                from:
                  nullable: false
                  description: Earliest time the customer wants the order to be fulfilled represented in ISO 8601 UTC (Zulu Time).
                  type: string
                to:
                  nullable: false
                  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.
                  type: string
              nullable: true
            asap:
              nullable: false
              description: |
                If the order should be fulfilled as soon as possible (ASAP).

                ASAP may not be fulfillable.

                Default is false.
              type: boolean
          nullable: true
        location:
          nullable: true
          description: |
            The destination the customer wants to receive the order.

            This only applies to purchases with a delivery service type.
          properties:
            geolocation:
              required:
                - latitude
                - longitude
              description: The coordinates of a geographical location where the customer wants to receive the order.
              $ref: '#/components/schemas/SharedGeoposition'
            address:
              nullable: true
              description: The postal address where the customer wants to receive the order.
              properties:
                locality:
                  maxLength: 50
                  type: string
                  description: |
                    The locality of this address.

                    Also known as Town or City.

                    Please note, for the following countries, the maximum length is 64 characters.
                      - Austria (AT)
                      - Belgium (BE)
                      - Bulgaria (BG)
                      - Denmark (DK)
                      - Germany (DE)
                      - Luxembourg (LU)
                      - Netherlands (NL)
                      - Poland (PL)
                      - Slovakia (SK)
                      - Switzerland (CH)
                  minLength: 1
                  nullable: true
                lines:
                  maxItems: 4
                  type: array
                  minItems: 0
                  items:
                    maxLength: 100
                    type: string
                    description: Represents part of a street address.
                    minLength: 1
                    nullable: false
                  description: |
                    One or more lines representing the street address.

                    Please note:
                      * For Australia (AU) and New Zealand (NZ), the second item will represent the Level/Unit Number (optional).
                      * For the following countries, the maximum number of items is 1 and the maximum length of an item is 64 characters:
                        - Austria (AT)
                        - Belgium (BE)
                        - Bulgaria (BG)
                        - Denmark (DK)
                        - Germany (DE)
                        - Luxembourg (LU)
                        - Netherlands (NL)
                        - Poland (PL)
                        - Slovakia (SK)
                        - Switzerland (CH)
                  nullable: false
                postalCode:
                  maxLength: 50
                  type: string
                  description: |
                    Postal code of this address.

                    Please note:
                    * This is an optional field in Bulgaria (BG) only.
                    * For the following countries, the maximum length is 8 characters:
                      - Austria (AT)
                      - Belgium (BE)
                      - Bulgaria (BG)
                      - Denmark (DK)
                      - Germany (DE)
                      - Luxembourg (LU)
                      - Netherlands (NL)
                      - Poland (PL)
                      - Slovakia (SK)
                      - Switzerland (CH)
                  minLength: 1
                  nullable: true
                administrativeArea:
                  maxLength: 50
                  type: string
                  description: |
                    Geographical region of this address. 

                    Also known as County or State.

                    Required in Australia (AU) only for an order to be fulfilled.
                  minLength: 1
                  nullable: true
                additionalInformation:
                  type: object
                  description: |
                    Additional information about the address.

                    This is only supported in the following countries:
                      - Austria (AT)
                      - Belgium (BE)
                      - Bulgaria (BG)
                      - Denmark (DK)
                      - Germany (DE)
                      - Luxembourg (LU)
                      - Netherlands (NL)
                      - Poland (PL)
                      - Slovakia (SK)
                      - Switzerland (CH)
                  nullable: true
                  additionalProperties: false
                  properties:
                    entrance:
                      type: string
                      description: Entrance/access point to the building.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    floor:
                      type: string
                      description: Floor/level of the building.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    door:
                      type: string
                      description: Door to the building.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    companyName:
                      type: string
                      description: Name of the company at the address.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    intercom:
                      type: string
                      description: Number to enter into the intercom at the address.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    apartmentName:
                      type: string
                      description: Name of the apartment at the address.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    flatNumber:
                      type: string
                      description: Number of the flat at the address.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    accessCode:
                      type: string
                      description: Access code for the building.
                      minLength: 1
                      maxLength: 64
                      nullable: true
              type: object
          type: object
        table:
          required:
            - identifier
          type: object
          description: |
            The table where the customer wants to receive the order.

            This only applies to purchases with a `dinein` service type.
          properties:
            identifier:
              type: string
              description: The identifier of the table where the customer wants to receive the order.
              nullable: false
              minLength: 1
              maxLength: 12
          nullable: true
    CheckoutCheckoutGetRestaurant:
      type: object
      description: The restaurant selling the items to be purchased.
      nullable: false
      required:
        - id
        - availabilityId
        - name
        - seoName
        - storefronts
        - location
        - logo
      properties:
        id:
          description: Unique identifier for the restaurant.
          type: string
          minLength: 1
          maxLength: 100
          nullable: false
        availabilityId:
          nullable: false
          description: |
            Unique identifier to identify when item(s) are available for ordering.
          type: string
          deprecated: true
        name:
          type: string
          description: Display name of the restaurant.
          minLength: 1
          maxLength: 100
          nullable: false
        seoName:
          type: string
          description: Public name of the restaurant used for Search Engine Optimization (SEO).
          minLength: 1
          maxLength: 100
          nullable: false
        storefronts:
          type: array
          description: Store information representing the items the restaurant sells.
          minItems: 1
          maxItems: 100
          nullable: false
          items:
            type: object
            nullable: false
            required:
              - type
            properties:
              type:
                type: string
                description: |
                  Type of storefront. 

                  **New types may be added in future.**
                enum:
                  - restaurant
                  - grocery
                nullable: false
        location:
          type: object
          description: The location of the restaurant.
          nullable: false
          properties:
            address:
              type: object
              description: The postal address of the restaurant.
              nullable: false
              required:
                - lines
                - locality
                - postalCode
              properties:
                lines:
                  type: array
                  description: Represents part of an address.
                  minItems: 1
                  maxItems: 4
                  nullable: false
                  items:
                    type: string
                    minLength: 1
                    maxLength: 100
                    nullable: false
                locality:
                  type: string
                  description: |
                    The locality of this address.

                    Also known as Town or City.
                  minLength: 1
                  maxLength: 50
                  nullable: false
                postalCode:
                  type: string
                  description: Postal code of this address.
                  minLength: 1
                  maxLength: 50
                  nullable: false
                formattedAddress:
                  type: string
                  description: A formatted address containing all address parts.
                  minLength: 1
                  maxLength: 550
                  nullable: false
            geolocation:
              type: object
              description: The coordinates of a geographical location where the customer wants to receive the order.
              nullable: true
              required:
                - latitude
                - longitude
              $ref: '#/components/schemas/SharedGeoposition'
        logo:
          type: object
          description: The logo representing the restaurant brand.
          nullable: false
          required:
            - url
          properties:
            url:
              type: string
              description: Absolute URL of the logo.
              minLength: 1
              maxLength: 200
              nullable: false
    CheckoutCheckoutGetTipping:
      type: object
      description: Details of any tips that have been applied.
      additionalProperties: false
      nullable: true
      properties:
        courier:
          type: object
          description: Details of any courier tip that has been applied.
          additionalProperties: false
          nullable: true
          properties:
            fixedAmount:
              type: object
              nullable: true
              description: Set to indicate that a fixed amount tip has been applied.
              required:
                - amount
              properties:
                amount:
                  type: number
                  format: integer
                  nullable: false
                  minimum: 1
                  description: The tip amount that has been applied in minor currency units.
            customAmount:
              type: object
              nullable: true
              description: Set to indicate that a custom amount tip has been applied.
              required:
                - amount
              properties:
                amount:
                  type: number
                  format: integer
                  nullable: false
                  minimum: 1
                  description: The tip amount that has been applied in minor currency units.
    CheckoutCheckoutIssueV2:
      discriminator:
        propertyName: code
        mapping:
          FIRST_NAME_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssueFirstNameRequired'
          MINIMUM_ORDER_VALUE_NOT_MET: '#/components/schemas/CheckoutIssuesCheckoutIssueMinimumOrderValueNotMet'
          SERVICE_TYPE_UNAVAILABLE: '#/components/schemas/CheckoutIssuesCheckoutIssueServiceTypeUnavailable'
          GEOLOCATION_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssueGeolocationRequired'
          ADMINISTRATIVE_AREA_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssueAdministrativeAreaRequired'
          LOCATION_UNDELIVERABLE: '#/components/schemas/CheckoutIssuesCheckoutIssueLocationUndeliverable'
          ITEMS_UNORDERABLE: '#/components/schemas/CheckoutIssuesCheckoutIssueItemsUnorderable'
          FULFILMENT_TIME_UNAVAILABLE: '#/components/schemas/CheckoutIssuesCheckoutIssueFulfilmentTimeUnavailable'
          PHONE_NUMBER_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssuePhoneNumberRequired'
          ADDITIONAL_ITEMS_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssueAdditionalItemsRequired'
          LOCALITY_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssueLocalityRequired'
          POSTAL_CODE_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssuePostalCodeRequired'
          ADDRESS_LINES_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssueAddressLinesRequired'
          DATE_OF_BIRTH_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssueDateOfBirthRequired'
          AGE_VERIFICATION_FAILED: '#/components/schemas/CheckoutIssuesCheckoutIssueAgeVerificationFailed'
          FULFILMENT_TIME_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssueFulfilmentTimeRequired'
          RESTAURANT_NOT_TAKING_ORDERS: '#/components/schemas/CheckoutIssuesCheckoutIssueRestaurantNotTakingOrders'
          TABLE_IDENTIFIER_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssueTableIdentifierRequired'
          ORDER_NOTE_NOT_ACCEPTED: '#/components/schemas/CheckoutIssuesCheckoutIssueOrderNoteNotAccepted'
          KITCHEN_NOTE_NOT_ACCEPTED: '#/components/schemas/CheckoutIssuesCheckoutIssueKitchenNoteNotAccepted'
          COURIER_NOTE_NOT_ACCEPTED: '#/components/schemas/CheckoutIssuesCheckoutIssueCourierNoteNotAccepted'
          TIP_INVALID: '#/components/schemas/CheckoutIssuesCheckoutIssueTipInvalid'
          PAYMENT_METHOD_REQUIRED: '#/components/schemas/CheckoutIssuesCheckoutIssuePaymentMethodRequired'
        oneOf:
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueFirstNameRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueMinimumOrderValueNotMet'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueServiceTypeUnavailable'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueGeolocationRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueAdministrativeAreaRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueLocationUndeliverable'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueItemsUnorderable'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueFulfilmentTimeUnavailable'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssuePhoneNumberRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueAdditionalItemsRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueLocalityRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssuePostalCodeRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueAddressLinesRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueDateOfBirthRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueAgeVerificationFailed'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueFulfilmentTimeRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueRestaurantNotTakingOrders'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueTableIdentifierRequired'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueOrderNoteNotAccepted'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueKitchenNoteNotAccepted'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueCourierNoteNotAccepted'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssueTipInvalid'
          - $ref: '#/components/schemas/CheckoutIssuesCheckoutIssuePaymentMethodRequired'
      required:
        - code
      properties:
        code:
          nullable: false
          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
            - TABLE_IDENTIFIER_REQUIRED
            - ORDER_NOTE_NOT_ACCEPTED
            - KITCHEN_NOTE_NOT_ACCEPTED
            - COURIER_NOTE_NOT_ACCEPTED
            - TIP_INVALID
            - PAYMENT_METHOD_REQUIRED
          type: string
      type: object
    CheckoutCheckoutMembershipAvailabilityReasons:
      type: object
      description: Indicates reasons for whether a membership is available for purchase on the Checkout.
      required:
        - type
        - displayText
      properties:
        type:
          type: string
          nullable: false
          description: Indicates the type of the restriction. Currently, possible values are `serviceType`, `customer`, `partner` or `orderValue` More values may be added in future.
        displayText:
          type: string
          nullable: true
          description: Describes the restriction.
        orderValue:
          type: object
          nullable: true
          description: Defines the order value criteria for the restriction.
          required:
            - minimum
          properties:
            minimum:
              type: integer
              nullable: false
              format: int32
              description: Defines the minimum order values necessary to purchase the membership in minor currency units.
    CheckoutCheckoutNotesV2:
      type: object
      description: Instructions about the order that the customer wants to submit.
      nullable: true
      properties:
        order:
          required:
            - note
          type: object
          description: Instructions about the order that the customer wants to submit.
          nullable: true
          properties:
            note:
              maxLength: 200
              type: string
              description: The contents of the note.
              minLength: 0
              nullable: false
        kitchen:
          required:
            - note
          type: object
          description: Instructions for the kitchen staff about the order that the customer wants to submit.
          nullable: true
          properties:
            note:
              maxLength: 200
              type: string
              description: The contents of the note.
              minLength: 0
              nullable: false
        courier:
          required:
            - note
          type: object
          description: Instructions for the courier about the order that the customer wants to submit.
          nullable: true
          properties:
            note:
              maxLength: 200
              type: string
              description: The contents of the note.
              minLength: 0
              nullable: false
    CheckoutCheckoutPaymentCheckoutUpdatePayment:
      type: object
      description: Instructions about the order that the customer wants to submit.
      nullable: true
      properties:
        methods:
          type: array
          minItems: 0
          maxItems: 4
          description: Any selected payment methods.
          items:
            description: Detail of payment by payment method.
            type: object
            nullable: false
            properties:
              type:
                description: |
                  The type of the payment method.

                  This corresponds to the `availablePaymentTypes`->`paymentType` in the OK response of the [Payment Options](#operation/paymentTenantPartnersPartnerIdOptionsGet) endpoint.
                type: string
                minLength: 1
                maxLength: 100
                nullable: false
              additionalData:
                description: Additional data that is required for a particular payment method.
                oneOf:
                  - $ref: '#/components/schemas/PaymentsTypesGeneric'
                  - $ref: '#/components/schemas/PaymentsTypesVoucher'
                  - $ref: '#/components/schemas/PaymentsTypesVouchers'
                  - $ref: '#/components/schemas/PaymentsTypesJetPay'
                  - $ref: '#/components/schemas/PaymentsTypesCash'
                  - $ref: '#/components/schemas/PaymentsTypesJetCredit'
            required:
              - type
            additionalProperties: false
    CheckoutCheckoutPaymentOptionsBasePaymentTypeProperties:
      type: object
      required:
        - paymentType
        - displayName
      properties:
        paymentType:
          description: |
            Identifier of the payment type. This should be sent to the API upon payment. Clients MUST assume that these values could be added or removed at any time and not to build any behaviour based
            on these values. The exception to this rule is where `behaviour` is set to `native` or `nativeOrExternal`. In these cases, the client may check this value and provide special 
            behaviour.

            Values for `native` payment types are: 
            - paypal_braintree
            - applepay
            - googlepay
          type: string
        displayName:
          type: string
          description: Display text that the user interface should use to identify the payment type. This will be localised in the requested language if necessary.
        iconUrl:
          type: string
          nullable: true
          description: URL for payment option icon. If not provided (e.g. for payment types under construction), clients should fall back to a generic placeholder icon.
          format: uri
        behaviour:
          type: string
          enum:
            - native
            - external
            - nativeOrExternal
          description: |
            Indicates whether the client may provide this option natively on the device (e.g. for wallet payments). 

            `native` indicates that the client must provide an implementation. The client MUST ignore payment types that it doesn't support.
            `external` indicates that behaviour is handled by the API. The client MUST not provide its own implementation.
            `nativeOrExternal` indicates that behaviour is handled by the API but could be enhanced by a client's own implementation.
        additionalData:
          type: object
          nullable: true
          description: Additional data related to this payment type
          properties:
            clientKey:
              type: string
              description: Used for PayPal Braintree payments
            merchantAccountId:
              type: string
              description: Used for PayPal Braintree payments
            sdkConfiguration:
              type: object
              nullable: true
              description: Used for ApplePay and GooglePay on Web
              oneOf:
                - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsSdkConfigurationApplepay'
                - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsSdkConfigurationGooglepay'
        excludedPaymentCapabilities:
          type: array
          nullable: true
          description: Determines if this payment type must be excluded from paying for certain items. If these items are present, this payment type should be ignored.
          items:
            type: string
            enum:
              - driverTip
              - membership
              - stampcard
              - membershipSubscription
        messages:
          type: array
          description: An array of messages for the customer associated with this payment type, localized according to the language specified in the request header
          items:
            type: object
            nullable: true
            properties:
              displayMode:
                type: string
                enum:
                  - info
                  - warning
                description: Indicates how to display the message
              displayText:
                type: string
                description: Display text that should be shown to the customer
            required:
              - displayMode
              - displayText
    CheckoutCheckoutPaymentOptionsPaymentType:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsBasePaymentTypeProperties'
        - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsPaymentTypeProperties'
    CheckoutCheckoutPaymentOptionsPaymentTypeProperties:
      type: object
      required:
        - paymentType
        - displayName
        - status
        - isOnlinePayment
        - behaviour
      properties:
        status:
          type: string
          enum:
            - available
            - unavailable
          description: Indicates if the method is temporarily unavailable. If unavailable, clients should continue to show the payment type but disable selection. This should be accompanied by a message in `messages`.
        isOnlinePayment:
          type: boolean
          description: Indicates if the method is online or offline (e.g. a cash payment)
        hasOneClickPaymentDetails:
          description: |
            Indicates whether customer already has saved payment data. User interfaces should show a button to delete the data.

            Note: This property is being deprecated an will be replaced with an entry in `savedPaymentTypes` in future.
          type: boolean
        supportsOneClickPayment:
          description: Indicates whether payment option supports saving payment data for future payments. User interfaces should present a checkbox to save payment details, and this can default to checked.
          type: boolean
        balance:
          type: integer
          nullable: true
          description: If this payment type has a limited balance, the overall balance, regardless of what’s in the cart (in minor currency units) (e.g. 750 is equal to 7.5 EUR)
        availableBalance:
          type: integer
          nullable: true
          description: If this payment type has a limited balance, the balance that is available for the supplied basket (in minor currency units) (e.g. 750 is equal to 7.5 EUR)
        currency:
          type: string
          description: ISO 4217 currency code of balance
        choice:
          type: object
          nullable: true
          description: When the payment type requires a sub-selection, a list of items that a customer must choose from
          properties:
            type:
              type: string
              description: The type of choices being presented, e.g. 'bank'.
            displayName:
              type: string
              description: Display text that the user interface may use to identify the set of choices, e.g. "Choose your bank". Clients may use their own text, but should fall back to this if unavailable.
            items:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: Identifier for the choice. This must be supplied as `choiceId` when making a payment.
                  displayName:
                    type: string
                    description: Display text that the user interface should use to identify the choice.
                  iconUrl:
                    type: string
                    nullable: true
                    description: URL for an icon associated with the choice. If not provided, the user interface may fall back to a generic placeholder icon.
                    format: uri
                required:
                  - id
                  - displayName
        isNew:
          type: boolean
          description: Indicates that the payment method has been recently introduced and can be highlighted as such.
        balances:
          type: array
          nullable: true
          description: A list of all balances available to the user. Each item is an object that provides detailed information about a specific balance, such as its type and value.
          items:
            type: object
            required:
              - displayName
              - choiceId
              - type
              - balance
              - availableBalance
              - expireAt
              - iconUrl
              - status
            properties:
              displayName:
                type: string
                nullable: false
                description: Display text that the user interface should use to identify the prepayment type.
              choiceId:
                type: string
                nullable: false
                description: A unique identifier for this specific balance instance. It is used to distinguish this particular balance from all other balances a user may hold.
              type:
                type: string
                nullable: false
                description: Defines the type of the balance.
              balance:
                type: integer
                nullable: false
                description: The total value of this balance.
              availableBalance:
                type: integer
                nullable: false
                description: The portion of the total balance that is currently available for use.
              totalMonthlyAmount:
                type: integer
                nullable: true
                description: The total amount that can be used for this balance within a month period.
              dailyMaxLimit:
                type: integer
                nullable: true
                description: The maximum amount that can be used for this balance within a day.
              balanceSummary:
                type: string
                nullable: true
                description: Summary of how much balance the user has left out of the available balance `{balance} / {availableBalance}`
              expirationSummary:
                type: string
                nullable: true
                description: Message indicating when the balance expires.
              balanceDetailsMessage:
                type: string
                nullable: true
                description: Message to the user about the status of their balance `You have {totalMonthlyAmount} monthly balance and {dailyMaxLimit} daily limit.`
              expireAt:
                type: string
                nullable: false
                description: The specific date and time at which the balance is no longer valid.
                format: date-time
              iconUrl:
                type: string
                nullable: false
                description: A URL that points to an image file for the balance icon.
                format: uri
              status:
                type: string
                nullable: false
                enum:
                  - available
                  - unavailable
                description: Status of the balance, available should be see it and selected, unavailable means users will be able to see but can't select because it is disabled in this status.
              excludedPaymentCapabilities:
                type: array
                nullable: true
                description: Determines if this balance must be excluded from paying for certain items. If these items are present, this balance should be ignored.
                items:
                  type: string
                  enum:
                    - driverTip
                    - membership
                    - membershipSubscription
              messages:
                type: array
                nullable: true
                description: An array of messages for the customer associated with this balance.
                items:
                  type: object
                  nullable: false
                  properties:
                    displayMode:
                      type: string
                      enum:
                        - info
                        - warning
                      description: Indicates how to display the message.
                    displayText:
                      type: string
                      description: Display text that should be shown to the customer.
    CheckoutCheckoutPaymentOptionsPreferredAvailablePaymentType:
      allOf:
        - $ref: '#/components/schemas/Paymentoptionsv2PreferredType'
        - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsBasePaymentTypeProperties'
        - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsPaymentType'
      type: object
    CheckoutCheckoutPaymentOptionsPreferredPaymentType:
      type: object
      properties:
        preferredType:
          enum:
            - saved
            - new
      discriminator:
        propertyName: preferredType
        mapping:
          new: '#/components/schemas/CheckoutCheckoutPaymentOptionsPreferredAvailablePaymentType'
          saved: '#/components/schemas/CheckoutCheckoutPaymentOptionsPreferredSavedPaymentType'
        oneOf:
          - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsPreferredAvailablePaymentType'
          - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsPreferredSavedPaymentType'
      required:
        - preferredType
    CheckoutCheckoutPaymentOptionsPreferredSavedPaymentType:
      allOf:
        - $ref: '#/components/schemas/Paymentoptionsv2PreferredType'
        - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsBasePaymentTypeProperties'
        - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsSavedPaymentType'
      type: object
    CheckoutCheckoutPaymentOptionsSavedPaymentType:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsBasePaymentTypeProperties'
        - $ref: '#/components/schemas/Paymentoptionsv2SavedPaymentTypeProperties'
    CheckoutCheckoutPaymentOptionsSdkConfigurationAdyenConfig:
      type: object
      description: Configuration specific to the `Adyen` components.
      properties:
        clientKey:
          type: string
          description: The public client key required for initializing the `Adyen` SDK components on the client-side.
        environment:
          type: string
          description: The `Adyen` environment to connect to (e.g., 'test', 'live') for the `Adyen` components.
    CheckoutCheckoutPaymentOptionsSdkConfigurationApplepay:
      type: object
      nullable: true
      description: ApplePay SDK settings
      properties:
        adyenConfig:
          $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsSdkConfigurationAdyenConfig'
        buttonConfig:
          type: object
          description: Button Config
          properties:
            supportedNetworks:
              type: array
              description: A list of supported card networks (e.g., `visa`, `mastercard`,`maestro`)
              items:
                type: string
                description: Supported network  (e.g., `visa`, `mastercard`,`maestro`)
    CheckoutCheckoutPaymentOptionsSdkConfigurationGooglepay:
      type: object
      nullable: true
      description: Root configuration object for initializing and customizing various components available within the SDK.
      properties:
        adyenConfig:
          $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsSdkConfigurationAdyenConfig'
        buttonConfig:
          type: object
          description: Configuration specifically for an `Adyen` payment button component.
          properties:
            configuration:
              type: object
              description: Core configuration details for the `Adyen` payment button's interaction.
              properties:
                merchantId:
                  type: string
                  description: The unique identifier for the merchant using the `Adyen` button component.
                gatewayMerchantId:
                  type: string
                  description: The merchant identifier specific to the `Adyen` gateway for the button component.
            allowedAuthMethods:
              type: array
              description: A list of allowed authentication methods for the `Adyen` button component (e.g., `PAN_ONLY`, `CRYPTOGRAM_3DS`).
              items:
                type: string
                description: Allowed Auth Method (e.g., `PAN_ONLY`, `CRYPTOGRAM_3DS`)
            allowedCardNetworks:
              type: array
              description: A list of allowed card networks (e.g., `VISA`, `MASTERCARD`, `AMEX`) that can be used with the `Adyen` button component
              items:
                type: string
                description: Allowed Card Network (e.g., `VISA`, `MASTERCARD`, `AMEX`)
    CheckoutCheckoutPaymentPayment:
      type: object
      description: Instructions about the order that the customer wants to submit.
      required:
        - options
        - methods
        - unallocatedBalance
        - total
      nullable: false
      properties:
        options:
          description: The payment options that are available for the customer to use when paying.
          type: object
          nullable: false
          properties:
            totalAvailableJetBalance:
              type: integer
              nullable: false
              description: The sum of all available credit balances.
            availablePaymentTypes:
              type: array
              description: List of available payment types. This list should be presented in the order provided.
              items:
                $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsPaymentType'
            savedPaymentTypes:
              type: array
              description: List of payment types that the customer has saved for lower friction repeat payments. This list should be presented in the order provided.
              items:
                $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsSavedPaymentType'
            preferredPaymentTypes:
              type: array
              description: |
                List of payment types that are recommended to the customer for quick selection. The first item in the array should be pre-selected as the default.
                This array can contain a mix of types from the `availablePaymentTypes` and `savedPaymentTypes` arrays, depending on the value of `preferredType`. 
              items:
                $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsPreferredPaymentType'
        methods:
          description: |
            Collection of payment methods the customer will use to pay for checkout.

            Note that this may differ from submitted methods as any methods that are not required, are invalid or are unavailable will have been removed.
          type: array
          minItems: 0
          maxItems: 4
          nullable: false
          items:
            $ref: '#/components/schemas/PaymentsPaymentType'
        total:
          description: |
            Total price the customer needs to pay as minor currency

            The total price will include any payment fees applied to payment methods.
          type: number
          format: integer
          minimum: 0
          nullable: false
    CheckoutCheckoutRequest:
      required:
        - PaymentOptionType
      description: Details needed to make a payment.
      properties:
        Action:
          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.
          $ref: '#/components/schemas/CheckoutCheckoutAction'
          type: object
        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
        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
      type: object
    CheckoutCheckoutResponse:
      description: The result of a payment attempt.
      properties:
        Timestamp:
          description: The UTC timestamp of the date and time that the response was generated at.
          format: date-time
          x-api-version-from: 2019-04
          type: string
        Tenant:
          description: The tenant associated with the consumer.
          type: string
        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
      type: object
    CheckoutCheckoutResponseV2:
      required:
        - restaurant
        - purchase
        - serviceType
        - customer
        - fulfilment
        - isFulfillable
        - issues
        - currency
      description: Properties apply to all supported country codes, except where specified.
      properties:
        serviceType:
          nullable: false
          description: How the order will be dispatched.
          enum:
            - delivery
            - collection
            - dinein
          type: string
        restaurant:
          nullable: false
          $ref: '#/components/schemas/CheckoutCheckoutGetRestaurant'
        purchase:
          nullable: false
          $ref: '#/components/schemas/CheckoutPurchasePurchase'
        customer:
          nullable: false
          $ref: '#/components/schemas/CheckoutCheckoutGetCustomer'
        fulfilment:
          nullable: false
          $ref: '#/components/schemas/CheckoutCheckoutGetFulfilment'
        notes:
          nullable: true
          $ref: '#/components/schemas/CheckoutCheckoutNotesV2'
        voucher:
          nullable: true
          $ref: '#/components/schemas/CheckoutCheckoutVoucherResponse'
        deliveryOptions:
          nullable: true
          $ref: '#/components/schemas/CheckoutCheckoutDeliveryOptionsResponse'
        deliveryModelOptions:
          nullable: true
          $ref: '#/components/schemas/CheckoutDeliveryModelOptions'
        additionalProducts:
          nullable: true
          $ref: '#/components/schemas/CheckoutCheckoutAdditionalProductsResponse'
        tipping:
          nullable: true
          $ref: '#/components/schemas/CheckoutCheckoutGetTipping'
        currency:
          nullable: false
          description: The currency code in ISO-4217 format e.g. GBP.
          type: string
        payment:
          nullable: true
          $ref: '#/components/schemas/CheckoutCheckoutPaymentPayment'
        isFulfillable:
          nullable: false
          description: Whether the proposed order can be placed.
          type: boolean
        issues:
          type: array
          minItems: 0
          maxItems: 50
          items:
            nullable: false
            description: Represents a single issue associated with the proposed order.
            $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
          description: One or more issues associated the proposed order, that may impact whether it can be placed.
          nullable: false
        topUp:
          $ref: '#/components/schemas/CheckoutCheckoutTopUp'
      type: object
    CheckoutCheckoutTopUp:
      nullable: true
      description: Expiration details of the top-up voucher.
      type: object
      properties:
        expiresAt:
          nullable: false
          description: The expiration date and time for the top-up voucher in ISO 8601 format.
          type: string
          format: date-time
          example: '2026-06-06T12:00:00Z'
    CheckoutCheckoutUpdateCustomer:
      type: object
      nullable: true
      description: Details of the customer making the purchase.
      properties:
        lastName:
          maxLength: 100
          type: string
          description: |
            Customer's last name (Optional). Also known as Family Name.

            Please note, for the following countries, the maximum length is 30 characters:
              - Austria (AT)
              - Belgium (BE)
              - Bulgaria (BG)
              - Denmark (DK)
              - Germany (DE)
              - Luxembourg (LU)
              - Netherlands (NL)
              - Poland (PL)
              - Slovakia (SK)
              - Switzerland (CH)
          minLength: 0
          nullable: true
        phoneNumber:
          maxLength: 16
          type: string
          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.
          minLength: 3
          nullable: true
        dateOfBirth:
          nullable: true
          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.
          type: string
        firstName:
          maxLength: 100
          type: string
          description: |
            Customer's first name. Also known as Given Name(s).

            Please note, for the following countries, the maximum length is 30 characters:
              - Austria (AT)
              - Belgium (BE)
              - Bulgaria (BG)
              - Denmark (DK)
              - Germany (DE)
              - Luxembourg (LU)
              - Netherlands (NL)
              - Poland (PL)
              - Slovakia (SK)
              - Switzerland (CH)
          minLength: 1
          nullable: true
        taxId:
          type: string
          description: Customer's tax ID reference.
          minLength: 0
          maxLength: 50
          nullable: true
    CheckoutCheckoutUpdateFulfilment:
      type: object
      nullable: true
      description: How and when the items will be received by the customer.
      properties:
        time:
          nullable: true
          description: Time the customer wants to receive the order i.e. when order is fulfilled.
          properties:
            scheduled:
              required:
                - from
                - to
              type: object
              description: |
                Scheduled time the customer wants the order to be fulfilled.

                The scheduled time will be ignored if ASAP is selected.
              properties:
                from:
                  nullable: false
                  description: Earliest time the customer wants the order to be fulfilled represented in ISO 8601 UTC (Zulu Time).
                  type: string
                to:
                  nullable: false
                  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.
                  type: string
              nullable: true
            asap:
              nullable: false
              description: |
                If the order should be fulfilled as soon as possible (ASAP).

                ASAP may not be fulfillable.

                Default is false.
              type: boolean
          type: object
        location:
          nullable: true
          description: |
            The destination the customer wants to receive the order.

            This only applies to purchases with a delivery service type.
          properties:
            geolocation:
              required:
                - latitude
                - longitude
              type: object
              description: The coordinates of a geographical location where the customer wants to receive the order.
              properties:
                longitude:
                  nullable: false
                  description: The longitude of the geographical location.
                  format: decimal
                  type: number
                latitude:
                  nullable: false
                  description: The latitude of the geographical location.
                  format: decimal
                  type: number
              nullable: true
            address:
              nullable: true
              description: The postal address where the customer wants to receive the order.
              properties:
                locality:
                  maxLength: 50
                  type: string
                  description: |
                    The locality of this address.

                    Also known as Town or City.

                    Please note, for the following countries, the maximum length is 64 characters:
                      - Austria (AT)
                      - Belgium (BE)
                      - Bulgaria (BG)
                      - Denmark (DK)
                      - Germany (DE)
                      - Luxembourg (LU)
                      - Netherlands (NL)
                      - Poland (PL)
                      - Slovakia (SK)
                      - Switzerland (CH)
                  minLength: 1
                  nullable: true
                lines:
                  maxItems: 4
                  type: array
                  minItems: 1
                  items:
                    maxLength: 100
                    type: string
                    description: Represents part of a street address.
                    minLength: 1
                    nullable: false
                  description: |
                    One or more lines representing the street address. 

                    Please note:
                      * For Australia (AU) and New Zealand (NZ), the second item will represent the Level/Unit Number (optional).
                      * For the following countries, the maximum number of items is 1 and the maximum length of an item is 64 characters:
                        - Austria (AT)
                        - Belgium (BE)
                        - Bulgaria (BG)
                        - Denmark (DK)
                        - Germany (DE)
                        - Luxembourg (LU)
                        - Netherlands (NL)
                        - Poland (PL)
                        - Slovakia (SK)
                        - Switzerland (CH)
                  nullable: true
                postalCode:
                  maxLength: 50
                  type: string
                  description: |
                    Postal code of this address.

                    Please note:
                    * This is an optional field in Bulgaria (BG) only.
                    * For the following countries, the maximum length is 8 characters:
                      - Austria (AT)
                      - Belgium (BE)
                      - Bulgaria (BG)
                      - Denmark (DK)
                      - Germany (DE)
                      - Luxembourg (LU)
                      - Netherlands (NL)
                      - Poland (PL)
                      - Slovakia (SK)
                      - Switzerland (CH)
                  minLength: 1
                  nullable: true
                administrativeArea:
                  maxLength: 50
                  type: string
                  description: |
                    Geographical region of this address. 

                    Also known as County or State.

                    Required in Australia (AU) only for an order to be fulfilled.
                  minLength: 1
                  nullable: true
                additionalInformation:
                  type: object
                  description: |
                    Additional information about the address.

                    This is only supported in the following countries:
                      - Austria (AT)
                      - Belgium (BE)
                      - Bulgaria (BG)
                      - Denmark (DK)
                      - Germany (DE)
                      - Luxembourg (LU)
                      - Netherlands (NL)
                      - Poland (PL)
                      - Slovakia (SK)
                      - Switzerland (CH)
                  nullable: true
                  additionalProperties: false
                  properties:
                    entrance:
                      type: string
                      description: Entrance/access point to the building.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    floor:
                      type: string
                      description: Floor/level of the building.
                      minLength: 1
                      maxLength: 100
                      nullable: true
                    door:
                      type: string
                      description: Door to the building.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    companyName:
                      type: string
                      description: Name of the company at the address.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    intercom:
                      type: string
                      description: Number to enter into the intercom at the address.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    apartmentName:
                      type: string
                      description: Name of the apartment at the address.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    flatNumber:
                      type: string
                      description: Number of the flat at the address.
                      minLength: 1
                      maxLength: 64
                      nullable: true
                    accessCode:
                      type: string
                      description: Access code for the building.
                      minLength: 1
                      maxLength: 64
                      nullable: true
              type: object
          type: object
        table:
          required:
            - identifier
          type: object
          description: |
            The table where the customer wants to receive the order.

            This only applies to purchases with a `dinein` service type.
          properties:
            identifier:
              type: string
              description: The identifier of the table where the customer wants to receive the order.
              nullable: false
              minLength: 1
              maxLength: 12
          nullable: true
    CheckoutCheckoutUpdateMembership:
      type: object
      description: Information about the membership to purchase.
      additionalProperties: false
      properties:
        id:
          type: string
          description: The Id of the membership.
          nullable: false
          minLength: 1
          maxLength: 50
        termsAndConditionsConsentProvided:
          type: boolean
          nullable: true
          description: Indicates whether the terms and conditions of the membership have been consented to.
      required:
        - id
    CheckoutCheckoutUpdateRequestV2:
      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:
          $ref: '#/components/schemas/CheckoutCheckoutUpdateCustomer'
        fulfilment:
          $ref: '#/components/schemas/CheckoutCheckoutUpdateFulfilment'
        notes:
          $ref: '#/components/schemas/CheckoutCheckoutNotesV2'
        voucher:
          $ref: '#/components/schemas/CheckoutCheckoutVoucherV2'
          nullable: true
        deliveryModelOptions:
          $ref: '#/components/schemas/CheckoutCheckoutDeliveryModelOptions'
          nullable: true
        deliveryOptions:
          type: object
          description: |
            Information about the voucher to apply.
          additionalProperties: false
          nullable: true
          properties:
            voucher:
              $ref: '#/components/schemas/CheckoutCheckoutVoucherV2'
              nullable: true
        additionalProducts:
          type: object
          description: Information about the additional product to apply.
          additionalProperties: false
          nullable: true
          properties:
            memberships:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/CheckoutCheckoutUpdateMembership'
                nullable: false
        tipping:
          $ref: '#/components/schemas/CheckoutCheckoutUpdateTipping'
        payment:
          $ref: '#/components/schemas/CheckoutCheckoutPaymentCheckoutUpdatePayment'
      type: object
    CheckoutCheckoutUpdateTipping:
      type: object
      description: |
        Details of any tips that should be applied.

        Tips should only be applied to checkouts if the Checkout Options endpoint indicates that tipping is enabled.

        The applied tip should be a value that the Checkout Options endpoint indicates is supported on this Checkout.
      additionalProperties: false
      nullable: true
      properties:
        courier:
          type: object
          description: Details of any courier tip that should be applied.
          additionalProperties: false
          nullable: true
          properties:
            fixedAmount:
              type: object
              nullable: true
              description: Set to indicate that a fixed amount tip should be applied.
              required:
                - amount
              properties:
                amount:
                  type: number
                  format: integer
                  nullable: false
                  minimum: 1
                  description: The tip amount that should be applied in minor currency units.
            customAmount:
              type: object
              nullable: true
              description: Set to indicate that a custom amount tip should be applied.
              required:
                - amount
              properties:
                amount:
                  type: number
                  format: integer
                  nullable: false
                  minimum: 1
                  description: The tip amount that should be applied in minor currency units.
    CheckoutCheckoutVoucherResponse:
      type: object
      description: Details of the voucher applied.
      additionalProperties: false
      nullable: true
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 50
          description: Code for the voucher to apply.
          nullable: false
        status:
          description: The current status of the voucher to apply.
          $ref: '#/components/schemas/CheckoutVouchersVoucherStatus'
    CheckoutCheckoutVoucherV2:
      type: object
      description: |
        Information about the voucher to apply.
      additionalProperties: false
      properties:
        code:
          type: string
          minLength: 1
          maxLength: 50
          description: Code for the voucher to apply.
          nullable: false
      required:
        - code
    CheckoutDeliveryModelOptions:
      type: object
      description: Contains the delivery quotes
      nullable: true
      required:
        - selectedOption
        - hasChanged
        - options
      properties:
        selectedOption:
          type: string
          description: The identifier of the delivery model option selected by the customer.
          nullable: false
          enum:
            - courier
            - drone
            - robot
        hasChanged:
          nullable: false
          type: boolean
          description: Indicates whether the delivery model option has changed during this request.
        associatedPartner:
          type: object
          nullable: true
          description: A separate partner associated with this partner, if any.
          required:
            - id
            - seoName
          properties:
            id:
              type: string
              description: Unique identifier for the associated partner.
              minLength: 1
              maxLength: 100
              nullable: false
            seoName:
              type: string
              description: Public name of the associated partner used for Search Engine Optimization (SEO).
              minLength: 1
              maxLength: 100
              nullable: false
        options:
          type: array
          nullable: false
          description: The list of available delivery models for the checkout.
          minItems: 1
          items:
            type: object
            required:
              - id
              - available
            properties:
              id:
                type: string
                description: The identifier of the delivery model.
                nullable: false
                enum:
                  - courier
                  - drone
                  - robot
              quoteId:
                type: string
                description: The identifier of the delivery quote.
                format: uuid
              deliveryCharge:
                type: object
                nullable: true
                description: The delivery fee for this delivery model - null if fee is not calculated.
                properties:
                  fee:
                    format: decimal
                    type: number
                    nullable: false
                    minimum: 0
                    description: The amount of the delivery fee
              available:
                type: boolean
                description: Whether the delivery model is currently available
                nullable: false
              unavailabilityReason:
                type: string
                description: Enum explaining to the client why the delivery model is not available, if applicable.
                nullable: true
                enum:
                  - none
                  - basketIneligible
    CheckoutErrorsAvailableFulfilmentTimes409Error:
      description: An HTTP 409 error response
      properties:
        fault:
          required:
            - faultId
            - traceId
            - errors
          additionalProperties: false
          type: object
          description: An array of values that helps identify this response back to logs, so we can easily find faults.
          properties:
            traceId:
              nullable: false
              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
            faultId:
              nullable: false
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              type: string
            errors:
              nullable: false
              items:
                required:
                  - description
                  - errorCode
                additionalProperties: false
                type: object
                description: Details about the error that may assist you in resolving the issue.
                properties:
                  description:
                    nullable: false
                    description: Specific details about the error that may assist you in resolving the issue.
                    type: string
                  errorCode:
                    nullable: false
                    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
                    type: string
                nullable: false
              description: List of errors that may assist you in resolving the issues.
              type: array
          nullable: true
      type: object
    CheckoutErrorsCheckout404Error:
      description: An HTTP 404 error response
      properties:
        fault:
          required:
            - faultId
            - traceId
            - errors
          additionalProperties: false
          type: object
          description: An array of values that helps identify this response back to logs, so we can easily find faults.
          properties:
            traceId:
              nullable: false
              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
            faultId:
              nullable: false
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              type: string
            errors:
              nullable: false
              items:
                required:
                  - description
                  - errorCode
                additionalProperties: false
                type: object
                description: Details about the error that may assist you in resolving the issue.
                properties:
                  description:
                    nullable: false
                    description: Specific details about the error that may assist you in resolving the issue.
                    type: string
                  errorCode:
                    nullable: false
                    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
                    type: string
                nullable: false
              description: List of errors that may assist you in resolving the issues.
              type: array
          nullable: true
      type: object
    CheckoutErrorsCheckout409Error:
      description: An HTTP 409 error response
      properties:
        fault:
          required:
            - faultId
            - traceId
            - errors
          additionalProperties: false
          type: object
          description: An array of values that helps identify this response back to logs, so we can easily find faults .
          properties:
            traceId:
              nullable: false
              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
            faultId:
              nullable: false
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              type: string
            errors:
              nullable: false
              items:
                required:
                  - description
                  - errorCode
                additionalProperties: false
                type: object
                description: Details about the error that may assist you in resolving the issue.
                properties:
                  description:
                    nullable: false
                    description: Specific details about the error that may assist you in resolving the issue.
                    type: string
                  errorCode:
                    nullable: false
                    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
                    type: string
                nullable: false
              description: List of errors that may assist you in resolving the issues.
              type: array
          nullable: true
      type: object
    CheckoutErrorsCheckoutDefaultError:
      description: A default HTTP error response
      properties:
        fault:
          required:
            - faultId
            - traceId
            - errors
          additionalProperties: false
          type: object
          description: An array of values that helps identify this response back to logs, so we can easily find faults.
          properties:
            traceId:
              nullable: false
              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
            faultId:
              nullable: false
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              type: string
            errors:
              nullable: false
              items:
                required:
                  - description
                additionalProperties: false
                type: object
                properties:
                  description:
                    nullable: false
                    description: Specific details about the error that may assist you in resolving the issue.
                    type: string
                nullable: false
              description: List of errors that may assist you in resolving the issues.
              type: array
          nullable: true
      type: object
    CheckoutErrorsCheckoutGet400Error:
      description: An HTTP 400 error response
      properties:
        fault:
          required:
            - faultId
            - traceId
            - errors
          additionalProperties: false
          type: object
          description: An array of values that helps identify this response back to logs, so we can easily find faults.
          properties:
            traceId:
              nullable: false
              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
            faultId:
              nullable: false
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              type: string
            errors:
              nullable: false
              items:
                required:
                  - description
                  - errorCode
                additionalProperties: false
                type: object
                description: Details about the error that may assist you in resolving the issue.
                properties:
                  description:
                    nullable: false
                    description: Specific details about the error that may assist you in resolving the issue.
                    type: string
                  errorCode:
                    nullable: false
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error.
                    enum:
                      - USER_AGENT_INVALID
                      - TENANT_INVALID
                      - CHECKOUT_ID_INVALID
                    type: string
                nullable: false
              description: List of errors that may assist you in resolving the issues.
              type: array
          nullable: true
      type: object
    CheckoutErrorsCheckoutUpdate400ErrorV2:
      description: An HTTP 400 error response
      properties:
        fault:
          required:
            - faultId
            - traceId
            - errors
          additionalProperties: false
          type: object
          description: An array of values that helps identify this response back to logs, so we can easily find faults.
          properties:
            traceId:
              nullable: false
              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
            faultId:
              nullable: false
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              type: string
            errors:
              nullable: false
              items:
                required:
                  - description
                  - errorCode
                additionalProperties: false
                type: object
                description: Details about the error that may assist you in resolving the issue.
                properties:
                  description:
                    nullable: false
                    description: Specific details about the error that may assist you in resolving the issue.
                    type: string
                  errorCode:
                    nullable: false
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error.
                    enum:
                      - USER_AGENT_INVALID
                      - 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
                      - ADDRESS_ENTRANCE_INVALID
                      - ADDRESS_FLOOR_INVALID
                      - ADDRESS_DOOR_INVALID
                      - ADDRESS_COMPANY_NAME_INVALID
                      - ADDRESS_INTERCOM_INVALID
                      - ADDRESS_APARTMENT_NAME_INVALID
                      - ADDRESS_FLAT_NUMBER_INVALID
                      - ADDRESS_ACCESS_CODE_INVALID
                      - POSTAL_CODE_INVALID
                      - GEOLOCATION_INVALID
                      - DELIVERY_NOTE_INVALID
                      - TABLE_IDENTIFIER_INVALID
                      - ORDER_NOTE_INVALID
                      - KTICHEN_NOTE_INVALID
                      - COURIER_NOTE_INVALID
                      - VOUCHER_CODE_INVALID
                      - MEMBERSHIPS_INVALID
                      - MEMBERSHIP_ID_INVALID
                      - PAYMENT_METHOD_INVALID
                    type: string
                nullable: false
              description: List of errors that may assist you in resolving the issues.
              type: array
          nullable: true
      type: object
    CheckoutGetAvailableFulfilmentTimesResponse:
      required:
        - times
        - asapAvailable
        - issues
      properties:
        asapAvailable:
          nullable: false
          description: If the option to fulfil an order as soon as possible is available.
          type: boolean
        times:
          maxItems: 576
          type: array
          minItems: 0
          items:
            required:
              - from
              - to
            type: object
            description: A time band for when an order can be fulfilled.
            properties:
              from:
                nullable: false
                description: Start time represented in ISO 8601 UTC (Zulu Time).
                format: date-time
                type: string
              to:
                nullable: false
                description: |
                  End time represented in ISO 8601 UTC (Zulu Time).

                  This time can be equal to the from time.
                format: date-time
                type: string
            nullable: false
          description: Collection of time bands for when an order can be fulfilled.
          nullable: false
        issues:
          maxItems: 3
          type: array
          minItems: 0
          items:
            nullable: false
            description: Represents a single issue associated with the available fulfilment times for a proposed order.
            $ref: '#/components/schemas/CheckoutAvailableFulfilmentTimesIssue'
          description: One or more issues associated with the available fulfilment times for a proposed order.
          nullable: false
      type: object
    CheckoutIssuesCheckoutIssueAdditionalItemsRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: The collection of items are not orderable in their current state. Items need to be added.
    CheckoutIssuesCheckoutIssueAddressLinesRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Indicates that the fulfilment address lines is required to fulfil an order.
    CheckoutIssuesCheckoutIssueAdministrativeAreaRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      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.
    CheckoutIssuesCheckoutIssueAgeVerificationFailed:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      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.
    CheckoutIssuesCheckoutIssueCourierNoteNotAccepted:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: A courier note has been submitted, but this restaurant does not accept courier notes. The note should be removed.
    CheckoutIssuesCheckoutIssueDateOfBirthRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      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.
    CheckoutIssuesCheckoutIssueFirstNameRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Indicates that the customer's first name is required to fulfil an order.
    CheckoutIssuesCheckoutIssueFulfilmentTimeRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Indicates that a fulfilment time is required to fulfil an order.
    CheckoutIssuesCheckoutIssueFulfilmentTimeUnavailable:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: The selected fulfilment time is no longer available. A new fulfilment time may be available for selection.
    CheckoutIssuesCheckoutIssueGeolocationRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: |
            Indicates that the fulfilment geolocation is required to fulfil an order.

            Occurs in the following countries only:
              - Austria (AT)
              - Belgium (BE)
              - Bulgaria (BG)
              - Denmark (DK)
              - Germany (DE)
              - Luxembourg (LU)
              - Netherlands (NL)
              - Poland (PL)
              - Slovakia (SK)
              - Switzerland (CH)
    CheckoutIssuesCheckoutIssueItemsUnorderable:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
        - $ref: '#/components/schemas/CheckoutAvailableFulfilmentTimesIssue'
      additionalProperties: false
      type: object
      properties:
        code:
          description: The collection of items are not orderable.
    CheckoutIssuesCheckoutIssueKitchenNoteNotAccepted:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: A kitchen note has been submitted, but this restaurant does not accept kitchen notes. The note should be removed.
    CheckoutIssuesCheckoutIssueLocalityRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Indicates that the fulfilment address locality is required to fulfil an order.
    CheckoutIssuesCheckoutIssueLocationUndeliverable:
      type: object
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
        - type: object
          properties:
            code:
              type: string
              enum:
                - LOCATION_UNDELIVERABLE
              description: The restaurant is unable to deliver to this location.
            reason:
              type: string
              description: Why the restaurant was unable to deliver.
              nullable: true
              enum:
                - throttled
    CheckoutIssuesCheckoutIssueMinimumOrderValueNotMet:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
        - required:
            - currency
            - minimumOrderValue
            - additionalSpendRequired
      additionalProperties: false
      type: object
      properties:
        minimumOrderValue:
          nullable: false
          description: The minimum order value required to complete an order. This is in the smallest unit of local currency e.g. pence.
          format: integer
          type: number
        currency:
          nullable: false
          description: The currency in which the value amounts are returned represented in ISO 4217 format.
          type: string
        additionalSpendRequired:
          nullable: false
          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
          type: number
        code:
          description: The checkout does not meet the minimum order value.
    CheckoutIssuesCheckoutIssueOrderNoteNotAccepted:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: An order note has been submitted, but this restaurant does not accept order notes. The note should be removed.
    CheckoutIssuesCheckoutIssuePaymentMethodRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Indicates that a payment method must be selected.
    CheckoutIssuesCheckoutIssuePhoneNumberRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Indicates that the customer's phone number is required to fulfil an order.
    CheckoutIssuesCheckoutIssuePostalCodeRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Indicates that the fulfilment postal code is required to fulfil an order.
    CheckoutIssuesCheckoutIssueRestaurantNotTakingOrders:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
        - $ref: '#/components/schemas/CheckoutAvailableFulfilmentTimesIssue'
      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.
    CheckoutIssuesCheckoutIssueServiceTypeUnavailable:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
        - $ref: '#/components/schemas/CheckoutAvailableFulfilmentTimesIssue'
      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.
    CheckoutIssuesCheckoutIssueTableIdentifierRequired:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Indicates that a table identifier is required to fulfil an order.
    CheckoutIssuesCheckoutIssueTipInvalid:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Indicates that the applied tip is not an accepted value.
    CheckoutOptionsAdditionalContent:
      type: object
      description: Additional content for the membership plan benefit. Currently the only property it can contain is `firstOrderMovDisplayText`, but more may be added in the future.
      properties:
        firstOrderMovDisplayText:
          type: string
          nullable: true
          description: The display text shown when the customer is eligible to purchase the membership plan without meeting the minimum order value for their first order.
        savingsDisplayText:
          type: string
          nullable: true
          description: Text will be returned if the savings amount is greater than or equal to the value from membership api (Delivery Fee >= Savings Threshold).
    CheckoutOptionsAdditionalProductMembership:
      type: object
      description: Describes a customer's membership options.
      required:
        - id
        - name
        - plan
        - available
        - benefits
      properties:
        id:
          type: string
          nullable: false
          description: The Id of the membership.
        name:
          type: string
          nullable: false
          description: The name of the membership.
        plan:
          $ref: '#/components/schemas/CheckoutOptionsMembershipPlan'
          nullable: false
        available:
          type: boolean
          nullable: false
          description: Indicates whether the membership can be purchased.
        benefits:
          type: array
          nullable: false
          items:
            $ref: '#/components/schemas/CheckoutOptionsMembershipBenefit'
            nullable: false
          description: Describes the benefits available at Checkout.
        savings:
          $ref: '#/components/schemas/CheckoutOptionsSavings'
          nullable: true
    CheckoutOptionsAdditionalProducts:
      type: object
      description: Contains all additional products.
      properties:
        memberships:
          type: array
          nullable: true
          description: Contains memberships relevant to the Checkout.
          items:
            $ref: '#/components/schemas/CheckoutOptionsAdditionalProductMembership'
            nullable: false
    CheckoutOptionsCheckoutCustomerNotes:
      required:
        - serviceTypes
      nullable: false
      description: |
        Details of the types of customer notes that can be supplied when updating a checkout.
      type: object
      properties:
        serviceTypes:
          required:
            - collection
            - delivery
            - dineIn
          nullable: false
          description: |
            Details of the types of customer notes that can be supplied when updating a checkout of each service type.
          type: object
          properties:
            collection:
              required:
                - orderNoteAccepted
                - kitchenNoteAccepted
              nullable: false
              description: |
                Details of the types of customer notes that can be supplied when updating a Collection checkout.
              type: object
              properties:
                orderNoteAccepted:
                  nullable: false
                  description: |
                    Indicates whether an Order note can be supplied when updating a Collection checkout.
                  type: boolean
                kitchenNoteAccepted:
                  nullable: false
                  description: |
                    Indicates whether a Kitchen note can be supplied when updating a Collection checkout.
                  type: boolean
            delivery:
              required:
                - orderNoteAccepted
                - kitchenNoteAccepted
                - courierNoteAccepted
              nullable: false
              description: |
                Details of the types of customer notes that can be supplied when updating a Delivery checkout.
              type: object
              properties:
                orderNoteAccepted:
                  nullable: false
                  description: |
                    Indicates whether an Order note can be supplied when updating a Delivery checkout.
                  type: boolean
                kitchenNoteAccepted:
                  nullable: false
                  description: |
                    Indicates whether a Kitchen note can be supplied when updating a Delivery checkout.
                  type: boolean
                courierNoteAccepted:
                  nullable: false
                  description: |
                    Indicates whether a Courier note can be supplied when updating a Delivery checkout.
                  type: boolean
            dineIn:
              required:
                - orderNoteAccepted
                - kitchenNoteAccepted
              nullable: false
              description: |
                Details of the types of customer notes that can be supplied when updating a Dine In checkout.
              type: object
              properties:
                orderNoteAccepted:
                  nullable: false
                  description: |
                    Indicates whether an Order note can be supplied when updating a Dine In checkout.
                  type: boolean
                kitchenNoteAccepted:
                  nullable: false
                  description: |
                    Indicates whether a Kitchen note can be supplied when updating a Dine In checkout.
                  type: boolean
    CheckoutOptionsCheckoutOptions:
      required:
        - tipping
        - customerNotes
      description: Details of which options are available for the given checkout.
      type: object
      properties:
        currency:
          description: The currency code in ISO-4217 format e.g. GBP.
          type: string
          minLength: 3
          maxLength: 3
          nullable: false
        tipping:
          $ref: '#/components/schemas/CheckoutOptionsTipping'
        customerNotes:
          $ref: '#/components/schemas/CheckoutOptionsCheckoutCustomerNotes'
        vouchers:
          nullable: true
          $ref: '#/components/schemas/CheckoutOptionsVouchers'
        delivery:
          nullable: true
          $ref: '#/components/schemas/CheckoutOptionsDelivery'
        additionalProducts:
          nullable: true
          $ref: '#/components/schemas/CheckoutOptionsAdditionalProducts'
        membershipAcquisitionSections:
          type: array
          nullable: true
          items:
            nullable: false
            $ref: '#/components/schemas/CheckoutOptionsMembershipAcquisitionSections'
    CheckoutOptionsDelivery:
      type: object
      description: Contains all delivery options.
      properties:
        options:
          type: array
          nullable: true
          minItems: 1
          description: List of all delivery options.
          items:
            nullable: false
            $ref: '#/components/schemas/CheckoutOptionsDeliveryOption'
    CheckoutOptionsDeliveryOption:
      type: object
      description: Describes a delivery option.
      required:
        - default
        - name
        - tags
      properties:
        default:
          type: boolean
          nullable: false
          description: Whether the delivery option is enabled by default.
        name:
          type: string
          nullable: false
          description: The name of the delivery option.
        description:
          type: string
          nullable: true
          description: Provides a description of the delivery option.
        tags:
          type: array
          nullable: false
          description: Any tags related to the delivery option.
          items:
            type: string
            nullable: false
        fee:
          type: object
          nullable: true
          required:
            - amount
          description: The delivery fee without any benefit applied to it.
          properties:
            amount:
              type: integer
              nullable: false
              format: int32
              minimum: 0
              description: The amount of the fee in minor currency units.
        membership:
          nullable: true
          $ref: '#/components/schemas/CheckoutOptionsDeliveryOptionsMembership'
    CheckoutOptionsDeliveryOptionsMembership:
      type: object
      description: Describes a customer's membership relating to their delivery options.
      required:
        - id
      properties:
        id:
          type: string
          nullable: false
          description: The Id of the membership.
        expiry:
          type: object
          nullable: true
          required:
            - expiryDate
            - hasExpired
          description: Information about when this membership will expire.
          properties:
            expiryDate:
              type: string
              format: date-time
              nullable: false
              description: The expiration date of this membership in ISO 8601 UTC (Zulu Time).
            hasExpired:
              type: boolean
              nullable: false
              description: Indicates whether the membership has expired.
        brand:
          type: string
          nullable: true
          description: The brand of the membership.
        icon:
          type: object
          nullable: true
          required:
            - id
          description: Delivery options icon.
          properties:
            id:
              type: string
              nullable: false
              description: Delivery options icon Id.
    CheckoutOptionsMembershipAcquisitionSectionFooter:
      type: object
      description: Membership acquisition section Footer
      properties:
        displayText:
          type: string
          description: Display text for Footer.
      required:
        - displayText
    CheckoutOptionsMembershipAcquisitionSectionHighlights:
      type: object
      description: Membership acquisition section Highlight
      properties:
        displayText:
          type: string
          description: Display text for Highlight.
      required:
        - displayText
    CheckoutOptionsMembershipAcquisitionSectionMembership:
      type: object
      description: Membership plan
      properties:
        id:
          type: string
          description: Membership Plan ID.
        title:
          type: string
          description: Membership Plan Title.
        description:
          type: string
          description: Membership Plan Description.
      required:
        - id
        - title
        - description
    CheckoutOptionsMembershipAcquisitionSectionTitle:
      type: object
      description: Membership acquisition section Title
      properties:
        displayText:
          type: string
          description: Display text for title.
      required:
        - displayText
    CheckoutOptionsMembershipAcquisitionSections:
      type: object
      description: Separated Membership acquisition from the Delivery section
      properties:
        title:
          $ref: '#/components/schemas/CheckoutOptionsMembershipAcquisitionSectionTitle'
        highlights:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutOptionsMembershipAcquisitionSectionHighlights'
        footer:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutOptionsMembershipAcquisitionSectionFooter'
        memberships:
          type: array
          items:
            $ref: '#/components/schemas/CheckoutOptionsMembershipAcquisitionSectionMembership'
      required:
        - title
        - highlights
        - footer
        - memberships
    CheckoutOptionsMembershipBenefit:
      type: object
      description: Describes a benefit which can be applied to the Checkout.
      required:
        - type
        - available
      properties:
        type:
          type: string
          nullable: false
          description: The type of the benefit. Currently the only possible value is `unlimitedFreeDelivery`, but more may be added in the future.
        restrictedBy:
          type: array
          nullable: true
          description: Lists the restrictions which indicate that the current Checkout is not eligible to select this benefit.
          items:
            $ref: '#/components/schemas/CheckoutOptionsRestriction'
            nullable: false
        code:
          type: string
          nullable: true
          description: The voucher code needed to apply to activate the benefit.
        available:
          type: boolean
          nullable: false
          description: Indicates whether the membership can be purchased.
        additionalContent:
          $ref: '#/components/schemas/CheckoutOptionsMembershipBenefitAdditionalContent'
          nullable: true
    CheckoutOptionsMembershipBenefitAdditionalContent:
      type: object
      description: Additional content for the membership plan benefit
      properties:
        firstOrderMovDisplayText:
          type: string
          nullable: true
          description: The display text shown when the customer is eligible to purchase the membership plan without meeting the minimum order value for their first order.
        savingsDisplayText:
          type: string
          nullable: true
          description: Text will be returned if the savings amount is greater than or equal to the value from membership api (Delivery Fee >= Savings Threshold).
    CheckoutOptionsMembershipPlan:
      type: object
      description: Contains the plan associated with the membership.
      required:
        - termsAndConditions
        - brandName
        - duration
        - price
        - benefits
      properties:
        description:
          type: string
          nullable: true
          description: Describes the membership plan.
        brandName:
          type: string
          nullable: true
          description: Brand name of the plan.
        termsAndConditions:
          $ref: '#/components/schemas/CheckoutOptionsMembershipTermsAndConditions'
          nullable: false
        subscription:
          $ref: '#/components/schemas/CheckoutOptionsMembershipSubscription'
          nullable: true
        duration:
          type: string
          format: duration
          description: The length of time the plan is active for in ISO 8601.
          nullable: false
        price:
          type: object
          description: The price of the membership plan.
          nullable: false
          required:
            - amount
          properties:
            amount:
              type: integer
              format: int32
              minimum: 0
              nullable: false
              description: The amount of the plan in minor currency units.
        benefits:
          type: array
          nullable: false
          description: Describes the benefits associated with the membership plan.
          items:
            $ref: '#/components/schemas/CheckoutOptionsMembershipPlanBenefit'
            nullable: false
    CheckoutOptionsMembershipPlanBenefit:
      type: object
      description: Describes a benefit of the membership plan.
      required:
        - type
        - displayText
      properties:
        type:
          type: string
          nullable: false
          description: The type of the benefit. Currently the only possible value is `unlimitedFreeDelivery`, but more may be added in the future.
        displayText:
          type: string
          nullable: false
          description: Text to describe the benefit.
        restrictions:
          type: array
          nullable: true
          description: Restrictions on the benefit being purchased. Currently the only possible values are `partner` and `orderValue`, but more may be added in the future.
          items:
            $ref: '#/components/schemas/CheckoutOptionsRestriction'
            nullable: false
        additionalContent:
          nullable: true
          $ref: '#/components/schemas/CheckoutOptionsAdditionalContent'
    CheckoutOptionsMembershipSubscription:
      type: object
      description: Contains information concerning recurring payments for the membership, if applicable.
      required:
        - price
        - displayText
      properties:
        price:
          type: object
          nullable: false
          description: Information concerning the price of the recurring payment.
          required:
            - amount
            - displayText
          properties:
            amount:
              type: integer
              nullable: false
              description: The amount taken for the recurring payment, in minor currency units.
            displayText:
              type: string
              nullable: false
              description: The amount taken for the recurring payment, in the local currency.
        displayText:
          type: string
          nullable: false
          description: The name of the subscription. E.g. "Plus Premium Subscription".
    CheckoutOptionsMembershipTermsAndConditions:
      type: object
      description: Provides the terms and conditions associated with the membership plan.
      required:
        - url
      properties:
        url:
          type: string
          nullable: false
          description: The URL of the terms and conditions.
        consent:
          $ref: '#/components/schemas/CheckoutOptionsMembershipTermsAndConditionsConsent'
          nullable: true
    CheckoutOptionsMembershipTermsAndConditionsConsent:
      type: object
      description: Contains information relating to the terms and conditions which the customer must consent to when purchasing the membership.
      required:
        - required
        - displayText
      properties:
        required:
          type: boolean
          nullable: false
          description: Indicates whether the customer must consent to the terms and conditions before purchasing the membership.
        displayText:
          type: string
          nullable: false
          description: The display text which describes the action being taken by the customer. E.g. "I have read and agreed to the terms and conditions.".
        link:
          type: object
          nullable: true
          description: Data used to build a hyperlink for the terms and conditions. This is only used when rendering the T&C's URL as part of the Consent UI.
          required:
            - displayText
          properties:
            displayText:
              type: string
              nullable: false
              description: The text to display when rendering the T&C's url. E.g. "click here".
    CheckoutOptionsRestriction:
      type: object
      description: Restrictions applied to benefit.
      required:
        - type
        - displayText
      properties:
        type:
          type: string
          nullable: false
          description: The type of the restriction. Currently, the only values are `orderValue` or `partner`, but more may be added in the future.
        displayText:
          type: string
          nullable: false
          description: Text to describe the restriction.
        maximumAmount:
          type: integer
          format: int32
          nullable: true
          description: If set, the maximum amount that the benefit can apply to, in minor currency units.
        minimumAmount:
          type: integer
          format: int32
          nullable: true
          description: If set, the minimum amount that the benefit can apply to, in minor currency units.
    CheckoutOptionsSavings:
      type: object
      description: Savings within the current order benefits.
      required:
        - total
      properties:
        total:
          type: integer
          nullable: false
          description: Value (minor currency) that will be saved based on the free delivery discount if selected.
    CheckoutOptionsTipping:
      type: object
      nullable: false
      description: |
        Details of the types of tip that can be applied when updating a checkout.
      required:
        - courier
      properties:
        courier:
          type: object
          nullable: false
          description: |
            Details of the types of courier tip that can be applied when updating a checkout.
          required:
            - isEnabled
          properties:
            isEnabled:
              type: boolean
              nullable: false
              description: Indicates whether courier tipping is available for this checkout (true) or not (false).
            fixedAmount:
              type: object
              nullable: true
              description: When set, indicates that fixed tip amounts are available.
              required:
                - options
              properties:
                options:
                  type: array
                  nullable: false
                  description: An array of fixed amount tipping options that should be offered.
                  minItems: 1
                  maxItems: 10
                  items:
                    type: object
                    nullable: false
                    description: A fixed amount tipping option that should be offered.
                    required:
                      - amount
                    properties:
                      amount:
                        type: number
                        nullable: false
                        description: The amount that can be tipped in minor currency units.
                        format: integer
                        minimum: 1
            customAmount:
              type: object
              nullable: true
              description: When set, indicates that custom tip amounts are available.
              required:
                - minimum
                - maximum
              properties:
                minimum:
                  type: number
                  nullable: false
                  description: The minimum custom amount that can be tipped in minor currency units.
                  format: integer
                  minimum: 1
                maximum:
                  type: number
                  nullable: false
                  description: The maximum custom amount that can be tipped in minor currency units.
                  format: integer
                  minimum: 1
    CheckoutOptionsVouchers:
      type: object
      nullable: true
      description: |
        Contains all applicable vouchers.
      required:
        - applicable
      properties:
        applicable:
          type: array
          nullable: false
          minItems: 0
          description: |
            List of all applicable voucher codes.
          items:
            type: object
            required:
              - code
            properties:
              code:
                type: string
                nullable: false
                description: Applicable voucher code.
    CheckoutPaymentsCheckoutNativePaymentsSummary:
      required:
        - label
        - amount
        - sdkAmount
      properties:
        label:
          description: The descriptive name of the price summary item such as Delivery Cost.
          type: string
          nullable: false
        amount:
          description: The amount of the price summary item as minor currency units.
          type: number
          format: integer
          nullable: false
        sdkAmount:
          description: The amount of the price summary item formatted for native SDK.
          type: string
          nullable: false
      type: object
    CheckoutPaymentsCheckoutPaymentsPost201Response:
      description: The details of the payment.
      type: object
      properties:
        id:
          description: The id of the payment created.
          type: string
          nullable: false
        status:
          description: The current status of the payment.
          $ref: '#/components/schemas/CheckoutPaymentsCheckoutPaymentsStatusGetResponse'
      required:
        - id
        - status
      additionalProperties: false
    CheckoutPaymentsCheckoutPaymentsPostRequest:
      description: The details needed to start a payment.
      type: object
      properties:
        currency:
          description: |
            The currency code in ISO-4217 format.

            Currently, the currencies supported for each tenant are:
              - AT: `EUR`
              - AU: `AUD`
              - BE: `EUR`
              - BG: `BGN`
              - CH: `CHF`
              - DE: `EUR`
              - DK: `DKK`
              - ES: `EUR`
              - IE: `EUR`
              - IT: `EUR`
              - LU: `EUR`
              - NL: `EUR`
              - NZ: `NZD`
              - PL: `PLN`
              - SK: `EUR`
              - UK: `GBP`
          type: string
          minLength: 3
          maxLength: 3
          nullable: false
        total:
          description: |
            Total price the customer expects to pay as minor currency units in ISO-4217 format.

            The total price should include any fees applied for payment methods.
          type: number
          format: integer
          minimum: 0
          nullable: false
        methods:
          description: Collection of payment methods to pay for checkout.
          type: array
          minItems: 1
          maxItems: 10
          nullable: false
          items:
            $ref: '#/components/schemas/PaymentsPaymentType'
        returnUrl:
          description: URL to return to once payment is in `rejected`, `accepted` or `failed` status.
          type: string
          format: uri
      required:
        - currency
        - total
        - methods
        - returnUrl
      additionalProperties: false
    CheckoutPaymentsCheckoutPaymentsStatusGetResponse:
      discriminator:
        propertyName: code
        mapping:
          pending: '#/components/schemas/CheckoutPaymentsStatusPending'
          awaitingAction: '#/components/schemas/CheckoutPaymentsStatusAwaitingAction'
          rejected: '#/components/schemas/CheckoutPaymentsStatusRejected'
          accepted: '#/components/schemas/CheckoutPaymentsStatusAccepted'
          failed: '#/components/schemas/CheckoutPaymentsStatusFailed'
        oneOf:
          - $ref: '#/components/schemas/CheckoutPaymentsStatusPending'
          - $ref: '#/components/schemas/CheckoutPaymentsStatusAwaitingAction'
          - $ref: '#/components/schemas/CheckoutPaymentsStatusRejected'
          - $ref: '#/components/schemas/CheckoutPaymentsStatusAccepted'
          - $ref: '#/components/schemas/CheckoutPaymentsStatusFailed'
      type: object
      description: The status details for a payment.
      properties:
        code:
          description: The status code of the payment.
          type: string
          enum:
            - pending
            - awaitingAction
            - rejected
            - accepted
            - failed
          nullable: false
      required:
        - code
    CheckoutPaymentsErrorsCheckoutPaymentsPost400Error:
      description: An HTTP 400 error response
      properties:
        fault:
          required:
            - faultId
            - traceId
            - errors
          additionalProperties: false
          type: object
          description: An array of values that helps identify this response back to logs, so we can easily find faults.
          properties:
            traceId:
              nullable: false
              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
            faultId:
              nullable: false
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              type: string
            errors:
              nullable: false
              items:
                required:
                  - description
                  - errorCode
                additionalProperties: false
                type: object
                description: Details about the error that may assist you in resolving the issue.
                properties:
                  description:
                    nullable: false
                    description: Specific details about the error that may assist you in resolving the issue.
                    type: string
                  errorCode:
                    nullable: false
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error.
                    enum:
                      - userAgentInvalid
                      - applicationIdInvalid
                      - applicationVersionInvalid
                      - tenantInvalid
                      - checkoutIdInvalid
                    type: string
                nullable: false
              description: List of errors that may assist you in resolving the issues.
              type: array
          nullable: true
      type: object
    CheckoutPaymentsErrorsCheckoutPaymentsPost404Error:
      description: An HTTP 404 error response
      properties:
        fault:
          required:
            - faultId
            - traceId
            - errors
          additionalProperties: false
          type: object
          description: An array of values that helps identify this response back to logs, so we can easily find faults.
          properties:
            traceId:
              nullable: false
              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
            faultId:
              nullable: false
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              type: string
            errors:
              nullable: false
              items:
                required:
                  - description
                  - errorCode
                additionalProperties: false
                type: object
                description: Details about the error that may assist you in resolving the issue.
                properties:
                  description:
                    nullable: false
                    description: Specific details about the error that may assist you in resolving the issue.
                    type: string
                  errorCode:
                    nullable: false
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error.
                    enum:
                      - tenantNotSupported
                      - checkoutNotFound
                    type: string
                nullable: false
              description: List of errors that may assist you in resolving the issues.
              type: array
          nullable: true
      type: object
    CheckoutPaymentsErrorsCheckoutPaymentsPost422Error:
      description: An HTTP 422 error response
      properties:
        fault:
          required:
            - faultId
            - traceId
            - errors
          additionalProperties: false
          type: object
          description: An array of values that helps identify this response back to logs, so we can easily find faults.
          properties:
            traceId:
              nullable: false
              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
            faultId:
              nullable: false
              description: A value that helps identify this response back to logs, so we can easily find this specific fault.
              type: string
            errors:
              nullable: false
              items:
                required:
                  - description
                  - errorCode
                additionalProperties: false
                type: object
                description: Details about the error that may assist you in resolving the issue.
                properties:
                  description:
                    nullable: false
                    description: Specific details about the error that may assist you in resolving the issue.
                    type: string
                  errorCode:
                    nullable: false
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error.
                    enum:
                      - currencyInvalid
                      - totalInvalid
                      - paymentMethodsInvalid
                      - paymentMethodInvalid
                      - paymentMethodAmountInvalid
                      - pamentMethodFeeInvalid
                      - paymentReturnUrlInvalid
                      - currencyNotSupported
                    type: string
                nullable: false
              description: List of errors that may assist you in resolving the issues.
              type: array
          nullable: true
      type: object
    CheckoutPaymentsStatusAccepted:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsCheckoutPaymentsStatusGetResponse'
        - required:
            - orderId
            - orderReference
      type: object
      properties:
        code:
          description: Payment was accepted. This is an end state.
        orderId:
          description: The id of the order.
          type: string
          minLength: 1
          maxLength: 100
          nullable: false
        orderReference:
          description: The reference used by the customer to identify their order.
          type: string
          minLength: 1
          maxLength: 100
          nullable: false
      additionalProperties: false
    CheckoutPaymentsStatusAwaitingAction:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsCheckoutPaymentsStatusGetResponse'
      type: object
      properties:
        code:
          description: Either `redirect` or `native` action required to complete payment.
        redirect:
          description: Details for completing payment via a redirect.
          type: object
          properties:
            url:
              description: The redirect URL to complete payment.
              type: string
              format: uri
              nullable: false
            target:
              $ref: '#/components/schemas/PaymentorchestrationOrchestrateResponsesSharedTarget'
            pollingPageUrl:
              description: The polling page URL used to ensure an accurate payment status.
              type: string
              format: uri
              nullable: true
            identifier:
              description: Unique identifier required for the payment to be authorised.
              type: string
              nullable: false
          required:
            - url
            - identifier
          nullable: true
        native:
          description: Details for completing payment natively.
          type: object
          properties:
            identifier:
              description: Unique identifier required for the payment to be authorised.
              type: string
              nullable: false
            currency:
              description: The currency code in ISO-4217 format.
              type: string
              minLength: 3
              maxLength: 3
              nullable: false
            amount:
              description: Confirmation of the total amount that needs to be authorised as minor currency units.
              type: number
              format: integer
              nullable: false
            sdkAmount:
              description: The total amount that needs to be authorised formatted for native SDK.
              type: string
              nullable: false
            summary:
              items:
                $ref: '#/components/schemas/CheckoutPaymentsCheckoutNativePaymentsSummary'
              description: The price summary for the native payment.
              type: array
          required:
            - identifier
            - currency
            - amount
            - sdkAmount
            - summary
          nullable: true
      additionalProperties: false
    CheckoutPaymentsStatusFailed:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsCheckoutPaymentsStatusGetResponse'
      type: object
      properties:
        code:
          description: Payment could not be processed. This is an end state.
        message:
          type: string
          description: Display text, in the customer's preferred language, of why the payment failed.
          minLength: 1
          maxLength: 100
          nullable: true
      additionalProperties: false
    CheckoutPaymentsStatusPending:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsCheckoutPaymentsStatusGetResponse'
      type: object
      properties:
        code:
          description: Payment waiting to be processed.
      additionalProperties: false
    CheckoutPaymentsStatusRejected:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsCheckoutPaymentsStatusGetResponse'
        - required:
            - reasons
      type: object
      properties:
        code:
          description: Payment was rejected. This is an end state.
        reasons:
          type: array
          description: One or more reasons for why the payment was rejected.
          minItems: 1
          maxItems: 6
          items:
            nullable: false
            description: Code for why the payment was rejected.
            $ref: '#/components/schemas/CheckoutPaymentsStatusRejectedCodes'
          nullable: false
      additionalProperties: false
    CheckoutPaymentsStatusRejectedCodes:
      discriminator:
        propertyName: code
        mapping:
          totalsDoNotMatch: '#/components/schemas/CheckoutPaymentsStatusRejectionsTotalsDoNotMatch'
          unfulfillable: '#/components/schemas/CheckoutPaymentsStatusRejectionsUnfulfillable'
          duplicate: '#/components/schemas/CheckoutPaymentsStatusRejectionsDuplicate'
          paymentRefused: '#/components/schemas/CheckoutPaymentsStatusRejectionsPaymentRefused'
          ineligible: '#/components/schemas/CheckoutPaymentsStatusRejectionsIneligible'
          unknown: '#/components/schemas/CheckoutPaymentsStatusRejectionsUnknown'
        oneOf:
          - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectionsTotalsDoNotMatch'
          - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectionsUnfulfillable'
          - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectionsDuplicate'
          - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectionsPaymentRefused'
          - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectionsIneligible'
          - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectionsUnknown'
      type: object
      description: Details of the `rejected` status.
      properties:
        code:
          description: Code for why the payment was rejected.
          type: string
          enum:
            - totalsDoNotMatch
            - unfulfillable
            - duplicate
            - paymentRefused
            - ineligible
            - unknown
          nullable: false
      required:
        - code
    CheckoutPaymentsStatusRejectionsDuplicate:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectedCodes'
      type: object
      properties:
        code:
          description: A recent payment has been `accepted` for this checkout.
      additionalProperties: false
    CheckoutPaymentsStatusRejectionsIneligible:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectedCodes'
      type: object
      properties:
        code:
          description: Customer is not eligible.
      additionalProperties: false
    CheckoutPaymentsStatusRejectionsPaymentRefused:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectedCodes'
      type: object
      properties:
        code:
          description: The payment was refused/declined.
        message:
          type: string
          description: Display text, in the customer's preferred language, of why the payment was refused/declined.
          minLength: 1
          maxLength: 100
          nullable: true
      additionalProperties: false
    CheckoutPaymentsStatusRejectionsTotalsDoNotMatch:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectedCodes'
      type: object
      properties:
        code:
          description: The total or payment totals do not match the total the customer was expected to pay.
      additionalProperties: false
    CheckoutPaymentsStatusRejectionsUnfulfillable:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectedCodes'
        - required:
            - issues
      type: object
      properties:
        code:
          description: Fulfilment constraints have not been met.
        issues:
          type: array
          description: Issues that identify the reasons a checkout is unfulfillable.
          minItems: 0
          maxItems: 50
          items:
            nullable: false
            description: Represents a single issue identifying why a checkout is unfulfillable.
            $ref: '#/components/schemas/CheckoutCheckoutIssueV2'
          nullable: false
      additionalProperties: false
    CheckoutPaymentsStatusRejectionsUnknown:
      allOf:
        - $ref: '#/components/schemas/CheckoutPaymentsStatusRejectedCodes'
      type: object
      properties:
        code:
          description: An unknown or unexpected error has occurred.
        message:
          description: Additional information about what went wrong.
          type: string
          minLength: 1
          maxLength: 100
          nullable: true
      additionalProperties: false
    CheckoutPurchaseLineItem:
      type: object
      description: A single entry on a purchase.
      required:
        - type
        - name
        - price
      properties:
        type:
          type: string
          description: |
            Type of line item.
            * fee: A cost.
            * discount: A saving.
            * subtotal: The current total, typically including the total for the products and preceding line items.
          enum:
            - fee
            - discount
            - subtotal
          nullable: false
        name:
          type: string
          description: Display name in the preferred language.
          minLength: 1
          maxLength: 100
          nullable: false
        price:
          type: object
          description: |
            The price of the line item.

            The `amount` will always be positive and the `type` indicates the impact to the overall total.
            The `formattedAmount` will also reflect the impact to the total, e.g. a discount of `-£1.50`.
          nullable: false
          $ref: '#/components/schemas/CheckoutPurchasePrice'
        tags:
          type: array
          description: |
            Tags about the line item.

            **New tags may be added in future.**
          minItems: 1
          maxItems: 100
          nullable: true
          items:
            type: string
            nullable: false
            enum:
              - bagFee
              - deliveryFee
              - itemDeposit
              - offer
              - serviceFee
              - sharedBalance
              - smallOrderFee
              - stampCard
              - voucher
              - tip
              - paymentFee
              - jetPay
              - accountCredit
              - jetcredit
    CheckoutPurchasePrice:
      type: object
      description: Amount of money to be charged or saved.
      required:
        - amount
        - formattedAmount
      properties:
        amount:
          type: number
          format: integer
          description: Amount in minor currency units.
          minimum: 0
          nullable: false
        formattedAmount:
          type: string
          description: Amount formatted with currency symbol. For example, £1.00 in UK.
          minLength: 1
          maxLength: 100
          nullable: false
    CheckoutPurchaseProduct:
      type: object
      description: An item being purchased from a restaurant.
      required:
        - id
        - name
        - quantity
        - price
        - preferences
      properties:
        id:
          type: string
          description: The id of the product.
          minLength: 1
          maxLength: 100
          nullable: false
        name:
          type: string
          description: The name of the product.
          minLength: 1
          maxLength: 100
          nullable: false
        variation:
          type: string
          description: The variation of the product.
          minLength: 1
          maxLength: 100
          nullable: true
        quantity:
          type: number
          format: integer
          description: The quantity of this product and associated options to purchase.
          minimum: 1
          nullable: false
        price:
          type: object
          description: The total price of the product, including options, multiplied by the quantity.
          nullable: false
          $ref: '#/components/schemas/CheckoutPurchasePrice'
        options:
          type: array
          description: Options associated with the product.
          minItems: 1
          maxItems: 100
          nullable: true
          items:
            nullable: false
            $ref: '#/components/schemas/CheckoutPurchaseProductOption'
        notes:
          type: array
          description: Notes about the product.
          minItems: 1
          maxItems: 100
          nullable: true
          items:
            type: object
            nullable: false
            required:
              - type
              - note
            properties:
              type:
                type: string
                description: |
                  Type of note.

                  **New types may be added in future.**
                enum:
                  - customer
                nullable: true
              note:
                type: string
                description: Content of the note.
                minLength: 1
                maxLength: 160
                nullable: true
        preferences:
          type: object
          description: A set of preferences for the product.
          nullable: false
          properties:
            substitutions:
              type: array
              description: Preferences for action to take when product substitution is required, ordered by priority.
              minLength: 1
              maxLength: 10
              nullable: true
              items:
                type: object
                nullable: false
                required:
                  - type
                  - name
                properties:
                  type:
                    type: string
                    description: |
                      Type of substitution preference.

                      **New types may be added in future.**
                    enum:
                      - refund
                      - bestMatch
                    nullable: true
                  name:
                    type: string
                    description: Display text in preferred language about the substitution preference.
                    minLength: 1
                    maxLength: 100
                    nullable: true
        attributes:
          type: array
          description: Represents the type or properties of the product.
          minItems: 1
          maxItems: 100
          nullable: true
          items:
            type: object
            nullable: false
            required:
              - type
            properties:
              type:
                type: string
                description: |
                  Type or property of the product.

                  **New types or properties may be added in future.**
                enum:
                  - alcohol
                nullable: false
    CheckoutPurchaseProductOption:
      type: object
      description: An item option being purchased from a restaurant.
      required:
        - name
        - quantity
        - preferences
      properties:
        id:
          type: string
          description: The id of the product option.
          maxLength: 100
          nullable: true
        name:
          type: string
          description: The name of the product option.
          minLength: 1
          maxLength: 100
          nullable: false
        variation:
          type: string
          description: The variation of the product.
          minLength: 1
          maxLength: 100
          nullable: true
        quantity:
          type: number
          format: integer
          description: The quantity of this product option and associated options to purchase.
          minimum: 1
          nullable: false
        options:
          type: array
          description: Options associated with the product option.
          minItems: 1
          maxItems: 100
          nullable: true
          items:
            nullable: false
            $ref: '#/components/schemas/CheckoutPurchaseProductOption'
        notes:
          type: array
          description: Notes about the product option.
          minItems: 1
          maxItems: 100
          nullable: true
          items:
            type: object
            nullable: false
            required:
              - type
              - note
            properties:
              type:
                type: string
                description: |
                  Type of note.

                  **New types may be added in future.**
                enum:
                  - customer
                nullable: true
              note:
                type: string
                description: Content of the note.
                minLength: 1
                maxLength: 160
                nullable: true
        preferences:
          type: object
          description: A set of preferences for the product option.
          nullable: false
          properties:
            substitutions:
              type: array
              description: Preferences for action to take when product option substitution is required, ordered by priority.
              minLength: 1
              maxLength: 10
              nullable: true
              items:
                type: object
                nullable: false
                required:
                  - type
                  - name
                properties:
                  type:
                    type: string
                    description: |
                      Type of substitution preference.

                      **New types may be added in future.**
                    enum:
                      - refund
                      - bestMatch
                    nullable: true
                  name:
                    type: string
                    description: Display text in preferred language about the substitution preference.
                    minLength: 1
                    maxLength: 100
                    nullable: true
        attributes:
          type: array
          description: Represents the type or properties of the product option.
          minItems: 1
          maxItems: 100
          nullable: true
          items:
            type: object
            nullable: false
            required:
              - type
            properties:
              type:
                type: string
                description: |
                  Type or property of the product option.

                  **New types or properties may be added in future.**
                enum:
                  - alcohol
                nullable: false
    CheckoutPurchasePurchase:
      type: object
      description: A summary of the purchase.
      required:
        - groups
        - total
      properties:
        name:
          type: string
          description: Name of the purchase.
          minLength: 1
          maxLength: 100
          nullable: true
        groups:
          type: array
          description: A list of groups on the purchase.
          minItems: 1
          maxItems: 50
          nullable: false
          items:
            type: object
            nullable: false
            $ref: '#/components/schemas/CheckoutPurchasePurchaseGroup'
        lineItems:
          type: array
          description: The breakdown of costs for the purchase, in the order in which they have been applied.
          minItems: 0
          maxItems: 100
          nullable: false
          items:
            type: object
            nullable: false
            $ref: '#/components/schemas/CheckoutPurchaseLineItem'
        hasAgeRestrictedItems:
          type: boolean
          description: Whether the purchase contains age-restricted items.
          nullable: false
        total:
          type: object
          description: The total cost of the purchase.
          nullable: false
          $ref: '#/components/schemas/CheckoutPurchaseTotal'
    CheckoutPurchasePurchaseGroup:
      type: object
      required:
        - products
        - total
      properties:
        name:
          type: string
          description: Name of the group.
          minLength: 1
          maxLength: 100
          nullable: true
        products:
          type: array
          description: List of products being purchased.
          minItems: 1
          maxItems: 100
          nullable: false
          items:
            type: object
            nullable: false
            $ref: '#/components/schemas/CheckoutPurchaseProduct'
        lineItems:
          type: array
          description: The breakdown of costs for the group, in the order in which they have been applied.
          minItems: 1
          maxItems: 100
          nullable: true
          items:
            type: object
            nullable: false
            $ref: '#/components/schemas/CheckoutPurchaseLineItem'
        total:
          type: object
          description: The total cost of the group.
          nullable: false
          $ref: '#/components/schemas/CheckoutPurchaseTotal'
    CheckoutPurchaseTotal:
      type: object
      description: The total price.
      required:
        - name
        - price
      properties:
        name:
          type: string
          description: Display text in preferred language for the total.
          minLength: 1
          maxLength: 100
          nullable: false
        price:
          type: object
          description: The total price.
          nullable: false
          $ref: '#/components/schemas/CheckoutPurchasePrice'
    CheckoutVouchersVoucherStatus:
      discriminator:
        propertyName: code
        mapping:
          valid: '#/components/schemas/CheckoutVouchersVoucherStatusValid'
          unavailable: '#/components/schemas/CheckoutVouchersVoucherStatusUnavailable'
          expired: '#/components/schemas/CheckoutVouchersVoucherStatusExpired'
          redeemed: '#/components/schemas/CheckoutVouchersVoucherStatusRedeemed'
          ineligible: '#/components/schemas/CheckoutVouchersVoucherStatusIneligible'
          inactive: '#/components/schemas/CheckoutVouchersVoucherStatusInactive'
        oneOf:
          - $ref: '#/components/schemas/CheckoutVouchersVoucherStatusValid'
          - $ref: '#/components/schemas/CheckoutVouchersVoucherStatusUnavailable'
          - $ref: '#/components/schemas/CheckoutVouchersVoucherStatusExpired'
          - $ref: '#/components/schemas/CheckoutVouchersVoucherStatusRedeemed'
          - $ref: '#/components/schemas/CheckoutVouchersVoucherStatusIneligible'
          - $ref: '#/components/schemas/CheckoutVouchersVoucherStatusInactive'
      required:
        - code
      properties:
        code:
          nullable: false
          description: The voucher status code.
          enum:
            - valid
            - unavailable
            - expired
            - redeemed
            - ineligible
            - inactive
          type: string
      type: object
      description: Details of the voucher status.
    CheckoutVouchersVoucherStatusExpired:
      allOf:
        - $ref: '#/components/schemas/CheckoutVouchersVoucherStatus'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Voucher was previously available to apply at checkout, but is no longer available.
    CheckoutVouchersVoucherStatusInactive:
      allOf:
        - $ref: '#/components/schemas/CheckoutVouchersVoucherStatus'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Voucher is not yet available to apply at checkout.
    CheckoutVouchersVoucherStatusIneligible:
      allOf:
        - $ref: '#/components/schemas/CheckoutVouchersVoucherStatus'
      additionalProperties: false
      type: object
      required:
        - code
        - reason
      properties:
        code:
          description: Voucher cannot be applied as the checkout is ineligible.
        reason:
          nullable: false
          description: |
            The reason why the voucher is not eligible to be applied.
            * `restaurant`: Voucher unavailable for orders to this restaurant.
            * `cuisine`: Voucher unavailable for orders of this cuisine.
            * `customer`: Voucher unavailable for this customer.
            * `location`: Voucher unavailable for this location.
            * `time`: Voucher unavailable for this time of the day.
            * `day`: Voucher unavailable for today.
            * `serviceType`: Voucher unavailable for this service type.
            * `platform`: Voucher unavailable for an order placed on the current platform e.g. Web, iOS, Android.
            * `minimumOrders`: Voucher unavailable unless minimum customer's order count is met.
            * `maximumOrders`: Voucher only available for customers who placed fewer orders.
            * `minimumOrderValueNotMet`: Voucher unavailable unless minimum order value not met.
            * `voucherBalanceNotMet`: Voucher unavailable unless basket total value is higher than voucher value.
          enum:
            - restaurant
            - cuisine
            - customer
            - location
            - time
            - day
            - serviceType
            - platform
            - minimumOrders
            - maximumOrders
            - minimumOrderValueNotMet
            - voucherBalanceNotMet
          type: string
        MinimumOrderValue:
          nullable: false
          description: The minimum amount the user needs to spend to become eligible for the voucher.
          type: integer
        DisplayText:
          nullable: true
          description: The text to display to the user.
          type: string
    CheckoutVouchersVoucherStatusRedeemed:
      allOf:
        - $ref: '#/components/schemas/CheckoutVouchersVoucherStatus'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Voucher has been already been redeemed.
    CheckoutVouchersVoucherStatusUnavailable:
      allOf:
        - $ref: '#/components/schemas/CheckoutVouchersVoucherStatus'
      additionalProperties: false
      type: object
      properties:
        code:
          description: Generic reason for when voucher is not available to apply at checkout.
    CheckoutVouchersVoucherStatusValid:
      allOf:
        - $ref: '#/components/schemas/CheckoutVouchersVoucherStatus'
        - required:
            - amount
            - details
      additionalProperties: false
      type: object
      properties:
        code:
          description: Voucher can be applied.
        name:
          type: string
          description: |
            The name of the voucher. This will only be set when the country is one of the following:
              - Austria (AT)
              - Belgium (BE)
              - Bulgaria (BG)
              - Denmark (DK)
              - Germany (DE)
              - Luxembourg (LU)
              - Netherlands (NL)
              - Poland (PL)
              - Slovakia (SK)
              - Switzerland (CH)
          minLength: 1
          maxLength: 50
          nullable: true
        amount:
          type: number
          format: integer
          description: The amount that will be redeemed from the voucher on completing this checkout as minor currency units.
          nullable: false
        details:
          type: object
          description: Details about the voucher.
          nullable: false
          oneOf:
            - required:
                - balance
            - required:
                - percentage
          properties:
            balance:
              type: object
              description: Details about the remaining balance available on the voucher.
              additionalProperties: false
              nullable: true
              properties:
                amount:
                  type: number
                  format: integer
                  description: The amount left to redeem on the voucher before this checkout is completed as minor currency units in ISO-4217 format.
                  nullable: false
              required:
                - amount
            percentage:
              type: object
              description: Details about the percentage applied for the voucher.
              additionalProperties: false
              nullable: true
              properties:
                percent:
                  type: number
                  format: double
                  description: The percentage applied for the voucher.
                  nullable: false
              required:
                - percent
    ClaimsauthenticitydataprojectionOrderDetailsResponse:
      type: object
      description: Represent the response object of a successful request for order details
      properties:
        customer:
          type: object
          description: Contains the IDs of the customer that created the order for easy lookup
          properties:
            globalCustomerId:
              type: string
              description: The Global Customer Id, if available
            localId:
              type: string
              description: The Customer Id for the local market, for backward compatibility with legacy JustEat/Legacy TA
            segment:
              type: string
              description: The customer's segment classification, if available
              enum:
                - none
                - goldProtect
                - silverProtect
        currency:
          type: string
          description: The currency in ISO-4217 format, if available
          pattern: ^[A-Z]{3}$
        partner:
          type: object
          description: Contains information about the partner associated with the order
          properties:
            id:
              type: string
              description: The unique identifier of the partner
            name:
              type: string
              description: The name of the partner
            deliveryModel:
              type: string
              description: The delivery model of the partner
              enum:
                - unknown
                - marketplace
                - rds
                - scoober
                - delco
              default: unknown
            brandName:
              type: string
              description: The brand name of the partner
            storeFrontType:
              type: string
              description: The store type of the partner
              enum:
                - unknown
                - restaurant
                - grocery
              default: unknown
          required:
            - id
            - name
        items:
          type: array
          description: List of items included in the order
          items:
            type: object
            description: An individual item in the order
            properties:
              id:
                type: string
                description: The unique identifier of the item
              productId:
                type: string
                description: The unique identifier of the product
              name:
                type: string
                description: The name of the item
              isRestricted:
                type: boolean
                description: Indicates whether the item is restricted
            required:
              - isRestricted
        placedDate:
          type: string
          format: date-time
          description: Indicates when the order was placed
        dueDate:
          type: string
          format: date-time
          description: Indicates when the order is due
        hasValidProofOfDelivery:
          type: boolean
          description: Indicates whether the order has valid proof of delivery
      example:
        customer:
          globalCustomerId: customer-global-id-guid
          localId: customer-lje-id
          segment: goldProtect
        currency: GBP
        partner:
          id: '255836'
          name: CSE Auto - Elliot's Questionable Burgers
          brandName: ASDA
          deliveryModel: marketplace
          storeFrontType: restaurant
        items:
          - id: i0-21532774
            productId: '21532774'
            name: 6 Chicken Strips
            isRestricted: false
          - id: i1-21532778
            productId: '21532778'
            name: Absinth
            isRestricted: true
        placedDate: '2025-10-24T13:40:30.1254484+00:00'
        dueDate: '2025-10-24T13:45:00+00:00'
        hasValidProofOfDelivery: true
    ClaimsauthenticitydataprojectionPartnerDisputeRateResponse:
      type: object
      description: Represents the response object containing partner dispute rate information
      properties:
        clawbackRate:
          type: number
          format: decimal
          description: The clawback rate for the partner
          minimum: 0
          maximum: 1
        disputeRate:
          type: number
          format: decimal
          description: The dispute rate for the partner
          minimum: 0
          maximum: 1
        clawbackThreshold:
          type: number
          format: decimal
          description: The clawback threshold value
          minimum: 0
          maximum: 1
        disputeThreshold:
          type: number
          format: decimal
          description: The dispute threshold value
          minimum: 0
          maximum: 1
        clawbackRuleGroup:
          type: string
          description: The clawback rule group category
          enum:
            - unknown
            - brandedMarketplace
            - defaultMarketplace
            - rds
        orderVolumeCategory:
          type: string
          description: The order volume category for the partner
          enum:
            - default
            - low
            - medium
            - high
            - veryHigh
      required:
        - clawbackRate
        - disputeRate
        - clawbackThreshold
        - disputeThreshold
        - clawbackRuleGroup
        - orderVolumeCategory
      example:
        clawbackRate: 0.498
        disputeRate: 0.677
        clawbackThreshold: 0.029
        disputeThreshold: 0.811
        clawbackRuleGroup: defaultMarketplace
        orderVolumeCategory: high
    ClaimsauthenticityserviceBadRequestResponsePayload:
      type: object
      description: Bad Response object returned in case of malformed requests
      properties:
        Errors:
          type: array
          items:
            type: object
            properties:
              PropertyName:
                description: Name of the property not correctly set
                type: string
              ErrorMessage:
                description: Description of what is wrong with the value sent to the server
                type: string
            required:
              - PropertyName
              - ErrorMessage
      required:
        - Errors
    ClaimsauthenticityserviceClaimRecommendationRequestPayload:
      type: object
      description: Represent the expected correct format of the request body
      properties:
        customerId:
          description: Id of the customer that placed the original order
          type: string
        orderId:
          type: string
          description: Id of the order against which a claim has been created
        queryId:
          type: string
          description: Id of the Compensation Query
        customerAccountType:
          type: string
          description: Customer Account Type
          enum:
            - default
            - guest
            - unknown
        queryType:
          type: string
          description: Describes the problem encountered by customers with the order
          enum:
            - missingItem
            - coldFood
            - damagedFood
            - incorrect
            - incorrectlyCooked
            - dietaryRequirementsNotMet
            - foreignObject
            - lateOrder
            - foodNotArrived
            - goodwillPayment
            - tip
            - inappropriateSubstitution
            - healthConcern
            - poorPresentation
            - disappointingTaste
            - orderNotDelivered
            - deliveryServiceIssue
            - alcoholOrderReturn
            - other
            - wrongOrder
            - returnedToStore
            - escalationQuery
            - escalationGoldSilverProtect
            - escalationPoorExperienceCustomerJourney
            - escalationGoodOrderToClaimRatio
            - escalationNoPhotoEvidenceEducationProvided
            - escalationUnhappyWithCredit
        refund:
          type: object
          $ref: '#/components/schemas/ClaimsauthenticityserviceRefund'
      required:
        - customerId
        - orderId
        - queryId
        - customerAccountType
      example:
        customerId: '99830526'
        orderId: fc1dxoyh2kinwd6p2rfalg
        queryId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
        customerAccountType: default
        queryType: damagedFood
        photoEvidence: []
        refund:
          amount: 10
          claim: full
          initiatedBy: customer
          items:
            - name: 12inch Pepperoni Pizza
              itemId: item_12345
              quantity: 1
              price: 10
              category: food
              photoEvidence:
                - url: https://example.com/photo1.jpg
                  description: Pizza box crushed
    ClaimsauthenticityserviceClaimRecommendationResponsePayload:
      type: object
      description: Represent the response object of a successful recommendation request
      properties:
        recommendationAction:
          type: string
          description: Recommendation on whether the customer should be refunded or not
          enum:
            - allow
            - manual
            - prevent
        signals:
          type: object
          description: The result of the many input signals considered when making recommendations
          properties:
            ravelinRecommendation:
              type: string
              description: Recommendation from Ravelin
              enum:
                - allow
                - manual
                - prevent
            customerSegment:
              type: string
              description: Customer segment classification
              enum:
                - unknown
                - none
                - goldProtect
                - silverProtect
            validProofOfDelivery:
              type: boolean
              description: Whether valid proof of delivery exists
            photoVerificationResult:
              type: object
              description: Results from photo verification process
              properties:
                photoVerificationRecommendationAction:
                  type: string
                  description: Recommendation action from photo verification
                  enum:
                    - allow
                    - manual
                    - prevent
                    - ignore
                claims:
                  type: array
                  description: List of claims from photo verification
                  items:
                    type: object
                    properties:
                      checks:
                        type: array
                        description: List of verification checks performed
                        items:
                          type: object
                          properties:
                            matches:
                              type: array
                              nullable: true
                              description: List of matches found during the check
                              items:
                                type: string
                            confidence:
                              type: number
                              description: Confidence score of the check
                              minimum: 0
                              maximum: 1
                            checkResult:
                              type: string
                              description: Result of the check
                              enum:
                                - pass
                                - fail
                                - inconclusive
                            checkType:
                              type: string
                              description: Type of check performed
                              enum:
                                - duplicatePhotoCheck
                                - aiGeneratedPhotoCheck
                                - googleReverseImageCheck
                                - aiPhotoCheck
                                - photoTimestampCheck
                                - screenshotPhotoCheck
                                - unknown
                            performedCheck:
                              nullable: true
                              type: string
                              description: When the Check Type is related to Artificial intelligence, this provides details of the performed check
                            justification:
                              nullable: true
                              type: string
                              description: Justification for the check result
                      comment:
                        type: string
                        description: Comment about the claim
                      reason:
                        type: string
                        description: Reason for the claim result
                      itemId:
                        type: string
                        description: Id of the item being verified
                      evidence:
                        type: array
                        description: Evidence supporting the claim
                        items:
                          type: string
      required:
        - recommendationAction
      example:
        recommendationAction: allow
        signals:
          ravelinRecommendation: allow
          customerSegment: none
          validProofOfDelivery: true
          photoVerificationResult:
            photoVerificationRecommendationAction: manual
            claims:
              - checks:
                  - matches: []
                    confidence: 1
                    checkResult: pass
                    checkType: duplicatePhotoCheck
                    performedCheck: null
                    justification: null
                  - matches: null
                    confidence: 1
                    checkResult: pass
                    checkType: aiGeneratedPhotoCheck
                    performedCheck: null
                    justification: null
                  - matches: null
                    confidence: 0
                    checkResult: inconclusive
                    checkType: aiPhotoCheck
                    performedCheck: claimRelevanceCheck
                    justification: AI photo check failed, manual review required.
                  - matches: []
                    confidence: 0
                    checkResult: inconclusive
                    checkType: googleReverseImageCheck
                    performedCheck: null
                    justification: null
                  - matches: null
                    confidence: 1
                    checkResult: pass
                    checkType: photoTimestampCheck
                    performedCheck: null
                    justification: The photo metadata timestamps are consistent with the order, and no anomalies were detected.
                  - matches: null
                    confidence: 1
                    checkResult: fail
                    checkType: screenshotPhotoCheck
                    performedCheck: null
                    justification: The image appears to be a screenshot. Screenshots may not accurately represent the original order issue.
                comment: Pizza box crushed
                reason: damaged
                itemId: item_12345
                evidence:
                  - https://example.com/photo1.jpg
    ClaimsauthenticityserviceDisputeRecommendationRequestPayload:
      type: object
      description: Represents the expected correct format of the request body
      properties:
        evidenceKeys:
          type: array
          items:
            type: string
            description: Links to photo evidence provided by partners for the current dispute request
      required:
        - evidenceKeys
      example:
        evidenceKeys:
          - https://example.com/photo1.jpg
    ClaimsauthenticityserviceDisputeRecommendationResponsePayload:
      type: object
      description: Represents the partner dispute recommendation issued for a specific Order Id and refund Query Id
      properties:
        recommendationAction:
          type: string
          description: Recommendation on whether the partner dispute should be accepted or not
          enum:
            - allow
            - manual
            - prevent
        signals:
          type: object
          description: The result of the many input signals considered when making recommendations
          properties:
            photoEvidenceValidated:
              type: object
              description: The recommendation for dispute resolution based on photo evidence
              properties:
                recommendationAction:
                  type: string
                  description: Recommendation on whether the partner dispute should be accepted or not for the parent signal
                  enum:
                    - allow
                    - manual
                    - prevent
                source:
                  type: string
                  description: The source of the recommendation for this signal
                  enum:
                    - automation
                    - agent
            partnerDisputeRates:
              type: object
              description: The recommendation for dispute resolution based on partner dispute rates
              properties:
                recommendation:
                  type: string
                  description: Recommendation on whether the partner dispute should be accepted or not for the partner dispute rates signal
                  enum:
                    - allow
                    - manual
                    - prevent
                clawbackRate:
                  type: number
                  format: double
                  description: The clawback rate for the partner
                  minimum: 0
                  maximum: 1
                disputeRate:
                  type: number
                  format: double
                  description: The dispute rate for the partner
                  minimum: 0
                  maximum: 1
      example:
        recommendationAction: allow
        signals:
          photoEvidenceValidated:
            recommendationAction: allow
            source: automation
          partnerDisputeRates:
            recommendation: allow
            clawbackRate: 0
            disputeRate: 0
    ClaimsauthenticityserviceItem:
      type: object
      description: Item information for which the refund is requested
      required:
        - name
        - price
        - quantity
      properties:
        name:
          type: string
          description: Name of the item for which the refund is requested
        itemId:
          type: string
          description: Id of the item for which the refund is requested
        price:
          type: number
          description: Price of the item for which the refund is requested
        quantity:
          type: number
          description: Number of this item that refund is requested
        category:
          type: string
          description: Category of the item that refund is requested
        photoEvidence:
          type: array
          description: Photo evidence related to the refund item
          items:
            type: object
            properties:
              url:
                type: string
                description: URL of the photo evidence
              description:
                type: string
                description: Description of the photo evidence
    ClaimsauthenticityserviceRefund:
      type: object
      description: Details of the refund requested by customer
      required:
        - amount
      properties:
        amount:
          type: number
          description: Amount that will be given back to the customer if the refund is issued
        claim:
          type: string
          description: Indicates whether the refund is full or partial
          enum:
            - full
            - partial
        items:
          type: array
          description: An array of the items of the refund, describing what items from the order customer is refunding
          items:
            $ref: '#/components/schemas/ClaimsauthenticityserviceItem'
        initiatedBy:
          type: string
          description: Indicates which actor has initiated the refund.
          enum:
            - customer
            - agent
        photoEvidence:
          type: array
          description: Photo evidence related to the refund item
          items:
            type: object
            properties:
              url:
                type: string
                description: URL of the photo evidence
              description:
                type: string
                description: Description of the photo evidence
    ClaimsauthphotoverificationAiGeneratedPhotoCheckResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - aiGeneratedPhotoCheck
        outcome:
          $ref: '#/components/schemas/ClaimsauthphotoverificationPhotoCheckOutcome'
        aiSoftwareAgent:
          type: string
          nullable: true
          description: The AI software agent detected (e.g., "ChatGPT")
      required:
        - type
        - outcome
    ClaimsauthphotoverificationAiPhotoCheckResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - aiPhotoCheck
        outcome:
          $ref: '#/components/schemas/ClaimsauthphotoverificationPhotoCheckOutcome'
        performedCheck:
          type: string
          description: The type of AI check performed
          enum:
            - claimRelevanceCheck
            - unknown
        confidence:
          type: number
          format: float
          minimum: 0
          maximum: 1
          description: The confidence of the check (0 is none, 1 is strongest)
        justification:
          type: string
          nullable: true
          description: The justification for the outcome provided
      required:
        - type
        - outcome
        - performedCheck
    ClaimsauthphotoverificationDuplicatePhotoCheckResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - duplicatePhotoCheck
        outcome:
          $ref: '#/components/schemas/ClaimsauthphotoverificationPhotoCheckOutcome'
        previousOrderIds:
          type: array
          description: List of order IDs where this photo was previously used
          items:
            type: string
      required:
        - type
        - outcome
        - previousOrderIds
    ClaimsauthphotoverificationGoogleReverseImageCheckResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - googleReverseImageCheck
        matches:
          type: array
          description: List of image URLs that match the submitted image
          items:
            type: string
        outcome:
          type: string
          description: The result of the reverse image check
          enum:
            - fullMatch
            - partialMatch
            - noMatch
            - unknown
        checkResult:
          type: string
          description: Provides the result for a reverse image check
          enum:
            - fail
            - pass
            - inconclusive
      required:
        - type
        - outcome
        - checkResult
    ClaimsauthphotoverificationPhotoCheckOutcome:
      type: string
      description: The recommended claim outcome for this image
      enum:
        - allow
        - prevent
        - manual
        - ignore
    ClaimsauthphotoverificationPhotoTimestampCheckResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - photoTimestampCheck
        outcome:
          $ref: '#/components/schemas/ClaimsauthphotoverificationPhotoCheckOutcome'
        pictureTimestamp:
          type: string
          format: date-time
          nullable: true
          description: The timestamp from the photo metadata
        photoTimestampsConsistent:
          type: boolean
          nullable: true
          description: Whether photo metadata timestamps are consistent
        photoTakenWithinGracePeriod:
          type: boolean
          nullable: true
          description: Whether photo was taken within acceptable grace period after order
      required:
        - type
        - outcome
    ClaimsauthphotoverificationPhotoVerificationClaimRequest:
      type: object
      description: List of items in claims, to be checked by this service
      required:
        - evidence
      properties:
        evidence:
          type: array
          items:
            type: string
          description: List of URLs that link to the image to be checked
        reason:
          type: string
          description: Indicates the mapped QueryType for this refund claim. Must be present for any strategy that relies on AI checks.
          enum:
            - unknown
            - incorrect
            - incorrectlyCooked
            - damaged
            - dietaryRequirementsNotMet
        comment:
          type: string
          description: The customer comment associated to this claim. Must be present for any strategy that relies on AI checks.
        itemName:
          type: string
          description: The name of the item being claimed
        itemId:
          type: string
          description: The ID of the item being claimed
    ClaimsauthphotoverificationPhotoVerificationPolymorphicResponse:
      type: object
      description: Represent the response object of a successful recommendation request
      properties:
        claims:
          type: array
          description: A list of the checks done per claim received in the request
          items:
            type: object
            properties:
              checks:
                type: array
                description: The number of fields in this object will depend on the check performed
                items:
                  oneOf:
                    - $ref: '#/components/schemas/ClaimsauthphotoverificationGoogleReverseImageCheckResponse'
                    - $ref: '#/components/schemas/ClaimsauthphotoverificationAiPhotoCheckResponse'
                    - $ref: '#/components/schemas/ClaimsauthphotoverificationDuplicatePhotoCheckResponse'
                    - $ref: '#/components/schemas/ClaimsauthphotoverificationAiGeneratedPhotoCheckResponse'
                    - $ref: '#/components/schemas/ClaimsauthphotoverificationPhotoTimestampCheckResponse'
                    - $ref: '#/components/schemas/ClaimsauthphotoverificationScreenshotPhotoCheckResponse'
                  discriminator:
                    propertyName: type
                    mapping:
                      googleReverseImageCheck: '#/components/schemas/ClaimsauthphotoverificationGoogleReverseImageCheckResponse'
                      aiPhotoCheck: '#/components/schemas/ClaimsauthphotoverificationAiPhotoCheckResponse'
                      duplicatePhotoCheck: '#/components/schemas/ClaimsauthphotoverificationDuplicatePhotoCheckResponse'
                      aiGeneratedPhotoCheck: '#/components/schemas/ClaimsauthphotoverificationAiGeneratedPhotoCheckResponse'
                      photoTimestampCheck: '#/components/schemas/ClaimsauthphotoverificationPhotoTimestampCheckResponse'
                      screenshotPhotoCheck: '#/components/schemas/ClaimsauthphotoverificationScreenshotPhotoCheckResponse'
              itemId:
                type: string
                description: The ID of the item for this claim.
              comment:
                type: string
                description: Comment provided by client for this claim
              evidence:
                type: array
                description: An array of url images to be validated
                items:
                  type: string
              reason:
                type: string
                description: Reason provided for this claim. Also known as Query Type in claims domain.
            required:
              - checks
              - itemId
              - comment
              - evidence
              - reason
      required:
        - claims
      example:
        claims:
          - checks:
              - type: googleReverseImageCheck
                matches:
                  - https://www.thetakeout.com/img/gallery/brilliant-mcdonalds-filet-o-fish-hacks-you-need-to-try/l-intro-1721667700.jpg
                outcome: fullMatch
                checkResult: fail
              - type: aiPhotoCheck
                outcome: manual
                performedCheck: claimRelevanceCheck
                confidence: 1
                justification: The itemName is 'Pizza', but the image clearly shows burgers and not pizza.
              - type: duplicatePhotoCheck
                outcome: allow
                previousOrderIds: []
              - type: aiGeneratedPhotoCheck
                outcome: allow
                aiSoftwareAgent: null
              - type: photoTimestampCheck
                outcome: allow
                pictureTimestamp: '2024-01-15T10:30:00Z'
                photoTimestampsConsistent: true
                photoTakenWithinGracePeriod: true
              - type: screenshotPhotoCheck
                outcome: prevent
            comment: Pizza box crushed
            reason: damaged
            itemId: '1234'
            evidence:
              - https://justeatukpoc.zendesk.com/sc/attachments/v2/01K9QHMXD9ZKZYA3BM67G4910E/img_8418.jpeg
    ClaimsauthphotoverificationPhotoVerificationRecommendationRequest:
      type: object
      description: Represent the expected correct format of the request body
      properties:
        orderId:
          description: Id of the order against which a claim has been created
          type: string
        queryId:
          type: string
          description: Id of the Compensation Query
        tenant:
          type: string
          description: The tenant this request originates from (UK, IE, ES, etc.)
        strategy:
          type: string
          description: toggles the strategy to be used for the Photo Evidence in this request. When omitted, `default` is used
          enum:
            - default
            - customerClaim
            - partnerDispute
            - wrongOrderPhotoChecksOnly
        claims:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/ClaimsauthphotoverificationPhotoVerificationClaimRequest'
      required:
        - orderId
        - queryId
        - tenant
        - claims
    ClaimsauthphotoverificationScreenshotPhotoCheckResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - screenshotPhotoCheck
        outcome:
          $ref: '#/components/schemas/ClaimsauthphotoverificationPhotoCheckOutcome'
      required:
        - type
        - outcome
    CloudinaryImageRenamedRequest:
      type: object
      example:
        notification_type: rename
        from_public_id: moderation/pending/uk/dishes/large-burger-with-cheese
        to_public_id: uk/dishes/large-burger-with-cheese
      properties:
        notification_type:
          description: Notification type of Cloudinary event.
          type: string
        from_public_id:
          description: The image public id before rename
          type: string
        to_public_id:
          description: The image public id after rename
          type: string
      nullable: false
    CommunicationPreferencesChannelSubscriptions:
      properties:
        subscribedChannels:
          items:
            $ref: '#/components/schemas/CommunicationPreferencesCommunicationChannels'
          description: The list of channels that the consumer should only be subscribed to.
          type: array
      type: object
    CommunicationPreferencesChannelSubscriptionsWithDerivedField:
      description: The marketing communication preferences.
      properties:
        subscribedChannels:
          items:
            $ref: '#/components/schemas/CommunicationPreferencesCommunicationChannels'
          description: The list of channels that are subscribed
          type: array
        isDefault:
          description: Are these channel subscriptions the default or have they been set elsewhere. This is a read-only derived field.
          type: boolean
        shouldPrompt:
          description: Whether the user should be prompted to set their communication preferences.
          type: boolean
      type: object
    CommunicationPreferencesCommunicationChannels:
      enum:
        - email
        - sms
        - push
        - externally-managed
      type: string
      description: The communication channel type
    CommunicationPreferencesCommunicationPreferences:
      properties:
        marketing:
          $ref: '#/components/schemas/CommunicationPreferencesChannelSubscriptionsWithDerivedField'
      type: object
    ConfigComparable:
      anyOf:
        - type: integer
        - $ref: '#/components/schemas/ConfigVersionNumber'
    ConfigCompositeFeatureValue:
      title: CompositeFeatureValue
      description: Composite of primitive FeatureValues
      type: object
      additionalProperties:
        anyOf:
          - type: string
          - type: boolean
          - type: integer
    ConfigConfig:
      additionalProperties: false
      type: object
      required:
        - createdAt
        - features
      properties:
        createdAt:
          description: The time the config file was created.
          format: date-time
          type: string
        features:
          description: The features defined for the scope this config file corresponds to.
          type: array
          items:
            additionalProperties: false
            type: object
            required:
              - key
              - valueType
              - defaultValueRules
            properties:
              key:
                description: The unique key of the feature.
                type: string
              valueType:
                description: The type of the value held by the feature.
                type: string
                enum:
                  - string
                  - bool
                  - int
                  - composite
              defaultValueRules:
                description: Default values in case nothing matches in evaluation.
                type: array
                items:
                  additionalProperties: false
                  type: object
                  required:
                    - restrictions
                    - value
                  properties:
                    restrictions:
                      $ref: '#/components/schemas/ConfigPredicate'
                    value:
                      allOf:
                        - description: Default value.
                        - $ref: '#/components/schemas/ConfigFeatureValue'
              evaluationLogic:
                additionalProperties: false
                description: Information required to evaluate the value.
                type: object
                required:
                  - type
                  - detail
                properties:
                  type:
                    description: The mechanism used for evaluation.
                    type: string
                    enum:
                      - IdHash
                  detail:
                    description: The details of the logic used to execute the evaluation mechanism.
                    oneOf:
                      - $ref: '#/components/schemas/ConfigIdHashEvaluationLogicDetail'
              tags:
                description: Tags to help categorise the feature.
                type: array
                items:
                  type: string
      example:
        createdAt: '2023-10-25T10:30:42.490Z'
        features:
          - key: ept-samples::composite_feature
            valueType: composite
            defaultValueRules:
              - restrictions:
                  property: Country
                  in:
                    - NL
                    - UK
                value:
                  beanThereDoneThat: true
                  legumeWeight: 7
                  chiliFactor: nuclear
              - restrictions: {}
                value:
                  beanThereDoneThat: false
                  legumeWeight: 10
                  chiliFactor: winter
            evaluationLogic:
              type: IdHash
              detail:
                bucketBy: AnonUserId
                prefix: some-prefix
                rules:
                  - restrictions:
                      or:
                        - property: Country
                          in:
                            - ES
                            - IT
                        - and:
                            - property: Country
                              in:
                                - UK
                                - AU
                            - property: AppVersion
                              gte: 31.9.2
                    audienceFraction: 0.5
                    variants:
                      - weight: 1
                        value: foo
                        experimentKey: WibbleExperiment
                        experimentVariant:
                          beanThereDoneThat: true
                          legumeWeight: 1
                          chiliFactor: death
                      - weight: 1
                        value: bar
                        experimentKey: WibbleExperiment
                        experimentVariant:
                          beanThereDoneThat: false
                          legumeWeight: 5
                          chiliFactor: jam
            tags:
              - tag-1
    ConfigEquatable:
      anyOf:
        - type: integer
        - type: boolean
        - type: string
    ConfigFeatureValue:
      anyOf:
        - type: integer
        - type: boolean
        - type: string
        - $ref: '#/components/schemas/ConfigCompositeFeatureValue'
    ConfigIdHashEvaluationLogicDetail:
      type: object
      required:
        - bucketBy
        - prefix
        - rules
      properties:
        bucketBy:
          description: The id to hash to evaluate the bucket.
          type: string
          enum:
            - AnonUserId
        prefix:
          description: The string to prepend to the id to evaluate the buckets.
          type: string
        rules:
          description: One or more set of variants, with different restrictions.
          type: array
          items:
            additionalProperties: false
            type: object
            required:
              - restrictions
              - audienceFraction
              - variants
            properties:
              restrictions:
                $ref: '#/components/schemas/ConfigPredicate'
              audienceFraction:
                description: Proportion of users to be evaluated.
                minimum: 0
                maximum: 1
                type: number
              variants:
                type: array
                items:
                  additionalProperties: false
                  type: object
                  required:
                    - weight
                    - value
                  properties:
                    weight:
                      description: The relative weight of this variant, for traffic allocation.
                      minimum: 0
                      type: integer
                    value:
                      allOf:
                        - description: Value to return.
                        - $ref: '#/components/schemas/ConfigFeatureValue'
                    experimentKey:
                      description: Experiment key to track, if not null.
                      nullable: true
                      type: string
                    experimentVariant:
                      description: Experiment variant name to track, if not null.
                      nullable: true
                      type: string
    ConfigPredicate:
      additionalProperties: false
      description: A logical statement that is affirmed or denied when a restriction is being evaluated.
      type: object
      properties:
        and:
          description: Everything in array must evaluate to true.
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/ConfigPredicate'
        or:
          description: Something in array must evaluate to true.
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/ConfigPredicate'
        eq:
          allOf:
            - description: Value must equal this.
            - $ref: '#/components/schemas/ConfigEquatable'
        neq:
          allOf:
            - description: Value must not equal this.
            - $ref: '#/components/schemas/ConfigEquatable'
        in:
          description: Value must be in this array.
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/ConfigEquatable'
        nin:
          description: Value must not be in this array.
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/ConfigEquatable'
        gt:
          allOf:
            - description: Value must be greater than this.
            - $ref: '#/components/schemas/ConfigComparable'
        gte:
          allOf:
            - description: Value must be greater than or equal to this.
            - $ref: '#/components/schemas/ConfigComparable'
        lt:
          allOf:
            - description: Value must be less than this.
            - $ref: '#/components/schemas/ConfigComparable'
        lte:
          allOf:
            - description: Value must be less than or equal to this.
            - $ref: '#/components/schemas/ConfigComparable'
        property:
          description: The property to compare against.
          type: string
          enum:
            - Country
            - AppVersion
    ConfigVersionNumber:
      description: Version number
      pattern: ^(0|[1-9]\d*)(\.(0|[1-9]\d*))*$
      type: string
    ConnectionStatusConnectionStatus:
      description: The current status of the requested partner connection
      type: string
      enum:
        - TransmissionMethodConnected
        - TransmissionMethodDisconnected
    ConnectionStatusConnectionStatusResponse:
      type: object
      description: The connection status of the requested partner connection
      properties:
        connectionStatus:
          $ref: '#/components/schemas/ConnectionStatusConnectionStatus'
      required:
        - connectionStatus
    ConnectionStatusIdentifiersAndConnectionStatusesResponse:
      type: object
      description: Key value map -| key is transmission method value is a list of objects with connection identifier and connection status fields
      additionalProperties:
        type: array
        items:
          type: object
          properties:
            identifier:
              description: The unique identifier within the transmission method of the connection
              type: string
            connectionStatus:
              $ref: '#/components/schemas/ConnectionStatusConnectionStatus'
    ConnectionserviceBulkDeleteResponse:
      description: Response body for the bulk delete courier connections operation.
      required:
        - result
      type: object
      properties:
        result:
          description: The status of the bulk delete operation.
          type: string
          allOf:
            - $ref: '#/components/schemas/ConnectionserviceStatus'
    ConnectionserviceConnectedCourier:
      description: Represents a courier connected to a restaurant.
      type: object
      properties:
        id:
          description: Unique identifier of the connected courier.
          type: string
          example: '12345'
          nullable: true
        hash:
          description: Hashed identifier of the connection.
          type: string
          example: a1b2c3d4e5f6
        email:
          description: Email address of the courier.
          type: string
          example: courier@example.com
        firstName:
          description: First name of the courier.
          type: string
          example: John
          nullable: true
        lastName:
          description: Last name of the courier.
          type: string
          example: Doe
          nullable: true
        dateAdded:
          description: Date and time when the courier was added.
          type: string
          allOf:
            - $ref: '#/components/schemas/ConnectionserviceOffsetDateTime'
          example: '2024-03-15T14:30:00Z'
        status:
          description: Current status of the connection.
          enum:
            - NOT_REGISTERED
            - INVITATION_SENT
            - CONNECTED
            - DISCONNECTED
            - DECLINED
            - PENDING_RESTAURANT_ACCEPTANCE
          type: string
    ConnectionserviceConnectedCourierGetResponse:
      type: object
      properties:
        id:
          description: Unique identifier of the courier.
          type: string
          example: '12345'
        hash:
          description: Hashed identifier of the courier.
          type: string
          example: a1b2c3d4e5f6
        email:
          description: Email address of the courier.
          type: string
          example: courier@example.com
        firstName:
          description: First name of the courier.
          type: string
          example: John
        lastName:
          description: Last name of the courier.
          type: string
          example: Doe
        status:
          description: Current status of the courier's connection.
          enum:
            - NOT_REGISTERED
            - INVITATION_SENT
            - CONNECTED
            - DISCONNECTED
            - DECLINED
            - PENDING_RESTAURANT_ACCEPTANCE
          type: string
        isVerified:
          description: True when the connection has been verified, false while it is awaiting restaurant verification. May be absent when the underlying flow is not active for the tenant.
          type: boolean
          nullable: true
        settings:
          $ref: '#/components/schemas/ConnectionserviceSettings'
        dateAdded:
          description: 'The date and time when the courier was added. Format: `yyyy-MM-dd''T''HH:mm:ssXXX`'
          type: string
          allOf:
            - $ref: '#/components/schemas/ConnectionserviceOffsetDateTime'
          example: '2024-03-15T14:30:00+00:00'
    ConnectionserviceConnectedCourierUpdateResponse:
      type: object
      properties:
        id:
          description: Unique identifier of the courier.
          type: string
          example: '12345'
        hash:
          description: Hashed identifier of the courier.
          type: string
          example: a1b2c3d4e5f6
        email:
          description: Email address of the courier.
          type: string
          example: courier@example.com
        firstName:
          description: First name of the courier.
          type: string
          example: John
        lastName:
          description: Last name of the courier.
          type: string
          example: Doe
        status:
          description: Current status of the courier's connection.
          enum:
            - NOT_REGISTERED
            - INVITATION_SENT
            - CONNECTED
            - DISCONNECTED
            - DECLINED
            - PENDING_RESTAURANT_ACCEPTANCE
          type: string
        dateAdded:
          description: 'The date and time when the courier was added. Format: `yyyy-MM-dd''T''HH:mm:ssXXX`'
          type: string
          allOf:
            - $ref: '#/components/schemas/ConnectionserviceOffsetDateTime'
          example: '2024-03-15T14:30:00+00:00'
    ConnectionserviceConnectedRestaurant:
      description: Represents a restaurant connected to a courier.
      type: object
      properties:
        id:
          description: Unique identifier of the restaurant
          type: string
          example: '98765'
        name:
          description: Name of the restaurant
          type: string
          example: Pizza Palace
        status:
          description: Current connection status between the courier and the restaurant
          enum:
            - INVITATION_PENDING
            - INVITATION_IGNORED
            - CONNECTED
            - DISCONNECTED
            - PENDING_RESTAURANT_ACCEPTANCE
          type: string
          nullable: true
    ConnectionserviceConnectionCode:
      description: Represents a restaurant connection code.
      type: object
      properties:
        connectionCode:
          description: Unique code to connect couriers to restaurant.
          type: string
          example: DE12345ABCDE
        countryCode:
          description: Country code, 2 symbols
          type: string
          example: DE
        restaurantId:
          description: Restaurant partner ID.
          type: string
          example: 123456abcd
        createdAt:
          description: Connection code generation time.
          type: string
          allOf:
            - $ref: '#/components/schemas/ConnectionserviceInstant'
          example: '2024-03-15T14:30:00Z'
    ConnectionserviceConnectionCodeResponse:
      type: object
      properties:
        connectionCode:
          type: string
        countryCode:
          type: string
        restaurantId:
          type: string
        createdAt:
          $ref: '#/components/schemas/ConnectionserviceInstant'
    ConnectionserviceCourierConnectionRequest:
      description: Request body for creating a courier-restaurant connection.
      required:
        - courierEmail
        - restaurantName
      type: object
      properties:
        courierEmail:
          description: Email of the courier initiating the connection.
          type: string
          example: courier@example.com
        restaurantName:
          description: Name of the restaurant the courier wants to connect with.
          pattern: \S
          type: string
          example: Pizza Palace
    ConnectionserviceCourierConnectionStatus:
      enum:
        - IGNORED
        - CONNECTED
        - DECLINED
      type: string
    ConnectionserviceCourierReactionRequest:
      description: Request body containing the courier's reaction to a connection request.
      required:
        - courierConnectionStatus
      type: object
      properties:
        courierConnectionStatus:
          description: The connection status that the courier is responding with.
          type: string
          allOf:
            - $ref: '#/components/schemas/ConnectionserviceCourierConnectionStatus'
    ConnectionserviceCreateConnectionRequest:
      description: Request body for creating a connection using a connection code.
      required:
        - connectionCode
      type: object
      properties:
        connectionCode:
          description: Connection code provided by the restaurant for establishing the connection.
          pattern: ^[A-Z]{2}[A-Z0-9]{10}$
          type: string
          example: DE123456789A
    ConnectionserviceInstant:
      format: date-time
      type: string
      example: '2022-03-10T16:15:50Z'
    ConnectionserviceOffsetDateTime:
      format: date-time
      type: string
      example: '2022-03-10T12:15:50-04:00'
    ConnectionserviceReinviteRequest:
      description: Request body for re-inviting a courier to connect to a restaurant.
      required:
        - courierEmail
      type: object
      properties:
        courierEmail:
          description: The email of the courier to re-invite.
          type: string
          example: courier@example.com
    ConnectionserviceRestaurantConnectionRequest:
      description: Request body to update the connection status between a restaurant and a courier.
      required:
        - courierId
        - restaurantConnectionStatus
      type: object
      properties:
        courierId:
          description: Unique identifier of the courier involved in the connection.
          pattern: \S
          type: string
          example: '12345'
        restaurantConnectionStatus:
          description: Status of the restaurant-courier connection.
          enum:
            - DISCONNECTED
            - DECLINED
            - ACCEPTED
          type: string
    ConnectionserviceRestaurantInfo:
      description: Represents the information of a restaurant.
      type: object
      properties:
        id:
          description: Unique identifier for the restaurant
          type: string
          example: '12345'
        name:
          description: Name of the restaurant
          type: string
          example: Pizza Hut
        logoUrl:
          description: URL of the restaurant's logo
          type: string
          example: https://example.com/logo.png
          nullable: true
        location:
          description: The location of the restaurant
          type: object
          allOf:
            - $ref: '#/components/schemas/ConnectionserviceRestaurantLocation'
        language:
          description: Language the restaurant operates in
          type: string
          example: en
        country:
          description: Country where the restaurant is located
          type: string
        isCourierPortalEnabled:
          description: Indicates if the courier portal is enabled for the restaurant
          type: boolean
    ConnectionserviceRestaurantLocation:
      type: object
      properties:
        lat:
          format: double
          description: The latitude coordinate of the restaurant's location.
          type: number
        lng:
          format: double
          description: The longitude coordinate of the restaurant's location.
          type: number
    ConnectionserviceRestaurantSettings:
      type: object
      properties:
        showTips:
          description: True if tips should be shown to couriers, false otherwise.
          type: boolean
    ConnectionserviceRestaurantSettingsChangeRequest:
      description: Request payload for changing restaurant settings.
      required:
        - showTips
      type: object
      properties:
        showTips:
          description: Indicates whether the restaurant should show tips to couriers.
          type: boolean
          example: true
    ConnectionserviceSettings:
      description: Connection settings
      type: object
      properties:
        showUnassignedOrders:
          description: Indicates whether unassigned orders are displayed.
          type: boolean
    ConnectionserviceSettingsChangeResponse:
      type: object
      properties:
        result:
          description: The status of the settings change, e.g., `SUCCESS`.
          type: string
          allOf:
            - $ref: '#/components/schemas/ConnectionserviceStatus1'
    ConnectionserviceSettingsChangeSkipResponse:
      description: This response is returned when the `CHANGE_RESTAURANT_SETTINGS_CONFIG_PROPERTY` feature flag is disabled
      enum:
        - SKIP
      type: string
    ConnectionserviceStatus:
      enum:
        - SUCCESS
      type: string
    ConnectionserviceStatus1:
      enum:
        - SUCCESS
      type: string
    ConnectionserviceUnassignedOrdersSettingChangeRequest:
      required:
        - isEnabled
        - courierId
      type: object
      properties:
        isEnabled:
          description: Indicates whether the unassigned orders setting is enabled.
          type: boolean
          example: true
        courierId:
          description: Unique identifier of the courier.
          type: string
          example: c12345
    ConsumerConsumerAddressResponse:
      type: object
      properties:
        AddressId:
          description: The consumer's unique address ID.
          type: number
          nullable: true
        City:
          description: The city where the consumer lives.
          type: string
          nullable: true
        ZipCode:
          description: The zip code of the consumer's address.
          type: string
          nullable: true
        AddressName:
          description: The name of the consumer's address.
          type: string
          nullable: true
        IsDefault:
          description: Indicates whether this is the consumer's default address.
          type: boolean
          nullable: true
        Line1:
          description: First line of the consumer's address.
          type: string
          nullable: true
        Line2:
          description: Second line of the consumer's address.
          type: string
          nullable: true
        Line3:
          description: Third line of the consumer's address.
          type: string
          nullable: true
    ConsumerConsumerAddressUpdateRequest:
      type: object
      description: Patch update the Consumer's address
      properties:
        Line1:
          description: The consumer's address - line 1.
          type: string
          nullable: true
        Line2:
          description: The consumer's address - line 2.
          type: string
          nullable: true
        Line3:
          description: The consumer's address - line 3.
          type: string
          nullable: true
        City:
          description: The consumer's address - City.
          type: string
          nullable: true
        ZipCode:
          description: The consumers address - Zip code.
          type: string
          nullable: true
      example:
        Line1: 4 Privet Drive
        Line2: Little Whinging
        Line3: null
        City: Surrey
        ZipCode: CR25ER
    ConsumerConsumerDetailsResponse:
      type: object
      properties:
        ConsumerId:
          description: The consumer id.
          type: number
        Id:
          description: The id.
          type: string
        CreatedDate:
          description: Date consumer was created.
          type: string
          nullable: true
        EmailAddress:
          description: The consumer's email address.
          type: string
        FirstName:
          description: The consumer's first name.
          type: string
        LastName:
          description: The consumer's last name.
          type: string
        PhoneNumber:
          description: The consumer's phone number.
          type: string
          nullable: true
        DateOfBirth:
          description: The consumer's date of birth.
          type: string
          nullable: true
        TermsAndConditionsId:
          description: The ID of the consumer's terms and conditions.
          type: number
          nullable: true
        WantsNewsletter:
          description: Whether the consumer wants a new letter or not.
          type: boolean
          nullable: true
        AccountType:
          description: The type of consumer account.
          type: string
          enum:
            - Default
            - Guest
          nullable: true
        ConsumerStatus:
          description: The status of the consumer
          type: string
          enum:
            - Undefined
            - NewConsumer
            - ReturnConsumer
          nullable: true
      required:
        - ConsumerId
        - EmailAddress
        - FirstName
        - LastName
    ConsumerConsumerDetailsUpdateRequest:
      type: object
      description: Patch updated the Consumer's details
      properties:
        FirstName:
          description: The consumer's first name.
          type: string
          nullable: true
        LastName:
          description: The consumer's last name.
          type: string
          nullable: true
        Address:
          description: The consumer's address.
          $ref: '#/components/schemas/ConsumerConsumerAddressUpdateRequest'
          nullable: true
        PhoneNumber:
          description: The consumer's phone number.
          type: string
          nullable: true
      example:
        FirstName: harry
        LastName: Potter
        Address:
          Line1: 4 Privet Drive
          Line2: Little Whinging
          Line3: null
          City: Surrey
          ZipCode: CR25ER
        PhoneNumber: '+441234567890'
    ConsumerConsumerDetailsUpdateResponse:
      type: object
    ConsumerConsumerPreference:
      type: object
      description: Consumer preferences by type.
      properties:
        Key:
          description: The key of the preference type.
          type: string
        Push:
          description: The consumer's push preference status.
          type: boolean
        Email:
          description: The consumer's email preference status.
          type: boolean
        Sms:
          description: The consumer's sms preference status.
          type: boolean
      required:
        - Key
        - Push
        - Email
        - Sms
    ConsumerConsumerPreferencesResponse:
      type: object
      description: A list of consumer preferences by type.
      properties:
        Preferences:
          description: A list of consumer preferences.
          items:
            $ref: '#/components/schemas/ConsumerDisplayConsumerPreference'
          type: array
        PreferenceVersionViewed:
          description: Version of the consumer preferences being viewed.
          type: number
      required:
        - Preferences
        - PreferenceVersionViewed
    ConsumerConsumerPreferencesUpdateRequest:
      type: object
      properties:
        Preferences:
          description: An array of consumer preferences.
          items:
            $ref: '#/components/schemas/ConsumerConsumerPreference'
          type: array
        DeviceToken:
          description: The token for the consumer's device.
          type: string
          nullable: true
        DeviceType:
          description: The type of the consumer's device.
          type: string
          nullable: true
        EmailAddress:
          description: The consumer email address.
          type: string
          nullable: true
        PhoneNumber:
          description: The consumer phone number.
          type: string
          nullable: true
        PreferenceVersionViewed:
          description: Version of the consumer preferences being viewed.
          type: number
      required:
        - Preferences
        - PreferenceVersionViewed
      example:
        Preferences:
          - DisplayName: Newsletter
            Sort: 0
            Key: newsletter
            Push: false
            Email: true
            Sms: true
        DeviceToken: Browser
        DeviceType: Browser
        PhoneNumber: '+441234567890'
        PreferenceVersionViewed: 0
    ConsumerConsumerPreferencesUpdateResponse:
      type: object
    ConsumerDisplayConsumerPreference:
      type: object
      description: How a consumer's preference should be displayed.
      properties:
        allOf:
          $ref: '#/components/schemas/ConsumerConsumerPreference'
        DisplayName:
          description: The consumer preference display name.
          type: string
        Sort:
          description: The sort number for the consumer preference.
          type: number
          nullable: true
      required:
        - DisplayName
    ConsumerIntConsumerAddress:
      type: object
      description: Details of a consumer's address
      properties:
        City:
          description: The city where the consumer lives.
          type: string
          nullable: true
        ZipCode:
          description: The zip code of the consumer's address.
          type: string
          nullable: true
        AddressName:
          description: The name of the consumer's address.
          type: string
          nullable: true
        Line1:
          description: First line of the consumer's address.
          type: string
          nullable: true
        Line2:
          description: Second line of the consumer's address.
          type: string
          nullable: true
        Line3:
          description: Third line of the consumer's address.
          type: string
          nullable: true
        Line4:
          description: Fourth line of the consumer's address.
          type: string
          nullable: true
        AdditionalInformation:
          type: object
          description: |
            Additional information about the address.
            This is only supported in the following countries:
              - Austria (AT)
              - Germany (DE)
          nullable: true
          additionalProperties: false
          properties:
            entrance:
              type: string
              description: Entrance/access point to the building.
              minLength: 1
              maxLength: 50
              nullable: true
            floor:
              type: string
              description: Floor/level of the building.
              minLength: 1
              maxLength: 50
              nullable: true
            door:
              type: string
              description: Door to the building.
              minLength: 1
              maxLength: 50
              nullable: true
            companyName:
              type: string
              description: Name of the company at the address.
              minLength: 1
              maxLength: 50
              nullable: true
            block:
              type: string
              description: Block of the address.
              minLength: 1
              maxLength: 50
              nullable: true
            flatNumber:
              type: string
              description: Flat number of the address.
              minLength: 1
              maxLength: 50
              nullable: true
            intercom:
              type: string
              description: Intercom to the address.
              minLength: 1
              maxLength: 50
              nullable: true
            apartmentName:
              type: string
              description: Name of the apartment at the address.
              minLength: 1
              maxLength: 50
              nullable: true
            accessCode:
              type: string
              description: Access code of the address.
              minLength: 1
              maxLength: 50
              nullable: true
    ConsumerIntConsumerAddressCreatedResponse:
      type: object
      description: Details of the address that has been added
      properties:
        AddressId:
          description: The consumer's unique address ID.
          type: number
          nullable: true
    ConsumerIntConsumerAddressNotFoundSchema:
      description: A HTTP 404 error response
      type: object
      properties:
        message:
          description: Details of what is not found.
          type: string
    ConsumerIntConsumerAddressWithId:
      type: object
      description: Details of an identifiable consumer's address
      properties:
        AddressId:
          description: The consumer's unique address ID.
          type: number
          nullable: true
        City:
          description: The city where the consumer lives.
          type: string
          nullable: true
        ZipCode:
          description: The zip code of the consumer's address.
          type: string
          nullable: true
        AddressName:
          description: The name of the consumer's address.
          type: string
          nullable: true
        Line1:
          description: First line of the consumer's address.
          type: string
          nullable: true
        Line2:
          description: Second line of the consumer's address.
          type: string
          nullable: true
        Line3:
          description: Third line of the consumer's address.
          type: string
          nullable: true
        Line4:
          description: Fourth line of the consumer's address.
          type: string
          nullable: true
        AdditionalInformation:
          type: object
          description: |
            Additional information about the address.
            This is only supported in the following countries:
              - Austria (AT)
              - Germany (DE)
          nullable: true
          additionalProperties: false
          properties:
            entrance:
              type: string
              description: Entrance/access point to the building.
              minLength: 1
              maxLength: 50
              nullable: true
            floor:
              type: string
              description: Floor/level of the building.
              minLength: 1
              maxLength: 50
              nullable: true
            door:
              type: string
              description: Door to the building.
              minLength: 1
              maxLength: 50
              nullable: true
            companyName:
              type: string
              description: Name of the company at the address.
              minLength: 1
              maxLength: 50
              nullable: true
            block:
              type: string
              description: Block of the address.
              minLength: 1
              maxLength: 50
              nullable: true
            flatNumber:
              type: string
              description: Flat number of the address.
              minLength: 1
              maxLength: 50
              nullable: true
            intercom:
              type: string
              description: Intercom to the address.
              minLength: 1
              maxLength: 50
              nullable: true
            apartmentName:
              type: string
              description: Name of the apartment at the address.
              minLength: 1
              maxLength: 50
              nullable: true
            accessCode:
              type: string
              description: Access code of the address.
              minLength: 1
              maxLength: 50
              nullable: true
        Geolocation:
          type: object
          description: |
            Geolocation information about the address.
            This is only supported at the legacy Takeaway tenants:
              - Austria (AT)
              - Belgium (BE)
              - Bulgaria (BG)
              - Switzerland (CH)
              - Germany (DE)
              - Denmark (DK)
              - France (FR)
              - Luxembourg (LU)
              - Netherlands (NL)
              - Poland (PL)
              - Slovakia (SK)
          nullable: true
          additionalProperties: false
          properties:
            latitude:
              type: number
              format: double
              description: Latitude of the address.
              nullable: true
            longitude:
              type: number
              format: double
              description: Longitude of the address.
              nullable: true
            googlePlaceId:
              type: string
              description: Google location identifier returned from their API
              minLength: 1
              maxLength: 50
              nullable: true
    ConsumerIntConsumerAddressesResponse:
      type: object
      description: Details of a consumer's address
      properties:
        Addresses:
          type: array
          minItems: 0
          items:
            nullable: false
            description: Represents one of the consumer's addresses address.
            $ref: '#/components/schemas/ConsumerIntConsumerAddressWithId'
          description: One of the consumer's addresses.
          nullable: false
        DefaultAddress:
          description: The Address Id of the customer's default address.
          type: number
    ConsumerIntConsumerDetailsResponse:
      type: object
      properties:
        Email:
          description: The consumer's email address.
          type: string
        Name:
          description: The consumer's full name.
          type: string
        PhoneNumber:
          description: The consumer's phone number.
          type: string
          nullable: true
        CanChangePhoneNumber:
          description: Whether the consumer is allowed to update their phone number.
          type: boolean
        WantsNewsletter:
          description: Whether the consumer wants the newsletter or not.
          type: boolean
          nullable: true
        PreferredLanguage:
          description: What language the consumer has selected, if applicable.
          type: string
          nullable: true
        CreatedDate:
          description: Date the consumer was created.
          type: string
          nullable: true
        ConsumerStatus:
          description: The status of the consumer.
          type: string
          enum:
            - Undefined
            - NewConsumer
            - ReturnConsumer
          nullable: true
      required:
        - Email
        - Name
        - CanChangePhoneNumber
        - ConsumerStatus
    ConsumerIntConsumerPreferencesError:
      type: object
      properties:
        type:
          description: A URI reference that identifies the problem type
          type: string
        title:
          description: A consistent, human-readable summary of the problem
          type: string
        status:
          description: The HTTP status code
          type: number
        detail:
          description: More details about the error that occurred
          type: string
    ConsumerIntConsumerPreferencesResponse:
      type: object
      properties:
        transactional:
          description: Transactional consumer preferences
          type: object
          properties:
            channel:
              description: Consumer preferences for channel of communication
              type: object
              properties:
                sms:
                  description: Through SMS
                  type: boolean
                push:
                  description: Through push notifications
                  type: boolean
                email:
                  description: Through email
                  type: boolean
            notification:
              description: Consumer preferences for notification
              type: object
              properties:
                orderOutcome:
                  description: Order outcome
                  type: boolean
                onItsWay:
                  description: Order on it's way
                  type: boolean
                anotherReason:
                  description: Order outcome - Another reason
                  type: boolean
                rateYourMeal:
                  description: Rate your meal
                  type: boolean
        marketing:
          description: Consumer marketing preferences
          type: object
          properties:
            channel:
              description: Consumer marketing preferences for channel of communication
              type: object
              properties:
                sms:
                  description: Through SMS
                  type: boolean
                push:
                  description: Through Push notification
                  type: boolean
                email:
                  description: Through email
                  type: boolean
      example:
        transactional:
          channel:
            email: true
            push: false
            sms: false
          notification:
            orderOutcome: true
            onItsWay: true
            anotherReason: true
            rateYourMeal: true
        marketing:
          channel:
            email: true
            push: false
            sms: false
    ConsumerIntUpdateConsumerDetailsRequest:
      type: object
      properties:
        Email:
          description: An updated email address for the consumer.
          type: string
          nullable: true
        Name:
          description: An updated name value for the consumer.
          type: string
          nullable: true
        PhoneNumber:
          description: An updated phone number for the consumer.
          type: string
          nullable: true
        WantsNewsletter:
          description: An updated value for the "Wants Newsletter" property.
          type: boolean
          nullable: true
        PreferredLanguage:
          description: An updated preferred language for the consumer.
          type: string
          nullable: true
    ConsumerIntUpdateConsumerDetailsResponse:
      type: object
      required:
        - ShouldRefreshToken
      properties:
        ShouldRefreshToken:
          description: Whether the client should refresh the consumer's access token after the update operation has completed.
          type: boolean
          nullable: false
        Errors:
          description: A collection of errors that occurred when attempting to update the consumer.
          type: array
          nullable: true
          items:
            description: Encapsulates an error that occurred when attempting to update the consumer property.
            type: object
            properties:
              Property:
                description: Property the error relates to.
                nullable: false
                type: string
              Status:
                description: Status code returned when attempting to update property.
                nullable: false
                type: number
              Message:
                description: Human-readable reason why property couldn't be updated.
                nullable: false
                type: string
    ConsumerUkConsumerAddressWithId:
      type: object
      description: Details of an identifiable consumer's address
      properties:
        AddressId:
          description: The consumer's unique address ID.
          type: number
          nullable: true
        City:
          description: The city where the consumer lives.
          type: string
          nullable: true
        ZipCode:
          description: The zip code of the consumer's address.
          type: string
          nullable: true
        AddressName:
          description: The name of the consumer's address.
          type: string
          nullable: true
        Line1:
          description: First line of the consumer's address.
          type: string
          nullable: true
        Line2:
          description: Second line of the consumer's address.
          type: string
          nullable: true
        Line3:
          description: Third line of the consumer's address.
          type: string
          nullable: true
        Line4:
          description: Fourth line of the consumer's address.
          type: string
          nullable: true
    ConsumerUkConsumerAddressesResponse:
      type: object
      description: Details of a consumer's address
      properties:
        Addresses:
          type: array
          minItems: 0
          description: Represents the collection of consumer addresses.
          nullable: false
          items:
            nullable: false
            description: Represents a consumer's address.
            $ref: '#/components/schemas/ConsumerUkConsumerAddressWithId'
        DefaultAddress:
          description: The Id of the consumer's default address.
          type: number
    ConsumerUkConsumerDetailsResponse:
      type: object
      properties:
        Email:
          description: The consumer's email address.
          type: string
        Name:
          description: The consumer's full name.
          type: string
        PhoneNumber:
          description: The consumer's phone number.
          type: string
          nullable: true
        CanChangePhoneNumber:
          description: Whether the consumer is allowed to update their phone number.
          type: boolean
        ConsumerStatus:
          description: The status of the consumer.
          type: string
          enum:
            - Undefined
            - NewConsumer
            - ReturnConsumer
          nullable: true
      required:
        - Email
        - Name
        - CanChangePhoneNumber
        - ConsumerStatus
    ConsumerUkUpdateConsumerDetailsRequest:
      type: object
      properties:
        Email:
          description: An updated email address for the consumer.
          type: string
          nullable: true
        Name:
          description: An updated name for the consumer.
          type: string
          nullable: true
        PhoneNumber:
          description: An updated phone number for the consumer.
          type: string
          nullable: true
    ConsumerUkUpdateConsumerDetailsResponse:
      type: object
      required:
        - ShouldRefreshToken
      properties:
        ShouldRefreshToken:
          description: Whether the client should refresh the consumer's access token after the update operation has completed.
          type: boolean
          nullable: false
    ConsumerhelpBadItemIssueSelectionStep:
      allOf:
        - $ref: '#/components/schemas/ConsumerhelpFlowStepBase'
        - properties:
            leaveReviewAction:
              description: Action to leave a review
              $ref: '#/components/schemas/ConsumerhelpHelpAction'
            actions:
              items:
                $ref: '#/components/schemas/ConsumerhelpHelpAction'
              description: Array of actions (i.e. buttons)
              type: array
            header:
              description: Display header
              type: string
            foodSafetyAction:
              description: Action that opens Food Safety info
              $ref: '#/components/schemas/ConsumerhelpHelpAction'
            issueOptionActions:
              items:
                description: Array of items to choose
                $ref: '#/components/schemas/ConsumerhelpHelpAction'
              description: Array of actions that select the issue
              type: array
            body:
              items:
                type: string
              description: Array of paragraphs for body text
              type: array
          type: object
      description: Flow step used for selecting the issue (e.g. missing / cold) when complaining about order items
      type: object
    ConsumerhelpCustomisationResponse:
      properties:
        experimentEvents:
          items:
            $ref: '#/components/schemas/ConsumerhelpExperimentEvent'
          description: list of experiments running for this client
          type: array
        helpSessionId:
          description: Unique id for this help session
          type: string
        personalisation:
          description: Personalisation details
          properties:
            topLevelActions:
              items:
                $ref: '#/components/schemas/ConsumerhelpHelpAction'
              description: Top-level actions not necessarily pertaining to the order
              type: array
            callRestaurantAction:
              $ref: '#/components/schemas/ConsumerhelpHelpAction'
            dataLayer:
              type: object
              description: Key/values to be passed to analytics
              additionalProperties: true
            orderActions:
              items:
                $ref: '#/components/schemas/ConsumerhelpHelpAction'
              description: Actions pertaining to the order
              type: array
          type: object
        config:
          description: Config for the event
          properties:
            personalisedHelpEnabled:
              description: Should we show Personalised Help
              type: boolean
            liveChatEnabled:
              description: Should we enable Live Chat
              type: boolean
          type: object
      type: object
      description: Information about initial options to show to user
      example:
        helpSessionId: helpsessionid
        config:
          personalisedHelpEnabled: true
          liveChatEnabled: true
        personalisation:
          callRestaurantAction:
            title: Call the restaurant
            postText: []
            preText: []
            buttonType: Primary
            department: LiveChat
            notes: note
            id: CallRestaurant
            type: Call
            action: '+441234567890'
            buttonEvent:
              category: engagement
              action: click_call_restaurant
              label: call restaurant
              value: 0
            data: {}
          orderActions:
            - title: I want to cancel my order
              postText: []
              preText: []
              buttonType: Secondary
              department: LiveChat
              notes: note
              id: Cancel
              type: ChapiGet
              action: /applications/consumerhelp/flows/cancellation/uk/orderid/start
              buttonEvent:
                category: engagement
                action: click_cancel_order
                label: helpflow
                value: 0
              data: {}
            - title: I'm unhappy with my order
              postText: []
              preText: []
              buttonType: Secondary
              department: LiveChat
              notes: note
              id: BadItem
              type: ChapiGet
              action: /applications/consumerhelp/flows/baditems/uk/orderid/start
              buttonEvent:
                category: engagement
                action: click_bad_item
                label: helpflow
                value: 0
              data: {}
        dataLayer:
          helpData_helpSessionId: helpsessionid
          helpData_isPilot: 32
          helpData_features: o:cancel_order|o:bad_item|o:call_restaurant|t:open_chatbot|t:email_justeat|t:call_justeat
          transactionData_orderStatus: Accepted
          transactionData_newTransactionId: orderid
          transactionData_nTotalItems: 0
          transactionData_dateDiff: -1800
          transactionData_orderDelay: null
          trData_trId: null
          trData_menuType: collection
        topLevelActions:
          - title: Chat to us
            postText: []
            preText: []
            buttonType: Primary
            department: LiveChat
            notes: note
            id: StartChatBot
            type: Chatbot
            action: null
            buttonEvent:
              category: engagement
              action: click_open_chatbot
              label: open chatbot
              value: 0
            data: {}
          - title: Email our happy helpers
            postText: []
            preText: []
            buttonType: Secondary
            department: LiveChat
            notes: note
            id: EmailJustEat
            type: Email
            action: info@just-eat.co.uk
            buttonEvent:
              category: engagement
              action: click_email_justeat
              label: email justeat
              value: 0
            data: {}
          - title: Phone a human
            postText: []
            preText: []
            buttonType: Secondary
            department: LiveChat
            notes: note
            id: PhoneJustEat
            type: Call
            action: 0344 243 7777
            buttonEvent:
              category: engagement
              action: click_call_justeat
              label: call justeat
              value: 0
            data: {}
        experimentEvents:
          - id: EX-1742
            name: bandit_exp_new_carousels_2
            parentId: '1234567890'
            platform: optimizely_fullstack
            version: '1'
            variantName: variant_d
    ConsumerhelpCustomisationResponseWeb:
      properties:
        user:
          properties:
            isLoggedIn:
              description: Is the user currently logged in?
              type: boolean
            name:
              description: The user's name
              type: string
          description: The current user
          type: object
        config:
          properties:
            personalisedHelpEnabled:
              description: Should we show Personalised Help
              type: boolean
            liveChatEnabled:
              description: Should we enable Live Chat
              type: boolean
          description: General config / feature toggles
          type: object
        helpSessionId:
          description: Unique id for this help session
          type: string
        restaurant:
          properties:
            telephone:
              description: Restaurant's telephone number
              type: string
            name:
              description: Name of the restaurant
              type: string
            thumbnail:
              description: URI for the restaurant's thumbnail image
              type: string
          description: The restaurant of the most recent or specified order
          type: object
        personalisation:
          properties:
            topLevelActions:
              items:
                $ref: '#/components/schemas/ConsumerhelpHelpAction'
              description: Top-level actions not necessarily pertaining to the order
              type: array
            callRestaurantAction:
              description: Action to call the restaurant, if possible at this time
              $ref: '#/components/schemas/ConsumerhelpHelpAction'
            dataLayer:
              type: object
              description: Key/values to be passed to analytics
              additionalProperties: true
            orderActions:
              items:
                $ref: '#/components/schemas/ConsumerhelpHelpAction'
              description: Actions pertaining to the order
              type: array
          description: The actions that are relevant to this customer / order
          type: object
        order:
          properties:
            status:
              properties:
                preamble:
                  description: Friendly 'preamble' text to display to the customer
                  type: string
                isFinishedWithNegativeOutcome:
                  description: Is this order in a final, unhappy (e.g. Cancelled) state?
                  type: boolean
                isActive:
                  description: Is this an active order?
                  type: boolean
                preAcceptance:
                  description: Is this order still awaiting acceptance from a restaurant?
                  type: boolean
                isFinishedWithPositiveOutcome:
                  description: Is this order in a final, happy, state?
                  type: boolean
                dateText:
                  description: The date / time to display to the customer
                  type: string
                isForDelivery:
                  description: Is this a delivery order (as opposed to collection)?
                  type: boolean
                value:
                  description: The consumer status of the order
                  type: string
                statusText:
                  description: Friendly text to display to the customer
                  type: string
              description: Information related to the status of the order
              type: object
            friendlyReference:
              description: Friendly order id.  Usually numeric
              type: string
            id:
              description: Alphanumeric order id
              type: string
          description: The customer's most recent or specified order
          type: object
      type: object
      description: Information about initial options to show to user
      example:
        helpSessionId: helpsessionid
        config:
          personalisedHelpEnabled: true
          liveChatEnabled: true
        personalisation:
          callRestaurantAction:
            title: Call the restaurant
            postText: []
            preText: []
            buttonType: Primary
            department: LiveChat
            notes: note
            id: CallRestaurant
            type: Call
            action: '+441234567890'
            buttonEvent:
              category: engagement
              action: click_call_restaurant
              label: call restaurant
              value: 0
            data: {}
          orderActions:
            - title: I want to cancel my order
              postText: []
              preText: []
              buttonType: Secondary
              department: LiveChat
              notes: note
              id: Cancel
              type: ChapiGet
              action: /applications/consumerhelp/flows/cancellation/uk/orderid/start
              buttonEvent:
                category: engagement
                action: click_cancel_order
                label: helpflow
                value: 0
              data: {}
            - title: I'm unhappy with my order
              postText: []
              preText: []
              buttonType: Secondary
              department: LiveChat
              notes: note
              id: BadItem
              type: ChapiGet
              action: /applications/consumerhelp/flows/baditems/uk/orderid/start
              buttonEvent:
                category: engagement
                action: click_bad_item
                label: helpflow
                value: 0
              data: {}
        dataLayer:
          helpData_helpSessionId: helpsessionid
          helpData_isPilot: 32
          helpData_features: o:cancel_order|o:bad_item|o:call_restaurant|t:open_chatbot|t:email_justeat|t:call_justeat
          transactionData_orderStatus: Accepted
          transactionData_newTransactionId: orderid
          transactionData_nTotalItems: 0
          transactionData_dateDiff: -1800
          transactionData_orderDelay: null
          trData_trId: null
          trData_menuType: collection
        topLevelActions:
          - title: Chat to us
            postText: []
            preText: []
            buttonType: Primary
            department: LiveChat
            notes: note
            id: StartChatBot
            type: Chatbot
            action: Chat
            buttonEvent:
              category: engagement
              action: click_open_chatbot
              label: null
              value: null
            data: null
          - title: Email our happy helpers
            postText: []
            preText: []
            buttonType: Secondary
            department: LiveChat
            notes: note
            id: EmailJustEat
            type: Email
            action: info@just-eat.co.uk
            buttonEvent:
              category: engagement
              action: click_email_justeat
              label: null
              value: null
            data: null
          - title: Phone a human
            postText: []
            preText: []
            buttonType: Secondary
            department: LiveChat
            notes: note
            id: PhoneJustEat
            type: Call
            action: 0344 243 7777
            buttonEvent:
              category: engagement
              action: click_call_justeat
              label: null
              value: null
            data: null
        order:
          id: alphanumericid
          friendlyReference: '1234567890'
          status:
            value: Accepted
            statusText: The restaurant has confirmed the delivery time. The countdown to your first bite has begun...
            preamble: Delivering around
            dateText: '11:48'
            isActive: true
            isFinishedWithPositiveOutcome: false
            isFinishedWithNegativeOutcome: false
            preAcceptance: false
            isForDelivery: true
        restaurant:
          name: Bob's kebabs
          thumbnail: https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTRnTQ8sfP8yxicqMBoAymdKzrpjhtwSeCIXdpqhZ7Hrj8FLBfB
          telephone: +44 1234 123123
        user:
          name: John
          isLoggedIn: true
    ConsumerhelpExperimentEvent:
      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:
        name:
          description: A name that describes the experiment
          type: string
        platform:
          description: The platform where the experiment comes from
          type: string
        version:
          description: The version of the running experiment
          type: string
        id:
          description: Unique but meaningful id for the experiment
          type: string
        parentId:
          description: The parent experiment id of the current experiment
          type: string
        variantName:
          description: The name of the variant the user is bucketed into
          type: string
      type: object
    ConsumerhelpFlowResponse:
      properties:
        stepResponse:
          properties:
            data:
              $ref: '#/components/schemas/ConsumerhelpFlowStep'
            type:
              enum:
                - TextAndActions
                - ItemSelection
                - BadItemIssueSelection
                - RequestCsat
                - LateOrderUpdateReceived
              type: string
              description: The type of the flow
          type: object
          description: The step response
        modals:
          type: object
          description: Dictionary of strings to `FlowStepResponses`
          additionalProperties:
            $ref: '#/components/schemas/ConsumerhelpFlowStep'
      type: object
      example:
        stepResponse:
          data:
            title: Cancel order
            actions:
              - title: Cancel order - pay £5.50
                department: LiveChat
                postText: []
                id: ConfirmCancel
                type: ChapiPost
                notes: null
                buttonEvent:
                  value: 550
                  category: engagement
                  action: form_cancel_order
                  label: confirm_charged
                preText: []
                action: /uk/flows/cancellation/1234/confirm?reasonCode=cust_cancelled_changed_mind&flowId=XXX
                buttonType: Primary
                data: null
              - title: Keep my order
                department: LiveChat
                postText: []
                id: EndFlow
                type: EndFlow
                notes: null
                buttonEvent:
                  value: 0
                  category: engagement
                  action: form_cancel_order
                  label: close
                preText: []
                action: null
                buttonType: Secondary
                data: {}
            iconType: null
            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?
          closeButton:
            notes: note
            department: LiveChat
            buttonType: CloseButton
            type: EndFlow
            preText: []
            buttonEvent:
              value: 0
              category: engagement
              action: form_cancel_order
              label: close
            postText: []
            data: {}
            action: /uk/flows/close
            id: EndFlow
            title: Close
            event:
              dataLayer:
                transactionData_dateDiff: -3600
                screenName: /cancel-order/self-cancel-charged
                transactionData_delay: -1800
          type: TextAndActions
        modals: {}
    ConsumerhelpFlowStep:
      description: The possible steps that can be returned as part of flows
      oneOf:
        - $ref: '#/components/schemas/ConsumerhelpTextAndActionsStep'
        - $ref: '#/components/schemas/ConsumerhelpItemSelectionStep'
        - $ref: '#/components/schemas/ConsumerhelpBadItemIssueSelectionStep'
        - $ref: '#/components/schemas/ConsumerhelpRequestCsatStep'
        - $ref: '#/components/schemas/ConsumerhelpLateOrderUpdateReceivedStep'
    ConsumerhelpFlowStepBase:
      description: Abstract base schema for flow steps.
      properties:
        title:
          type: string
          description: The title
        screenEvent:
          description: Details of the event
          properties:
            dataLayer:
              additionalProperties: true
              description: Additional data
              properties:
                screenName:
                  type: string
                  description: The name for the current screen
              type: object
          type: object
        closeButton:
          $ref: '#/components/schemas/ConsumerhelpHelpAction'
        experimentEvents:
          items:
            $ref: '#/components/schemas/ConsumerhelpExperimentEvent'
          description: list of experiments running for this client
          type: array
      type: object
    ConsumerhelpHeaderIcon:
      description: The header icon for the Digital Services Act Report Form
      type: object
      properties:
        name:
          description: The icon name
          type: string
        url:
          description: The icon URL
          type: string
          format: uri
    ConsumerhelpHelpAction:
      description: Represents a possible action (i.e. button) on personalised help home page or as part of a flow
      properties:
        preText:
          items:
            type: string
          description: Paragraphs to display before button
          type: array
        data:
          description: 'Data to post back (for use with type: ChapiPost).'
          additionalProperties: true
          type: object
        id:
          description: Unique but meaningful id for the action
          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
        buttonEvent:
          description: The analytics event to send on tap
          properties:
            action:
              description: Google Analytics action
              type: string
            label:
              description: Google Analytics label (if any)
              type: string
            category:
              description: Google Analytics category
              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
        postText:
          items:
            type: string
          description: Paragraphs to display after button
          type: array
        department:
          description: 'LiveChat department (for use with type: LiveChat)'
          type: string
        action:
          description: The specific action a button tap invokes.  Content depends on type.
          type: string
        notes:
          description: 'Notes to pass to LiveChat (for use with type: LiveChat)'
          type: string
        title:
          description: Caption for the button
          type: string
      type: object
    ConsumerhelpHiddenInput:
      description: Hidden input field
      type: object
      properties:
        name:
          description: The field name
          type: string
        type:
          description: The field type
          type: string
        label:
          description: The field label
          type: string
        value:
          description: The value of the hidden field
          type: string
    ConsumerhelpInput:
      description: The form inputs to display on the page
      anyOf:
        - $ref: '#/components/schemas/ConsumerhelpTextAreaInput'
        - $ref: '#/components/schemas/ConsumerhelpSelectInput'
        - $ref: '#/components/schemas/ConsumerhelpHiddenInput'
    ConsumerhelpItemSelectionStep:
      allOf:
        - $ref: '#/components/schemas/ConsumerhelpFlowStepBase'
        - properties:
            body:
              items:
                type: string
              description: Array of paragraphs for body text
              type: array
            items:
              items:
                properties:
                  price:
                    description: Formatted price of item
                    type: string
                  name:
                    description: Name of item
                    type: string
                  id:
                    description: Unique id of item
                    type: string
                type: object
              description: Array of items in order to choose from
              type: array
            header:
              description: Display header
              type: string
            actions:
              items:
                $ref: '#/components/schemas/ConsumerhelpHelpAction'
              description: Array of actions (i.e. buttons)
              type: array
          type: object
      description: Flow step used for selecting problematic items
      type: object
    ConsumerhelpLateOrderUpdateReceivedStep:
      allOf:
        - $ref: '#/components/schemas/ConsumerhelpFlowStepBase'
        - properties:
            newDueDate:
              description: New expected due date
              format: date-time
              type: string
            actions:
              items:
                $ref: '#/components/schemas/ConsumerhelpHelpAction'
              description: Array of actions (i.e. buttons)
              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
          type: object
      description: Flow step used to display the restaurant's response to a customer's Late Order update request
      type: object
    ConsumerhelpLegalConcernRequest:
      properties:
        topic:
          description: Topic code representing the context for the legal concern
          type: string
        reason:
          description: Reason code representing the reason for the legal concern
          type: string
        additionalContext:
          description: Details of the request
          type: string
        name:
          description: The customer name
          type: string
        email:
          description: The customer email address
          type: string
          format: email
        confirmation:
          description: Confirmation from the customer
          type: boolean
        identifier:
          description: An identifier relating to the subject of the legal concern
          type: string
        info:
          description: Additional context about the subject of the complaint
          type: string
        partnerId:
          description: The Id of the Partner (e.g. a restaurant)
          type: string
        partnerName:
          description: The Name of the Partner (e.g. a restaurant)
          type: string
      type: object
    ConsumerhelpReportLegalConcernResponse:
      description: The page data for the Digital Services Act Report Form
      type: object
      properties:
        header:
          description: The page header
          type: string
        body:
          description: The page body
          type: string
        headerIcon:
          $ref: '#/components/schemas/ConsumerhelpHeaderIcon'
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/ConsumerhelpInput'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ConsumerhelpSupportRequestHelpAction'
    ConsumerhelpRequestCsatStep:
      allOf:
        - $ref: '#/components/schemas/ConsumerhelpFlowStepBase'
        - properties:
            quitFlowAction:
              $ref: '#/components/schemas/ConsumerhelpHelpAction'
          type: object
      description: Flow step used for asking if customer was satisfied with flow
      type: object
    ConsumerhelpSelectInput:
      description: Select input field
      type: object
      properties:
        name:
          description: The field name
          type: string
        type:
          description: The field type
          type: string
        label:
          description: The field label
          type: string
        required:
          type: boolean
          description: Whether the input must have a value on submission
        requiredErrorText:
          description: The error message to display when the required field has no value
          type: string
          nullable: true
        options:
          type: array
          minItems: 3
          maxItems: 9
          items:
            $ref: '#/components/schemas/ConsumerhelpSelectInputOption'
    ConsumerhelpSelectInputOption:
      description: Select input options
      type: object
      properties:
        name:
          description: The option name
          type: string
        value:
          description: The option value
          type: string
        selected:
          description: Whether the option is selected
          type: boolean
    ConsumerhelpSupportRequestHelpAction:
      description: The action button for the form
      type: object
      properties:
        title:
          description: The action title
          type: string
        name:
          description: The button name
          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
        buttonType:
          description: Display type of button
          enum:
            - primary
            - secondary
            - textOnly
            - closeButton
            - option
            - optionExtra
            - foodSafety
          type: string
        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
            label:
              description: Google Analytics label (if any)
              type: string
              nullable: true
            category:
              description: Google Analytics category
              type: string
            value:
              description: Google Analytics value (if any)
              type: number
              nullable: true
          type: object
    ConsumerhelpTextAndActionsStep:
      allOf:
        - $ref: '#/components/schemas/ConsumerhelpFlowStepBase'
        - properties:
            body:
              items:
                type: string
              description: Array of paragraphs for body text
              type: array
            header:
              description: Display header
              type: string
            actions:
              items:
                $ref: '#/components/schemas/ConsumerhelpHelpAction'
              description: Array of actions (i.e. buttons)
              type: array
          type: object
      description: '''Default'' flow step, consisting of text and next-step actions'
      type: object
    ConsumerhelpTextAreaInput:
      description: Text area input field
      type: object
      properties:
        name:
          description: The field name
          type: string
        type:
          description: The field type
          type: string
        label:
          description: The field label
          type: string
        preText:
          items:
            type: string
          description: Array of paragraphs for pre text
          type: array
        postText:
          items:
            type: string
          description: Array of paragraphs for post text
          type: array
        maxCharacterLength:
          description: The maximum number of characters to accept in the input field
          format: int32
          type: number
        maxCharacterLengthErrorText:
          description: The error message to display when maximum character length has been exceeded
          type: string
        minCharacterLength:
          description: The minimum number of characters to accept in the input field
          format: int32
          type: number
        minCharacterLengthErrorText:
          description: The error message to display when minimum character length has been met
          type: string
        placeholder:
          description: The placeholder text
          type: string
        required:
          type: boolean
          description: Whether the text area must have values on submission
        requiredErrorText:
          description: The error message to display when the required field has no value
          type: string
        typeMismatchErrorText:
          description: The error message to display when the value does not match the correct format
          type: string
    ConsumerhelpSupportRequest:
      properties:
        subject:
          description: What is this request about?
          type: string
        body:
          description: Detail of the request
          type: string
        orderid:
          description: The id of the order this request relates to
          type: string
      type: object
    ConsumeroffersBasketPriceOverride:
      title: BasketPriceOverride
      type: object
      required:
        - actual
        - original
      properties:
        actual:
          type: object
          description: |
            Price and discount details for display to the customer. In markets where Omnibus II legislation applies,  these values are relative to the item variation's lowest price from the last 30 days (see `history.lowestPrice.price`).
          required:
            - discountedPrice
            - previousPrice
          properties:
            discountedPrice:
              type: integer
              description: |
                The price of the item variation after the offer discount has been applied, expressed in the minor currency unit of the currency (e.g. Euro cents). This is the price that the customer will pay, regardless of whether the offer is considered genuine according to Omnibus II legislation.
            previousPrice:
              type: integer
              description: |
                For display purposes, the price of the item variation before the offer discount was applied, expressed in the minor unit of the currency (e.g. Euro cents).
            discountedUnitPrice:
              nullable: true
              type: object
              description: |
                The unit price for the item variation after the offer discount was applied. This is the price per unit that the customer will pay, regardless of whether the offer is considered genuine according to Omnibus II legislation. Only returned when the item variation has a net quantity value.
              allOf:
                - $ref: '#/components/schemas/ConsumeroffersPriceOverrideUnitPricing'
            previousUnitPrice:
              nullable: true
              type: object
              description: |
                For display purposes, the unit price for the item variation before the offer discount was applied. Only returned when the item variation has a net quantity value.
              allOf:
                - $ref: '#/components/schemas/ConsumeroffersPriceOverrideUnitPricing'
          oneOf:
            - required:
                - discountPercentage
              properties:
                discountPercentage:
                  type: integer
                  description: |
                    Discount as a percentage, relative to `previousPrice`. Present for percentage-based offers only.
            - required:
                - discountValue
              properties:
                discountValue:
                  type: integer
                  description: |
                    Discount as a fixed value, relative to `previousPrice`, expressed in the minor unit of the currency (e.g. Euro cents). Present for value-based offers only.
        original:
          type: object
          description: |
            Original price and discount details. Not adjusted in relation to the item variation's lowest price from the last 30 days - in any market.
          required:
            - discountedPrice
            - previousPrice
          properties:
            discountedPrice:
              type: integer
              description: |
                The price of the item variation after the offer discount has been applied, expressed in the minor currency unit of the currency (e.g. Euro cents). This is the price that the customer will pay, regardless of whether the offer is considered genuine according to Omnibus II legislation.
            previousPrice:
              type: integer
              description: |
                The original price for the item variation as stated in the catalogue data, expressed in the minor unit of the currency (e.g. Euro cents).
          oneOf:
            - required:
                - discountPercentage
              properties:
                discountPercentage:
                  type: integer
                  description: |
                    Discount as a percentage, as configured for the offer. Present for percentage-based offers only.
            - required:
                - discountValue
              properties:
                discountValue:
                  type: integer
                  description: |
                    Discount as a fixed value in the minor unit of the currency (e.g. Euro cents), as configured for the offer. Present for value-based offers only.  
        history:
          description: |
            Historical price information, if applicable. Returned only in markets where Omnibus II legislation applies.
          type: object
          required:
            - lowestPrice
          properties:
            lowestPrice:
              type: object
              required:
                - price
              properties:
                price:
                  type: integer
                  description: The item variation's prior lowest price from the last 30 days, expressed in the minor unit of the currency (e.g. Euro cents).
    ConsumeroffersConsumerOffer:
      description: Details of a consumer offer
      properties:
        priority:
          nullable: false
          $ref: '#/components/schemas/ConsumeroffersConsumerOffersPriority'
        offerType:
          nullable: false
          $ref: '#/components/schemas/ConsumeroffersConsumerOfferType'
        offerId:
          nullable: false
          description: The unique identifier of the offer.
          type: string
        externalOfferId:
          nullable: true
          description: The unique identifiers from a system outside of Just Eat that sourced this offer.
          type: string
        qualifyingCriteria:
          nullable: true
          $ref: '#/components/schemas/ConsumeroffersConsumerOfferQualifyingCriteria'
        consumerSegment:
          nullable: false
          $ref: '#/components/schemas/ConsumeroffersConsumerSegment'
        campaignId:
          nullable: true
          description: The unique identifier of the offer campaign.
          type: string
        restaurantId:
          nullable: false
          description: The unique identifier of the restaurant providing the offers.
          type: string
      type: object
      required:
        - offerId
        - restaurantId
        - offerType
        - consumerSegment
        - priority
      title: ConsumerOffer
    ConsumeroffersConsumerOfferNotification:
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - required:
            - description
          additionalProperties: false
          description: Details of a notification offer
          properties:
            description:
              nullable: false
              description: The description of the offer.
              type: string
          type: object
      example:
        offerId: 12345sd
        restaurantId: 1234sd
        offerType: notification
        description: Check out our new lunch menu
        campaignId: notifyOnNewMenu
        consumerSegment: all
    ConsumeroffersConsumerOfferNotificationDictionary:
      required:
        - markdown
      type: object
      title: ConsumerOfferNotificationDictionary
      description: Object that holds offer localised descriptions in different formats, e.g., markdown format
      example:
        markdown:
          short: Free item with selected orders
          long: Free **Drink** when you spend $20
      properties:
        markdown:
          nullable: true
          type: object
          description: Short and long offer descriptions in markdown format. The messages are localised for the requested Accept-Language.
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersConsumerOfferNotificationDictionaryItem'
    ConsumeroffersConsumerOfferNotificationDictionaryItem:
      required:
        - short
        - long
      type: object
      title: ConsumerOfferNotificationDictionaryItem
      description: Short and long offer descriptions
      example:
        short: Free item with selected orders
        long: Free **Drink** when you spend $20
      properties:
        short:
          nullable: false
          description: The description of the offer to be displayed for customers
          type: string
        long:
          nullable: false
          description: The description of the offer to be displayed for customers
          type: string
    ConsumeroffersConsumerOfferNotificationV2:
      required:
        - offerId
        - restaurantId
        - offerType
        - consumerSegment
      type: object
      title: ConsumerOfferNotificationV2
      description: Object that holds offer descriptions in different formats along with additional offer settings
      example:
        offerId: f89c0142-cd8f-4575-885c-864661c566f7
        restaurantId: 1234567ds
        notification:
          markdown:
            short: Free item with selected orders
            long: Free **Drink** when you spend $20
        consumerSegment: all
        campaignId: freeDrinks_Oct26_sdvbdnvkNLKNV
        offerType: freeItem
        maximumRedemptions: 1
        minimumSpendValue:
          value: 2000
        benefits:
          - PARTNER_EXCLUSIVE_OFFERS
      properties:
        offerId:
          nullable: false
          description: The unique identifier of the offer.
          type: string
        restaurantId:
          nullable: false
          description: The unique identifier of the restaurant providing the offers.
          type: string
        notification:
          nullable: true
          type: object
          description: Offer message to be displayed for customers.
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersConsumerOfferNotificationDictionary'
        consumerSegment:
          description: Consumer Segment to which offer applies
          $ref: '#/components/schemas/ConsumeroffersConsumerSegment'
        campaignId:
          nullable: true
          description: The unique identifier of the offer campaign.
          type: string
        offerType:
          description: The type of the offer.
          $ref: '#/components/schemas/ConsumeroffersConsumerOfferType'
        offerMenuItems:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/ConsumeroffersOfferMenuItem'
          description: Collection of menu products related to offer
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of discounted items for this offer, null if unlimited
          nullable: true
        minimumSpendValue:
          nullable: true
          type: object
          description: The minimum spend value required to be eligible for the offer discount in smallest unit of relevant currency. The value is null for offers without minimum spend value
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersMoney'
        benefits:
          nullable: true
          description: List of eligible membership benefits associated with this customer and required to be qualified for the offer discount
          type: array
          minItems: 1
          maxItems: 10
          items:
            type: string
    ConsumeroffersConsumerOfferNotificationV3:
      required:
        - offerId
        - restaurantId
        - offerType
        - consumerSegment
      type: object
      title: ConsumerOfferNotificationV3
      description: Object that holds offer descriptions in different formats along with additional offer settings
      example:
        offerId: f89c0142-cd8f-4575-885c-864661c566f7
        restaurantId: 1234567ds
        description: Free item with selected orders
        consumerSegment: all
        campaignId: freeDrinks_Oct26_sdvbdnvkNLKNV
        offerType: freeItem
        maximumRedemptions: 1
        minimumSpendValue:
          value: 2000
        benefits:
          - PARTNER_EXCLUSIVE_OFFERS
      properties:
        offerId:
          nullable: false
          description: The unique identifier of the offer.
          type: string
        restaurantId:
          nullable: false
          description: The unique identifier of the restaurant providing the offers.
          type: string
        description:
          nullable: true
          description: |
            The description of the offer.  In markets where Omnibus II legislation applies, the description is adjusted  relative to the lowest prior price of any item variations in the offer over the last 30 days. For example, "20% off selected items" becomes "Up to 16% off selected items".
          type: string
        consumerSegment:
          description: Consumer Segment to which offer applies
          $ref: '#/components/schemas/ConsumeroffersConsumerSegment'
        campaignId:
          nullable: true
          description: The unique identifier of the offer campaign.
          type: string
        offerType:
          description: The type of the offer.
          $ref: '#/components/schemas/ConsumeroffersConsumerOfferType'
        highlightAsOffer:
          type: boolean
          default: true
          description: Indicates whether this offer should be highlighted to the consumer in the UI.
        categoryIds:
          nullable: true
          type: array
          description: |
            The identifiers for menu categories to which this offer applies. When this array contains values, discountedItemVariations contains the details of the item variations within those categories.
          items:
            type: string
        discountedItemVariations:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/ConsumeroffersDiscountedItemVariation'
          description: |
            Collection of discounted item variations available for the offer, including price override data for ItemLevelDiscount offers. When categoryIds is present for an offer notification, this array includes the item variations within those categories.
        qualifyingItemVariations:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/ConsumeroffersQualifyingItemVariation'
          description: |
            Collection of item variations that qualify the order for the offer. Present for offer types that require specific qualifying items (e.g. BOGOF).
        maximumRedemptions:
          type: integer
          description: The maximum number of discounted item variations for this offer, null if unlimited.
          nullable: true
        minimumSpendValue:
          nullable: true
          type: object
          description: The minimum spend value required to be eligible for the offer discount in smallest unit of relevant currency. The value is null for offers without minimum spend value.
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersMoney'
        discountToDisplay:
          nullable: true
          type: object
          description: |
            Present for ItemLevelDiscount, Bogof, BogofMixMatch, FreeItem offers only; null for all other offer types. The numeric discount value that appears in the offer notification's `description` (e.g. 3 for a `description` "£3 off", 27 for a `description` "Up to 27% off"). The value always matches the `description`, so in markets where Omnibus II legislation applies, the value is adjusted  relative to the lowest prior price of item variations in the offer over the last 30 days.
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersDiscountToDisplay'
        benefits:
          nullable: true
          description: List of eligible membership benefits associated with this customer and required to be qualified for the offer discount.
          type: array
          minItems: 1
          maxItems: 10
          items:
            type: string
    ConsumeroffersConsumerOfferPrompt:
      allOf:
        - additionalProperties: false
          properties:
            title:
              description: The title to show in prompt for customer
              type: string
            description:
              description: The description of offer to show in prompt for customer
              type: string
            header:
              nullable: true
              description: The header to show in prompt for customer
              type: string
          type: object
      example:
        title: Nice! You get this free with your order
        description: We�ll apply the discount at checkout
        header: Free item
    ConsumeroffersConsumerOfferQualifyingCriteria:
      description: Conditions that must be met in order to get the offer.
      additionalProperties: false
      type: object
      title: ConsumerOfferQualifyingCriteria
      properties:
        benefits:
          nullable: true
          description: List of eligible membership benefits associated with this customer and required to be qualified for the offer discount
          type: array
          minItems: 1
          maxItems: 10
          items:
            type: string
        minimumSpendValue:
          nullable: true
          description: The minimum spend value required to be eligible for the Offer in smallest unit of relevant currency.
          format: integer
          type: number
        products:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/ConsumeroffersConsumerOffersProduct'
          nullable: true
        categories:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/ConsumeroffersConsumerOffersProductCategory'
          nullable: true
        productBundleQuantity:
          nullable: true
          format: integer
          type: number
          minimum: 1
          description: The number of qualifying items that must be purchased to trigger the offer (the "buy X" quantity). Used by bundle offers such as `fixedPriceBundle` and `buyXGetY`.
      example:
        minimumSpendValue: 1000
        products:
          - id: FrenchFriesBig1
        categories:
          - id: Sides111
        productBundleQuantity: 3
    ConsumeroffersConsumerOfferStampCardDiscount:
      required:
        - discountValue
        - discountCode
      additionalProperties: false
      description: Details of a the stamp card discount
      properties:
        discountCode:
          nullable: false
          description: The unique code of the discount, acts as a lock object at payment stage
          type: string
        discountValue:
          nullable: false
          description: The discount value in smallest unit of relevant currency.
          format: integer
          type: number
      type: object
    ConsumeroffersConsumerOfferType:
      description: The type of the offer.
      enum:
        - percent
        - freeItem
        - bogof
        - bogofMixMatch
        - stampCard
        - notification
        - itemLevelDiscount
        - totalOrder
        - buyXGetY
        - fixedPriceBundle
      type: string
    ConsumeroffersConsumerOfferBogof:
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - required:
            - products
            - prompt
          additionalProperties: false
          description: Details of a buy one get one free offer
          properties:
            categories:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/ConsumeroffersConsumerOffersProductCategory'
              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 discount
              nullable: true
            prompt:
              nullable: false
              description: A prompt displayed to consumer
              $ref: '#/components/schemas/ConsumeroffersConsumerOfferPrompt'
            discount:
              description: Discount applicable to product or product categories
              nullable: true
              $ref: '#/components/schemas/ConsumeroffersDiscount'
            products:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/ConsumeroffersConsumerOffersProduct'
              description: |-
                One of those products needed to be included in the basket to make offer applicable.
                The second occurrence of such product gets discount
              nullable: false
            maximumRedemptions:
              format: integer
              type: number
              description: The maximum number of discounted items for this offer, unlimited when null
              minimum: 1
              default: 1
              nullable: true
          type: object
      example:
        offerId: 12345sd
        restaurantId: 1234sd
        offerType: Bogof
        discount:
          discountAmount: 100
        prompt:
          title: Nice! You get this free with your order
          description: Ice Cream for free when you order Ice Cream
        products:
          - id: iceCreamA
          - id: iceCreamB
          - id: iceCreamC
        campaignId: freeIceCream
        maximumRedemptions: 10
        consumerSegment: all
    ConsumeroffersConsumerOfferBogofMixMatch:
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - required:
            - products
            - prompt
          additionalProperties: false
          description: Details of a buy one get one free mix and match offer
          properties:
            categories:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/ConsumeroffersConsumerOffersProductCategory'
              description: |-
                One of the products from category needed to be included in the basket to make offer applicable.
                The second occurrence of any product from this category gets discount
              nullable: true
            prompt:
              nullable: false
              description: A prompt displayed to consumer
              $ref: '#/components/schemas/ConsumeroffersConsumerOfferPrompt'
            discount:
              description: Discount applicable to product or product categories
              nullable: true
              $ref: '#/components/schemas/ConsumeroffersDiscount'
            products:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/ConsumeroffersConsumerOffersProduct'
              description: |-
                One of those products needed to be included in the basket to make offer applicable.
                The second occurrence of any product from this list gets discount
              nullable: false
            maximumRedemptions:
              format: integer
              type: number
              description: The maximum number of discounted items for this offer, unlimited when null
              minimum: 1
              default: 1
              nullable: true
          type: object
      example:
        offerId: 12345sd
        restaurantId: 1234sd
        offerType: BogofMixMatch
        discount:
          discountAmount: 100
        prompt:
          title: Nice! You get this free with your order
          description: Ice Cream for free when you order Ice Cream
        products:
          - id: iceCreamA
          - id: iceCreamB
          - id: iceCreamC
        campaignId: freeIceCream
        maximumRedemptions: 10
        consumerSegment: all
    ConsumeroffersConsumerOfferBuyXGetY:
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - required:
            - prompt
            - discountBundleQuantity
          anyOf:
            - required:
                - products
            - required:
                - categories
          additionalProperties: false
          description: Details of a Buy X Items, Get Y Items (mix and match) offer. When the customer buys the qualifying quantity of items (see `qualifyingCriteria`), they get `discountBundleQuantity` reward items free or discounted, chosen from an eligible item set that may differ from the qualifying set. At least one of `products` or `categories` defines the reward set. For example "Buy 3 pizzas, get 2 drinks free".
          properties:
            categories:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/ConsumeroffersConsumerOffersProductCategory'
              description: Reward categories the customer can choose the rewarded items from. At least one of `products` or `categories` must be provided.
              nullable: true
            prompt:
              nullable: false
              description: A prompt displayed to consumer
              $ref: '#/components/schemas/ConsumeroffersConsumerOfferPrompt'
            products:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/ConsumeroffersConsumerOffersProduct'
              description: Specific reward items the customer can choose from (free or discounted). At least one of `products` or `categories` must be provided.
              nullable: true
            discountBundleQuantity:
              format: integer
              type: number
              minimum: 1
              description: The number of rewarded items (Y) granted when the qualifying criteria are met. The cheapest eligible items are discounted first.
              nullable: false
            discount:
              description: Discount applied to the rewarded items. Defaults to 100% (free) when not supplied.
              nullable: true
              $ref: '#/components/schemas/ConsumeroffersDiscount'
            maximumRedemptions:
              format: integer
              type: number
              description: The maximum number of discounted items for this offer, unlimited when null
              minimum: 1
              default: 1
              nullable: true
          type: object
      example:
        offerId: 12345sd
        restaurantId: 1234sd
        offerType: BuyXGetY
        discountBundleQuantity: 2
        prompt:
          title: Buy 3 pizzas, get 2 drinks free
          description: Buy any 3 pizzas and get 2 drinks free
        products:
          - id: drinkA
          - id: drinkB
          - id: drinkC
        qualifyingCriteria:
          productBundleQuantity: 3
          categories:
            - id: pizzaCategory
        campaignId: buy3pizzasGet2drinks
        maximumRedemptions: 2
        consumerSegment: all
    ConsumeroffersConsumerOfferFixedPriceBundle:
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - required:
            - prompt
            - bundlePrice
          additionalProperties: false
          description: Details of a Buy X Items, Pay Y fixed-price bundle offer. When the customer buys the qualifying quantity of items (see `qualifyingCriteria`), those qualifying items are charged a single fixed total price (Y). For example "Any 3 for £10".
          properties:
            prompt:
              nullable: false
              description: A prompt displayed to consumer
              $ref: '#/components/schemas/ConsumeroffersConsumerOfferPrompt'
            bundlePrice:
              description: The fixed total price (Y) charged for the qualifying bundle.
              nullable: false
              $ref: '#/components/schemas/ConsumeroffersMoney'
            maximumRedemptions:
              format: integer
              type: number
              description: The maximum number of times the fixed bundle price can be applied for this offer, unlimited when null.
              minimum: 1
              default: 1
              nullable: true
          type: object
      example:
        offerId: 12345sd
        restaurantId: 1234sd
        offerType: FixedPriceBundle
        bundlePrice:
          value: 1000
        maximumRedemptions: 1
        prompt:
          title: Any 3 for £10
          description: Any 3 selected pizzas for £10
        qualifyingCriteria:
          productBundleQuantity: 3
          categories:
            - id: pizzaCategory
        campaignId: any3for10
        consumerSegment: all
    ConsumeroffersConsumerOfferFreeItem:
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - required:
            - products
            - freeProduct
            - prompt
          additionalProperties: false
          description: Details of a free item offer
          properties:
            prompt:
              nullable: false
              description: A prompt displayed to consumer
              $ref: '#/components/schemas/ConsumeroffersConsumerOfferPrompt'
            maximumRedemptions:
              format: integer
              type: number
              description: The maximum number of discounted items for this offer, unlimited when null
              minimum: 1
              default: 1
              nullable: true
            discount:
              description: Discount applicable to free products
              nullable: false
              $ref: '#/components/schemas/ConsumeroffersDiscount'
            freeProducts:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/ConsumeroffersConsumerOffersProduct'
              description: One or more of those products gets 100% discount applied
              nullable: false
          type: object
      example:
        offerId: 12345sd
        restaurantId: 1234sd
        offerType: FreeItem
        discount:
          discountPercentage: 100
        prompt:
          title: Nice! You get this free with your order
          description: Potato for free when you order Ice Cream
        freeProducts:
          - id: PotatoId
            preferableModifierIds:
              - ketchupModifierId
        campaignId: freePotato
        consumerSegment: all
        maximumRedemptions: 1
        qualifyingCriteria:
          products:
            - id: BigMacId
            - id: DoubleBigMacId
            - id: BigMacMenuId
    ConsumeroffersConsumerOfferItemLevelDiscount:
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - required:
            - products
            - prompt
          additionalProperties: false
          description: Details of an item level discount offer
          properties:
            prompt:
              nullable: false
              description: A prompt displayed to consumer
              $ref: '#/components/schemas/ConsumeroffersConsumerOfferPrompt'
            maximumRedemptions:
              format: integer
              type: number
              description: The maximum number of discounted items for this offer, unlimited when null
              minimum: 1
              default: 1
              nullable: true
            discount:
              description: Discount applicable to selected products
              nullable: false
              $ref: '#/components/schemas/ConsumeroffersDiscount'
            products:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/ConsumeroffersConsumerOffersProduct'
              description: One or more of those products gets discount applied
              nullable: false
          type: object
      example:
        offerId: 12345sd
        restaurantId: 1234sd
        offerType: ItemLevelDiscount
        discount:
          discountAmount: 10
        prompt:
          title: Nice! You get this item with 10$ discount
          description: Potato with 10$ discount when you order BigMac
        products:
          - id: PotatoId
            preferableModifierIds:
              - ketchupModifierId
        campaignId: discountedPotato
        consumerSegment: all
        maximumRedemptions: 1
        qualifyingCriteria:
          products:
            - id: BigMacId
            - id: DoubleBigMacId
            - id: BigMacMenuId
    ConsumeroffersConsumerOfferItemLevelDiscountDiscount:
      description: Discount applicable to an item level discount offer. Either discountPercentage or discountAmount will be returned, not both.
      type: object
      additionalProperties: false
      properties:
        discountPercentage:
          description: The percentage of discount
          type: integer
        discountAmount:
          description: Fixed value discount in smallest unit of relevant currency
          type: integer
        discountedItemPrice:
          nullable: true
          deprecated: true
          description: The final price of the item after discount applied, in smallest unit of relevant currency
          type: integer
          minimum: 0
        discountedItemPricing:
          nullable: true
          type: object
          description: The final price of the item after discount applied, broken down by fulfilment method, in smallest unit of relevant currency
          properties:
            delivery:
              description: The final price of the item after discount applied for delivery, in smallest unit of relevant currency
              type: integer
              minimum: 0
            collection:
              description: The final price of the item after discount applied for collection, in smallest unit of relevant currency
              type: integer
              minimum: 0
          anyOf:
            - required:
                - delivery
            - required:
                - collection
        discountedUnitPricing:
          nullable: true
          type: object
          description: Unit-based pricing details for the discounted item. Only present when item price is also returned.
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersDiscountedUnitPricing'
      oneOf:
        - required:
            - discountPercentage
          not:
            required:
              - discountAmount
        - required:
            - discountAmount
          not:
            required:
              - discountPercentage
      example:
        discountPercentage: 10
        discountedItemPrice: 199
        discountedItemPricing:
          delivery: 199
          collection: 189
        discountedUnitPricing:
          value: 150
          price:
            delivery: 150
            collection: 150
          quantity: 0.5
          unit: kg
          hasVariablePrice: false
    ConsumeroffersConsumerOfferItemLevelDiscountV3:
      title: ConsumerOffer_ItemLevelDiscountV3
      description: Details of an item level discount offer with Omnibus compliance data
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - type: object
          required:
            - products
            - prompt
          properties:
            prompt:
              nullable: false
              description: A prompt displayed to consumer
              $ref: '#/components/schemas/ConsumeroffersConsumerOfferPrompt'
            maximumRedemptions:
              format: integer
              type: number
              description: The maximum number of discounted items for this offer, unlimited when null
              minimum: 1
              default: 1
              nullable: true
            discount:
              description: Discount applicable to selected products
              nullable: false
              $ref: '#/components/schemas/ConsumeroffersDiscount'
            highlightAsOffer:
              type: boolean
              default: true
              description: Indicates whether this offer should be highlighted in the customer's basket.
            products:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/ConsumeroffersConsumerOffersProductV3'
              description: One or more of those products gets discount applied
              nullable: false
      example:
        offerId: 345itld
        restaurantId: 1234sd
        offerType: itemLevelDiscount
        discount:
          discountPercentage: 30
        prompt:
          title: 30% off selected items
          description: 30% off selected items
        consumerSegment: all
        priority:
          value: 1
          type: stackable
        highlightAsOffer: true
        maximumRedemptions: 1
        products:
          - id: ChickenNuggetsId
            highlightAsOffer: true
            priceOverride:
              actual:
                discountedPrice: 700
                previousPrice: 1000
                discountPercentage: 30
              original:
                discountedPrice: 700
                previousPrice: 1000
                discountPercentage: 30
    ConsumeroffersConsumerOfferPercent:
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - required:
            - amount
          additionalProperties: false
          description: Details of a percent-based offer
          properties:
            amount:
              nullable: false
              description: The percentage value discount
              format: decimal
              type: number
          type: object
      example:
        amount: 10
        qualifyingCriteria:
          minimumSpendValue: 1500
    ConsumeroffersConsumerOfferStampCard:
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - required:
            - discounts
          description: Details of a stamp card offer
          additionalProperties: false
          properties:
            discounts:
              items:
                $ref: '#/components/schemas/ConsumeroffersConsumerOfferStampCardDiscount'
              description: The list of completed stamp card discounts
              type: array
          type: object
    ConsumeroffersConsumerOfferTotalOrder:
      allOf:
        - $ref: '#/components/schemas/ConsumeroffersConsumerOffer'
        - required:
            - discount
          additionalProperties: false
          description: Details of a total order offer
          properties:
            discount:
              description: Discount applicable to the order
              nullable: false
              $ref: '#/components/schemas/ConsumeroffersDiscount'
          type: object
      example:
        offerId: 12345sd
        restaurantId: 1234sd
        offerType: TotalOrder
        discount:
          discountAmount: 100
        campaignId: discountedPotato
        consumerSegment: all
        qualifyingCriteria:
          products:
            - id: BigMacId
            - id: DoubleBigMacId
            - id: BigMacMenuId
    ConsumeroffersConsumerOffersBasket:
      title: ConsumerOffersBasket
      description: The consumer basket content
      additionalProperties: false
      properties:
        basketItems:
          nullable: true
          items:
            $ref: '#/components/schemas/ConsumeroffersConsumerOffersBasketItem'
          description: The collection of the basket items.
          type: array
        serviceType:
          nullable: true
          type: string
          description: Service type selected by customer
      type: object
      example:
        basketItems:
          - productId: BRGR123
            quantity: 1
        serviceType: Delivery
    ConsumeroffersConsumerOffersBasketItem:
      properties:
        productId:
          nullable: true
          description: The `ProductId` of basket item.
          type: string
        quantity:
          nullable: true
          format: int32
          description: The quantity of basket item.
          type: integer
      type: object
      additionalProperties: false
      example:
        productId: BRGR123
        quantity: 1
      title: ConsumerOffersBasketItem
    ConsumeroffersConsumerOffersNotificationsRequest:
      properties:
        restaurantIds:
          maxItems: 150
          type: array
          description: The identifiers of the restaurants. Allows offers to be returned for many restaurants.
          items:
            type: string
          minItems: 11
        applicableDateTimeUtc:
          type: string
          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.
          nullable: true
          example: '2021-01-20T19:35:13.6430000+00:00'
          format: date-time
      type: object
      required:
        - restaurantIds
      additionalProperties: false
      example:
        restaurantIds:
          - 123456cc
          - 123456aa
          - 12335bb
          - 12335dd
          - 12335ee
          - 12335ff
          - 12335gg
          - 12335hh
          - 12335ii
          - 12335jj
          - 12335kk
        applicableDateTimeUtc: '2020-04-20T17:20:00.0000000+01:00'
      title: ConsumerOffersNotificationsRequest
    ConsumeroffersConsumerOffersNotificationsResponse:
      title: ConsumerOffersNotificationsResponse
      description: Holder of Consumer Offer Notifications
      properties:
        offerNotifications:
          items:
            required:
              - offerId
              - restaurantId
              - offerType
              - consumerSegment
            type: object
            title: ConsumerOfferNotification
            example:
              description: Get one free
              offerId: 12345c
              restaurantId: 1234567ds
              consumerSegment: all
              campaignId: CheekyTuesday
              offerType: percent
              maximumRedemptions: 1
              minimumSpendValue:
                value: 2000
            properties:
              description:
                nullable: true
                description: The description of the offer.
                type: string
              offerId:
                nullable: false
                description: The unique identifier of the offer.
                type: string
              restaurantId:
                nullable: false
                description: The unique identifier of the restaurant providing the offers.
                type: string
              consumerSegment:
                description: Consumer Segment to which offer applies
                $ref: '#/components/schemas/ConsumeroffersConsumerSegment'
              campaignId:
                nullable: true
                description: The unique identifier of the offer campaign.
                type: string
              offerType:
                description: The type of the offer.
                $ref: '#/components/schemas/ConsumeroffersConsumerOfferType'
              offerMenuItems:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ConsumeroffersOfferMenuItem'
                description: Collection of menu products related to offer
              maximumRedemptions:
                format: integer
                type: number
                description: The maximum number of discounted items for this offer, null if unlimited
                nullable: true
              minimumSpendValue:
                nullable: true
                type: object
                description: The minimum spend value required to be eligible for the offer discount in smallest unit of relevant currency. The value is null for offers without minimum spend value
                allOf:
                  - $ref: '#/components/schemas/ConsumeroffersMoney'
              benefits:
                nullable: true
                description: List of eligible membership benefits associated with this customer and required to be qualified for the offer discount
                type: array
                minItems: 1
                maxItems: 10
                items:
                  type: string
          description: Provides consumer offer notifications for given restaurants, containing offer description but not exact details like discount etc.
          type: array
          maxItems: 50
      type: object
    ConsumeroffersConsumerOffersNotificationsResponseV2:
      title: ConsumerOffersNotificationsResponseV2
      description: Holder of Consumer Offer Notifications
      properties:
        offerNotifications:
          items:
            $ref: '#/components/schemas/ConsumeroffersConsumerOfferNotificationV2'
          description: |
            Consumer offer notifications for the restaurants specified in the request, containing offer descriptions and additional details for offer highlighting. In markets where Omnibus II legislation applies, values for discounts to display  are adjusted relative to the lowest prior price of items in the offer over the last 30 days. For example, an original offer description "20% off selected items" becomes "Up to 16% off selected items".
          type: array
          maxItems: 50
      type: object
    ConsumeroffersConsumerOffersNotificationsResponseV3:
      title: ConsumerOffersNotificationsResponseV3
      description: |
        Container for V3 consumer offer notifications. Notifications include price override data and Omnibus compliance flags embedded within discounted item variations. In markets where Omnibus II legislation applies, descriptions for ItemLevelDiscount offers are adjusted based on the lowest prior price for item variations in the last 30 days.
      type: object
      required:
        - offerNotifications
      properties:
        offerNotifications:
          type: array
          description: |
            Consumer offer notifications for the restaurants specified in the request, containing offer descriptions, price override data, and Omnibus compliance flags. Price override data is embedded in discountedItemVariations within each notification for ItemLevelDiscount offers.
          items:
            $ref: '#/components/schemas/ConsumeroffersConsumerOfferNotificationV3'
          maxItems: 50
    ConsumeroffersConsumerOffersPriority:
      required:
        - value
        - type
      description: The offers priority dictates the order and combination approach when multiple offers are executed together.
      additionalProperties: false
      type: object
      properties:
        value:
          description: The offers are evaluated based on priority in descending order. The first triggered will return effects
          format: integer
          type: number
        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
      title: ConsumerOffersPriority
      example:
        value: 1
        type: stackable
    ConsumeroffersConsumerOffersProduct:
      description: One of those products needed to be included in the basket to make offer applicable
      required:
        - id
      additionalProperties: false
      type: object
      properties:
        showModifiersSelectionDialog:
          description: Determinate if modifiers selection dialogue will be shown to customer.
          type: boolean
        unavailable:
          description: Determinate if product is unavailable
          type: boolean
        preferableModifierIds:
          nullable: true
          items:
            type: string
          description: The collection of preselected modifiers for the item.
          type: array
        id:
          description: The unique identifier of the product.
          type: string
      title: ConsumerOffersProduct
      example:
        id: 6 Chicken Nuggets
        preferableModifierIds:
          - ketchupModifierId
    ConsumeroffersConsumerOffersProductCategory:
      description: One of the products from category needed to be included in the basket to make offer applicable
      properties:
        name:
          description: The name of the product category.
          type: string
        id:
          description: The unique identifier of the product category.
          type: string
        preferableModifierIds:
          nullable: true
          items:
            type: string
          description: The collection of preselected modifiers for the items in category.
          type: array
      type: object
      required:
        - id
      additionalProperties: false
      example:
        name: Pizza
        id: Pizza1234
      title: ConsumerOffersProductCategory
    ConsumeroffersConsumerOffersProductV3:
      description: One of those products needed to be included in the basket to make offer applicable
      required:
        - id
      additionalProperties: false
      type: object
      properties:
        showModifiersSelectionDialog:
          description: Determinate if modifiers selection dialogue will be shown to customer.
          type: boolean
        unavailable:
          description: Determinate if product is unavailable
          type: boolean
        preferableModifierIds:
          nullable: true
          items:
            type: string
          description: The collection of preselected modifiers for the item.
          type: array
        id:
          description: The unique identifier of the product.
          type: string
        priceOverride:
          type: object
          description: |
            Price override data for this product, for the service type specified in the request. Only populated for ItemLevelDiscount offers; absent for other offer types.
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersBasketPriceOverride'
        highlightAsOffer:
          type: boolean
          default: true
          nullable: false
          description: Indicates whether this product should be highlighted in the customer's basket as being part of an offer.
        hasVariablePrice:
          description: |
            Indicates whether the product has a variable price. Is true when an item has variations with multiple base prices or any modifiers with a price.
          type: boolean
          nullable: false
      title: ConsumerOffersProductV3
      example:
        id: ChickenNuggetsId
        highlightAsOffer: true
        hasVariablePrice: false
        priceOverride:
          actual:
            discountedPrice: 700
            previousPrice: 1000
            discountPercentage: 30
          original:
            discountedPrice: 700
            previousPrice: 1000
            discountPercentage: 30
    ConsumeroffersConsumerOffersRequest:
      properties:
        consumerOffersBasket:
          $ref: '#/components/schemas/ConsumeroffersConsumerOffersBasket'
        restaurantId:
          type: string
          description: The identifier of the restaurant.
          minLength: 1
        consumerId:
          nullable: true
          description: Global Consumer Id
          type: string
        applicableDateTimeUtc:
          type: string
          format: date-time
          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.6430000+00:00'
      type: object
      required:
        - restaurantId
        - consumerOffersBasket
      additionalProperties: false
      example:
        consumerOffersBasket:
          basketItems:
            - productId: BRGR123
              quantity: 1
          serviceType: Collection
        restaurantId: asd12345
        applicableDateTimeUtc: '2020-04-20T17:20:00.0000000+01:00'
      title: ConsumerOffersRequest
    ConsumeroffersConsumerOffersResponse:
      title: ConsumerOffersResponse
      properties:
        offers:
          items:
            discriminator:
              mapping:
                TotalOrder: '#/components/schemas/ConsumeroffersConsumerOfferTotalOrder'
                Percent: '#/components/schemas/ConsumeroffersConsumerOfferPercent'
                FreeItem: '#/components/schemas/ConsumeroffersConsumerOfferFreeItem'
                ItemLevelDiscount: '#/components/schemas/ConsumeroffersConsumerOfferItemLevelDiscount'
                Bogof: '#/components/schemas/ConsumeroffersConsumerOfferBogof'
                StampCard: '#/components/schemas/ConsumeroffersConsumerOfferStampCard'
                Notification: '#/components/schemas/ConsumeroffersConsumerOfferNotification'
                BuyXGetY: '#/components/schemas/ConsumeroffersConsumerOfferBuyXGetY'
                FixedPriceBundle: '#/components/schemas/ConsumeroffersConsumerOfferFixedPriceBundle'
              propertyName: offerType
            oneOf:
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferItemLevelDiscount'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferFreeItem'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferPercent'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferStampCard'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferBogof'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferBogofMixMatch'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferNotification'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferTotalOrder'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferBuyXGetY'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferFixedPriceBundle'
          description: Provide applicable consumer offers based on provided `restaurantId` and basket content.
          type: array
      type: object
      description: Holder of consumer offers
      example:
        offers:
          - offerId: 7235sd
            restaurantId: 1234sd
            offerType: notification
            campaignId: justOpenedPizzaHomeBrand
            consumerSegment: all
            priority:
              value: 1
              type: stackable
            description: Check out our new lunch menu
          - offerId: 12345sd
            restaurantId: 1234sd
            offerType: percent
            campaignId: CheekyTuesday
            consumerSegment: all
            priority:
              value: 1
              type: stackable
            qualifyingCriteria:
              minimumSpendValue: 1500
          - offerId: 98573gdhj
            restaurantId: 1234sd
            offerType: totalOrder
            campaignId: 2poundOffTotalOrder
            consumerSegment: all
            priority:
              value: 1
              type: stackable
            discount:
              discountAmount: 200
            qualifyingCriteria:
              minimumSpendValue: 1000
          - offerId: 345sd
            restaurantId: 1234sd
            offerType: freeItem
            discount:
              discountPercentage: 100
            consumerSegment: all
            priority:
              value: 1
              type: stackable
            qualifyingCriteria:
              benefits:
                - PARTNER_EXCLUSIVE_OFFERS
              products:
                - id: BigMacId
                - id: DoubleBigMacId
                - id: BigMacMenuId
            freeProducts:
              - id: 6 Chicken Nuggets
                preferableModifierIds:
                  - ketchupModifierId
            prompt:
              title: Nice! You get this free with your order
              description: 6 Nuggets for free when you order Big Mac
          - offerId: 345itld
            restaurantId: 1234sd
            offerType: itemLevelDiscount
            discount:
              discountPercentage: 50
            consumerSegment: all
            priority:
              value: 1
              type: stackable
            qualifyingCriteria:
              products:
                - id: BigMacId
                - id: DoubleBigMacId
                - id: BigMacMenuId
            products:
              - id: 6 Chicken Nuggets
                preferableModifierIds:
                  - ketchupModifierId
            prompt:
              title: Nice! You get this discount for items in your order your order
              description: 6 Nuggets with discount when you order Big Mac
          - offerId: 345345sd
            restaurantId: 1234sd
            offerType: bogof
            discount:
              discountAmount: 100
            campaignId: freeIceCream
            consumerSegment: all
            priority:
              value: 1
              type: stackable
            products:
              - id: CookieDoughId
              - id: FishFoodId
              - id: ChocFudgeBrownieId
            prompt:
              title: Nice! You get this free with your order
              description: Get 2 for 1 on Any Ice Cream Company's 465 ml
    ConsumeroffersConsumerOffersResponseV3:
      title: ConsumerOffersResponseV3
      type: object
      description: |
        Consumer offer response with data points to support compliance with Omnibus II legislation. In markets where Omnibus II applies, ItemLevelDiscount offers include price override data per product, with the `highlightAsOffer` flag set to false when the discount relative to the prior lowest prices in the last 30 days is less than or equal to 0.
      properties:
        offers:
          items:
            discriminator:
              mapping:
                totalOrder: '#/components/schemas/ConsumeroffersConsumerOfferTotalOrder'
                percent: '#/components/schemas/ConsumeroffersConsumerOfferPercent'
                freeItem: '#/components/schemas/ConsumeroffersConsumerOfferFreeItem'
                itemLevelDiscount: '#/components/schemas/ConsumeroffersConsumerOfferItemLevelDiscountV3'
                bogof: '#/components/schemas/ConsumeroffersConsumerOfferBogof'
                bogofMixMatch: '#/components/schemas/ConsumeroffersConsumerOfferBogofMixMatch'
                stampCard: '#/components/schemas/ConsumeroffersConsumerOfferStampCard'
                notification: '#/components/schemas/ConsumeroffersConsumerOfferNotification'
              propertyName: offerType
            oneOf:
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferItemLevelDiscountV3'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferFreeItem'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferPercent'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferStampCard'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferBogof'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferBogofMixMatch'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferNotification'
              - $ref: '#/components/schemas/ConsumeroffersConsumerOfferTotalOrder'
          description: |
            Provide applicable consumer offers based on provided `restaurantId` and basket content. For ItemLevelDiscount offers, each product includes price override data for the service type specified in the request basket.
          type: array
    ConsumeroffersConsumerSegment:
      description: Consumer Segment to which offer applies
      enum:
        - all
        - newToRestaurant
      type: string
    ConsumeroffersDiscount:
      description: Details of item discount
      type: object
      properties:
        discountPercentage:
          nullable: true
          description: The percentage of discount
          type: integer
        discountAmount:
          nullable: true
          description: Fixed value discount in smallest unit of relevant currency
          type: integer
      minProperties: 1
      maxProperties: 1
      additionalProperties: false
      example:
        discountPercentage: 100
    ConsumeroffersDiscountToDisplay:
      title: DiscountToDisplay
      type: object
      description: |
        The numeric discount value used in the offer notification's `description`. (e.g. "30% off" or "Up to 27% off"). Present for ItemLevelDiscount, Bogof, BogofMixMatch, FreeItem offers only; null for all other offer types.
      anyOf:
        - required:
            - percentage
        - required:
            - value
      properties:
        percentage:
          type: integer
          description: |
            The discount percentage to display. Populated for percentage-based offers. Absent for fixed-amount offers.
        value:
          type: integer
          description: |
            The discount amount to display, in the minor unit of the currency. Populated for fixed-amount offers. Absent for percentage-based offers.
      additionalProperties: false
      example:
        percentage: 30
    ConsumeroffersDiscountedItemVariation:
      title: DiscountedItemVariation
      type: object
      required:
        - id
      properties:
        id:
          nullable: false
          description: The identifier of the item variation
          type: string
        priceOverrides:
          nullable: true
          type: object
          description: |
            Price override data for this item variation, grouped by service type. Only populated for ItemLevelDiscount offers; null for Bogof, BogofMixMatch, and FreeItem offers.
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersServiceTypePriceOverride'
        highlightAsOffer:
          type: boolean
          default: true
          description: Indicates whether this item variation should be highlighted as part of an offer in the UI.
        hasVariablePrice:
          description: |
            Indicates whether the product has a variable price. Is true when an item has variations with multiple base prices or any modifiers with a price.
          type: boolean
          nullable: false
      additionalProperties: false
      example:
        id: SomeProductId
        highlightAsOffer: true
        hasVariablePrice: false
        priceOverrides:
          delivery:
            actual:
              discountedPrice: 700
              previousPrice: 1000
              discountPercentage: 30
            history:
              lowestPrice:
                price: 1000
    ConsumeroffersDiscountedUnitPricing:
      description: Unit-based pricing details for a discounted item
      type: object
      additionalProperties: false
      properties:
        value:
          description: Price per unit in the smallest unit of relevant currency
          type: integer
          minimum: 0
          nullable: false
          deprecated: true
        price:
          nullable: false
          type: object
          description: Price per unit broken down by fulfilment method, in minor-unit of the currency with possible 1 decimal place
          properties:
            delivery:
              description: Price per unit for delivery in minor-unit of the currency with possible 1 decimal place (65.5 meaning 65.5 p/kg)
              type: number
              format: decimal
              minimum: 0
            collection:
              description: Price per unit for collection in minor-unit of the currency with possible 1 decimal place (65.5 meaning 65.5 p/kg)
              type: number
              format: decimal
              minimum: 0
          anyOf:
            - required:
                - delivery
            - required:
                - collection
        quantity:
          description: The quantity of units
          type: number
          minimum: 0
          exclusiveMinimum: true
          nullable: false
        unit:
          description: The unit of measurement
          type: string
          enum:
            - cl
            - cm
            - g
            - kg
            - l
            - m
            - ml
            - sheet
            - sqm
            - unit
          nullable: false
        hasVariablePrice:
          description: Indicates whether the product has a variable price. Is true when an item has variations with multiple base prices or any modifiers with a price
          type: boolean
          nullable: false
      required:
        - value
        - price
        - quantity
        - unit
        - hasVariablePrice
      example:
        value: 150
        price:
          delivery: 150
          collection: 150
        quantity: 0.5
        unit: kg
        hasVariablePrice: false
    ConsumeroffersMoney:
      description: Money value in the smallest unit of local currency
      additionalProperties: false
      type: object
      title: Money
      properties:
        value:
          description: Money value in the smallest unit. For example, $1.23 would be represented as 123.
          format: integer
          type: number
          minimum: 0
      example:
        value: 50
    ConsumeroffersOfferMenuItem:
      description: Details of menu item related to offer
      type: object
      properties:
        id:
          nullable: false
          description: The identifier of menu item
          type: string
        menuItemType:
          description: The type of offer menu item
          type: string
          enum:
            - category
            - product
        roleType:
          nullable: false
          description: Represent role of this item in offer conditions
          type: string
          enum:
            - qualifyingItem
            - discountedItem
        discount:
          description: Discount applicable to item if any
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersConsumerOfferItemLevelDiscountDiscount'
      additionalProperties: false
      example:
        id: SomeProductId
        roleType: discountedItem
        menuItemType: product
        discount:
          discountPercentage: 10
    ConsumeroffersPriceOverride:
      title: PriceOverride
      type: object
      required:
        - actual
      properties:
        actual:
          type: object
          required:
            - discountedPrice
            - previousPrice
          properties:
            discountedPrice:
              type: integer
              description: |
                The price of the item variation after the offer discount has been applied, expressed in the minor currency unit of the currency (e.g. Euro cents). This is the price that the customer will pay, regardless of whether the offer is considered genuine according to Omnibus II legislation.
            previousPrice:
              type: integer
              description: |
                For display purposes, the price of the item variation before the offer discount was applied, expressed in the minor unit of the currency (e.g. Euro cents). In markets where Omnibus II legislation applies, this is the prior lowest price from the last 30 days. In other markets, this is the price as stated in the catalogue data.
            discountedUnitPrice:
              nullable: true
              type: object
              description: |
                Where applicable, the calculated unit price for the variation relative to its net quantity value, after the offer discount has been applied. This is the price per unit that the customer will pay, regardless of whether the offer is considered genuine according to Omnibus II legislation.
              allOf:
                - $ref: '#/components/schemas/ConsumeroffersPriceOverrideUnitPricing'
            previousUnitPrice:
              nullable: true
              type: object
              description: |
                Where applicable, the calculated unit price for the item variation. In markets where Omnibus II legislation applies, this is relative to its net quantity value and prior lowest price from the last 30 days. In other markets, this is relative to its net quantity value and price as stated in the catalogue data.
              allOf:
                - $ref: '#/components/schemas/ConsumeroffersPriceOverrideUnitPricing'
          oneOf:
            - required:
                - discountPercentage
              properties:
                discountPercentage:
                  type: integer
                  description: |
                    Discount as a percentage. Present for percentage-based offers only. In markets where Omnibus II legislation applies, the value represents the percentage discount relative to the item variation's prior lowest price in the last 30 days.
            - required:
                - discountValue
              properties:
                discountValue:
                  type: integer
                  description: |
                    Discount as a fixed value, expressed in the minor unit of the currency (e.g. Euro cents). Present for value-based offers only. In markets where Omnibus II legislation applies, the value represents the fixed-value discount relative to the item variation's prior lowest price in the last 30 days.
        history:
          type: object
          required:
            - lowestPrice
          properties:
            lowestPrice:
              type: object
              required:
                - price
              properties:
                price:
                  type: integer
                  description: The item variation's prior lowest price from the last 30 days, expressed in the minor unit of the currency (e.g. Euro cents).
    ConsumeroffersPriceOverrideUnitPricing:
      description: Unit-based pricing details for a discounted item
      type: object
      additionalProperties: false
      properties:
        price:
          description: |
            Price per unit in the minor unit of the currency (e.g. Euro cents), with up to one decimal place of precision. Although a departure from JET's usual API design principle of money expressed as integers in the currency's minor unit,  the extra precision is required to comply with unit pricing legislation.
          type: number
          format: float
          minimum: 0.1
          multipleOf: 0.1
          nullable: false
        quantity:
          description: The quantity of units
          type: number
          minimum: 0
          exclusiveMinimum: true
          nullable: false
        unit:
          description: The unit of measurement
          type: string
          enum:
            - cl
            - cm
            - g
            - kg
            - l
            - m
            - ml
            - sheet
            - sqm
            - unit
          nullable: false
      required:
        - price
        - quantity
        - unit
      example:
        price: 427.3
        quantity: 1
        unit: kg
    ConsumeroffersQualifyingItemVariation:
      title: QualifyingItemVariation
      description: An item variation that qualifies an order for an offer.
      type: object
      required:
        - id
      properties:
        id:
          nullable: false
          description: The identifier of the item variation.
          type: string
      additionalProperties: false
      example:
        id: var-001
    ConsumeroffersServiceTypePriceOverride:
      title: ServiceTypePriceOverride
      type: object
      properties:
        delivery:
          nullable: true
          type: object
          description: |
            Price override data to apply to this item for delivery orders. Only present when a delivery timestamp was provided in the request and if this item is available for delivery.
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersPriceOverride'
        collection:
          nullable: true
          type: object
          description: |
            Price override data to apply to this item for collection orders. Only present when a collection timestamp was provided in the request and if this item is available for collection.
          allOf:
            - $ref: '#/components/schemas/ConsumeroffersPriceOverride'
      additionalProperties: false
    ConsumerorderdeliveryrouteOrderRouteActivity:
      description: An order route activity.
      properties:
        activityType:
          description: The type of the activity, either PICKUP or DELIVER.
          nullable: false
          type: string
        index:
          description: The index of the order route activity. This is a one-based index i.e. the index starts from 1.
          minimum: 1
          nullable: false
          type: number
        isActivityForRequestedOrder:
          description: A value indicating whether this activity is for the requested order.
          nullable: false
          type: boolean
        latitude:
          description: A value indicating the latitude of the activity.
          minimum: -90
          maximum: 90
          nullable: false
          type: number
        longitude:
          description: A value indicating the longitude of the activity.
          minimum: -180
          maximum: 180
          nullable: false
          type: number
      type: object
    ConsumerorderdeliveryrouteOrderRouteErrorResponse:
      description: An error response.
      properties:
        errorId:
          description: The error Id.
          type: string
        requestId:
          description: The request Id, if available.
          type: string
        statusCode:
          description: The HTTP status code.
          format: int32
          type: integer
        errorCode:
          description: The API error code, if any.
          type: string
        message:
          description: The error message.
          type: string
        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
    ConsumerorderdeliveryrouteOrderRouteResponse:
      description: Contains the order route activities and other relevant information for an order.
      properties:
        orderId:
          description: The id of the order.
          nullable: false
          type: string
        tenant:
          description: The tenant.
          nullable: false
          type: string
        isGroupedOrder:
          description: A value indicating whether an order is part of a grouped delivery or not.
          nullable: false
          type: boolean
        orderRouteActivities:
          description: The order route activities for the order.
          items:
            $ref: '#/components/schemas/ConsumerorderdeliveryrouteOrderRouteActivity'
          nullable: true
          type: array
      type: object
    ConsumerordersConsumerOrderAddress:
      description: A postal address.
      properties:
        addressLines:
          items:
            type: string
          description: The lines of the address.
          type: array
        postalCode:
          description: The postal code.
          type: string
        location:
          $ref: '#/components/schemas/SharedGeoposition'
        city:
          description: The city or town.
          type: string
        locality:
          description: The locality, such as a district or suburb, if any.
          type: string
        region:
          description: The region, such as a county, province or state.
          type: string
        countryCode:
          description: The ISO 3166-1 alpha-2 country code.
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderApplicationInfo:
      description: Information about an application used to place an order.
      properties:
        name:
          description: The name of the application that placed the order.
          type: string
        clientIdentifier:
          description: The client identifier associated with the order, if any, such as a device Id or IP address.
          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
        feature:
          description: The name of the Just Eat feature that placed the order.
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderBasketInfo:
      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
        tips:
          description: The tips associated with the basket.
          additionalProperties:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderTipItem'
          type: object
        offers:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderOffer'
          description: The offer discounts applied to the basket.
          type: array
        bulkDiscounts:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBulkDiscountBenefits'
          description: The bulk basket item discounts applied to the basket.
          type: array
          nullable: false
          minItems: 0
          x-api-version-from: 2019-05
        subtotal:
          description: The subtotal for the basket before any discounts or fees.
          format: double
          type: number
        fees:
          description: The fees applied to the basket, if any.
          additionalProperties:
            format: double
            type: number
          type: object
        metadata:
          description: Arbitrary metadata about the basket.
          additionalProperties:
            type: string
          type: object
        discounts:
          description: The discounts applied to the basket, if any.
          additionalProperties:
            format: double
            type: number
          type: object
        total:
          description: The total value of the basket.
          format: double
          type: number
        refunds:
          description: The total value to be refunded to the customer, if any.
          format: double
          type: number
        refundDetails:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderRefund'
          description: All the customer's refunds for an order. This can include refunds for fees or offers.
          type: array
        items:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBasketItem'
          description: The items in the basket.
          type: array
        hasUnavailableItems:
          description: A value indicating whether the order has any unavailable items.
          type: boolean
        hasSubstitutedItems:
          description: A value indicating whether the order has any substituted items.
          type: boolean
        hasWeighedItems:
          description: A value indicating whether the order has any weighed items.
          type: boolean
        summary:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderBasketSummary'
        groupSummary:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderGroupSummary'
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderBasketItem:
      description: An item in a basket.
      properties:
        name:
          description: The name of the item.
          type: string
        unitPrice:
          description: The unit price for the item.
          format: double
          type: number
        requiredAccessories:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderMealAccessory'
          description: The required meal part accessories, if any.
          type: array
        optionalAccessories:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderMealAccessory'
          description: The optional meal part accessories, if any.
          type: array
        bulkDiscounts:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBulkDiscount'
          description: The bulk discounts, if any.
          type: array
        description:
          description: The description for the item.
          type: string
        synonym:
          description: The synonym of the item.
          type: string
        discounts:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderDiscount'
          description: The discounts, if any.
          type: array
        combinedPrice:
          description: The combined price for the item, including any accessories and/or discounts.
          format: double
          type: number
        parts:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderMealPart'
          description: The parts of the meal, if any.
          type: array
        isUnavailable:
          description: A value indicating whether the item is unavailable or not.
          type: boolean
        productId:
          description: The product Id.
          type: string
        participantId:
          nullable: true
          description: The participant Id.
          type: string
        customerNotes:
          nullable: true
          description: The customer's item-level notes.
          type: string
        restrictions:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderRestriction'
          description: The restrictions, if any.
          type: array
          x-api-version-from: 2019-05
        netQuantity:
          nullable: true
          $ref: '#/components/schemas/ConsumerordersConsumerOrderNetQuantity'
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderBasketSummary:
      description: A summary of the items in the basket for an order.
      properties:
        items:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBasketSummaryItem'
          description: The items in the basket summary.
          type: array
        substitutions:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderSubstitutions'
        unavailable:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBasketSummaryItem'
          description: The unavailable items in the basket.
          type: array
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderBasketSummaryAdjustedItem:
      description: Represents an adjusted weighed item.
      properties:
        id:
          description: The id of the adjusted item.
          type: string
          nullable: false
        name:
          description: The name of the adjusted item.
          type: string
          nullable: false
        synonym:
          description: The synonym of the item.
          type: string
          nullable: true
        quantity:
          description: The quantity of the item.
          format: int32
          type: integer
          nullable: true
        unitPrice:
          description: The unit price of the item.
          format: double
          type: number
          nullable: true
        accessories:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderMealAccessory'
          description: The accessories in the basket summary item.
          type: array
          nullable: true
        price:
          description: The price of the adjusted item.
          format: double
          type: number
          nullable: false
        priceChange:
          description: The price change of the adjusted item.
          format: double
          type: number
          nullable: false
        netQuantity:
          nullable: false
          $ref: '#/components/schemas/ConsumerordersConsumerOrderNetQuantity'
      type: object
    ConsumerordersConsumerOrderBasketSummaryItem:
      description: A summarised item in a basket.
      properties:
        name:
          description: The name of the item.
          type: string
        unitPrice:
          description: The unit price of the item.
          format: double
          type: number
        accessories:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderMealAccessory'
          description: The accessories in the basket summary item.
          type: array
        synonym:
          description: The synonym of the item.
          type: string
        quantity:
          description: The quantity of the item.
          format: int32
          type: integer
        price:
          description: The price of the item for the associated quantity.
          format: double
          type: number
        id:
          description: The Id of the item, such as a product Id or meal part Id.
          type: string
        participantId:
          nullable: true
          description: The participant Id.
          type: string
        items:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBasketSummaryItem'
          description: The items in the basket summary item.
          type: array
        customerNotes:
          nullable: true
          description: The customer's item-level notes.
          type: string
        isUnavailable:
          description: A value indicating whether the item is unavailable or not.
          type: boolean
        netQuantity:
          nullable: true
          $ref: '#/components/schemas/ConsumerordersConsumerOrderNetQuantity'
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderBenefits:
      description: A list of customer benefits associated with the order.
      properties:
        value:
          description: The benefit the customer was entitled to when placing the order, like free delivery benefit from JET premium subscription.
          enum:
            - unlimitedFreeDelivery
          type: string
    ConsumerordersConsumerOrderBulkDiscount:
      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
        benefits:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderExclusiveOfferType'
          description: The type(s) of the benefit.
          type: array
          nullable: false
          minItems: 0
          x-api-version-from: 2019-05
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderBulkDiscountBenefits:
      description: Bulk discount offers applied to one or more basket items.
      properties:
        benefits:
          type: array
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderExclusiveOfferType'
          description: The type(s) of the benefit.
          nullable: false
          minItems: 0
      type: object
      x-api-version-from: 2019-05
    ConsumerordersConsumerOrderConsumerInfo:
      description: Information about a consumer.
      properties:
        name:
          description: The consumer's name.
          type: string
        deliveryAddress:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderAddress'
        timeZone:
          description: The IANA time zone Id the consumer is located in.
          type: string
        contactNumber:
          description: The consumer's contact number.
          type: string
        id:
          description: The consumer Id.
          type: string
        email:
          description: The consumer's email address.
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderConsumerReview:
      description: A consumer's review of an order.
      properties:
        comments:
          description: Any comments left by the consumer in the review.
          type: string
        perceivedFulfillmentTimeInMinutes:
          nullable: true
          description: The perceived order fulfillment time in minutes given by the consumer.
          type: integer
          format: int32
          minimum: 5
          maximum: 120
        deliveryReviewScoreRangeVersion:
          description: The version of the delivery score range supplied.
          type: string
          example: v3
        scores:
          description: The scores given for the scored attributes of the review by the consumer.
          additionalProperties:
            format: double
            type: number
          type: object
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderCuisineInfo:
      description: Information about a restaurant cuisine.
      properties:
        name:
          description: The name of the cuisine.
          type: string
        rank:
          description: The ranking for the cuisine.
          format: int32
          type: integer
        id:
          description: The Id of the cuisine.
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderDateTimeRange:
      description: A range of date and time values.
      properties:
        start:
          description: The start of the range.
          format: date-time
          type: string
        end:
          description: The end of the range.
          format: date-time
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderDecisionRequest:
      description: A request to submit a consumer's decision regarding an order modification proposal.
      required:
        - requestedDecision
        - replyType
      properties:
        requestedDecision:
          description: The decision made by the consumer.
          type: string
          enum:
            - acceptModification
            - cancelOrder
        replyType:
          description: The type of reply.
          type: string
          enum:
            - customerDecision
      x-api-version-from: 2026-03
      type: object
    ConsumerordersConsumerOrderDecisionWindow:
      description: Information about the modification decision window.
      properties:
        durationSeconds:
          description: The duration in seconds that the customer has to make a decision.
          format: int32
          type: integer
        endTime:
          description: The UTC timestamp when the decision window expires.
          format: date-time
          type: string
      x-api-version-from: 2026-03
      type: object
    ConsumerordersConsumerOrderDeliveryOptions:
      description: The delivery options of an order.
      nullable: true
      type: object
      required:
        - selectedOption
      properties:
        selectedOption:
          type: string
          description: The identifier of the delivery model option selected by user during checkout.
          enum:
            - courier
            - drone
            - robot
    ConsumerordersConsumerOrderDiscount:
      description: A discount.
      properties:
        name:
          description: The name of the discount.
          type: string
        amount:
          description: The amount of the discount.
          format: double
          type: number
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderErrorResponse:
      description: An error response.
      properties:
        statusCode:
          description: The HTTP status code.
          format: int32
          type: integer
        _links:
          description: The links information, if any.
          additionalProperties:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderLink'
          type: object
        requestId:
          description: The request Id, if available.
          type: string
        errorCode:
          description: The API error code, if any.
          type: string
        fingerprint:
          description: The error fingerprint, if available.
          type: string
        errorId:
          description: The error Id.
          type: string
        version:
          description: The version of the API that generated the error.
          type: string
        message:
          description: The error message.
          type: string
        detail:
          description: The optional error detail.
          type: object
        timestamp:
          description: The timestamp of the error.
          format: date-time
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderExclusiveOfferType:
      type: string
      description: Supported Exclusive Offer types
      enum:
        - PARTNER_EXCLUSIVE_OFFERS
    ConsumerordersConsumerOrderGroupSummary:
      description: A summary of the participants in the basket for an order.
      properties:
        name:
          description: Name of the group based on the Initiator name.
          type: string
        participants:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderGroupSummaryParticipant'
          type: array
      x-api-version-from: 2019-04
      type: object
    ConsumerordersConsumerOrderGroupSummaryParticipant:
      description: A participant of an group order.
      properties:
        id:
          description: The Id of the participant
          type: string
        name:
          description: The name of the participant.
          type: string
      x-api-version-from: 2019-04
      type: object
    ConsumerordersConsumerOrderImage:
      description: An image.
      properties:
        imageType:
          description: The type of the image, such as a logo.
          type: string
        height:
          nullable: true
          description: The optional height of the image, in pixels.
          format: int32
          type: integer
        uri:
          description: The URI of the image.
          type: string
        width:
          nullable: true
          description: The optional width of the image, in pixels.
          format: int32
          type: integer
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderLink:
      description: A link to an API resource.
      properties:
        templated:
          description: A value indicating whether the URL is templated.
          type: boolean
        href:
          description: The URL of the link.
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderMarketingInformation:
      description: Returns marketing information about the customer.
      type: object
      properties:
        isReturningCustomer:
          type: boolean
          description: Indicates if the customer is a returning customer.
    ConsumerordersConsumerOrderMealAccessory:
      description: An accessory for a meal.
      properties:
        name:
          description: The name of the accessory.
          type: string
        unitPrice:
          description: The unit price of the accessory.
          format: double
          type: number
        quantity:
          description: The quantity of the accessory.
          format: int32
          type: integer
        accessoryId:
          description: The accessory Id.
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderMealPart:
      description: A part of a meal.
      properties:
        synonym:
          description: The synonym of the meal part.
          type: string
        groupId:
          description: The group Id.
          type: string
        requiredAccessories:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderMealAccessory'
          description: The required meal part accessories, if any.
          type: array
        optionalAccessories:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderMealAccessory'
          description: The optional meal part accessories, if any.
          type: array
        name:
          description: The name of the meal part.
          type: string
        mealPartId:
          description: The meal part Id.
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderMemberships:
      description: The details of a membership acquired as part of an order
      properties:
        type:
          description: The type of membership purchased. Required when isFreeTrial is populated.
          type: string
        isFreeTrial:
          description: Flags if a membership is a free trial or not. Required when type is populated.
          type: boolean
        benefits:
          type: array
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBenefits'
          description: The customer benefits associated with the order, for example free delivery from a purchased JET membership.
          minItems: 0
          nullable: false
      x-api-version-from: 2019-05
      type: object
    ConsumerordersConsumerOrderModificationDecision:
      description: Information about whether customer input is required for order modifications.
      properties:
        isAwaitingDecision:
          description: A value indicating whether a customer decision is still awaited.
          type: boolean
        decision:
          description: The decision that has been submitted for this modification. This could be due to a timeout or a customer decision.
          type: string
          enum:
            - cancelOrder
            - acceptModification
        replyType:
          description: The reply type indicating how the decision was made.
          type: string
          enum:
            - timeout
            - customerDecision
        defaultOutcomeOnTimeout:
          description: The action taken if no customer decision is received.
          type: string
          enum:
            - cancelOrder
            - acceptModification
        decisionWindow:
          nullable: true
          x-api-version-from: 2026-03
          $ref: '#/components/schemas/ConsumerordersConsumerOrderDecisionWindow'
      x-api-version-from: 2026-03
      type: object
    ConsumerordersConsumerOrderNetQuantity:
      description: The net quantity of a weighed item.
      properties:
        value:
          description: The weight value of the item.
          format: double
          type: number
        unit:
          description: The weight unit of measurement for the item.
          type: string
      type: object
      nullable: true
    ConsumerordersConsumerOrderOffer:
      description: An offer applied to a basket.
      properties:
        offerType:
          description: The type of the offer.
          type: string
        qualifyingValue:
          description: The qualifying value for the offer.
          format: double
          type: number
        id:
          description: The offer Id.
          type: string
        offerAmount:
          description: The value of the offer.
          format: double
          type: number
        benefits:
          type: array
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderExclusiveOfferType'
          description: The type(s) of the benefit.
          nullable: false
          x-api-version-from: 2019-05
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderOrder:
      description: An order.
      properties:
        id:
          description: The Id of the order.
          type: string
        metadata:
          description: Arbitrary metadata about the order.
          additionalProperties:
            type: string
          type: object
        consumer:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderConsumerInfo'
        application:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderApplicationInfo'
        review:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderReviewInfo'
        payment:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderPaymentInfo'
        restaurant:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderRestaurantInfo'
        basket:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderBasketInfo'
        benefits:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBenefits'
          description: The customer benefits associated with the order, for example free delivery from a purchased JET membership.
          x-api-version-from: 2019-05
          type: array
        timestamp:
          description: The UTC timestamp of the date and time that the response was generated at.
          format: date-time
          x-api-version-from: 2019-04
          type: string
        _links:
          description: The links information, if any.
          additionalProperties:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderLink'
          type: object
        tenant:
          description: The tenant associated with the order.
          type: string
        information:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderOrderInfo'
        friendlyId:
          description: The friendly order Id.
          type: string
        shouldRefreshTokenOnOrderDetailsPage:
          description: Indicates whether the token should be refreshed on the order details page.
          type: boolean
          nullable: true
        status:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderStatusInfo'
        memberships:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderMemberships'
          description: Details about the membership acquired in this order
          x-api-version-from: 2019-05
          type: array
          minItems: 0
          nullable: false
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderOrderHistory:
      description: The order history of a consumer.
      properties:
        tenant:
          description: The tenant associated with the consumer.
          type: string
        consumerId:
          description: The Id of the consumer.
          type: string
        _links:
          description: The links information, if any.
          additionalProperties:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderLink'
          type: object
        _pagination:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderPaginationInfo'
        timestamp:
          description: The UTC timestamp of the date and time that the response was generated at.
          format: date-time
          x-api-version-from: 2019-04
          type: string
        orders:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderOrder'
          description: The consumer's orders.
          type: array
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderOrderInfo:
      description: Additional information about an order.
      properties:
        canReorder:
          description: A value indicating whether the order can be re-ordered.
          type: boolean
        isAsap:
          description: A value indicating whether the order should be fulfilled as soon as possible.
          type: boolean
        createdAt:
          description: The date and time the order was created.
          format: date-time
          type: string
        notes:
          description: Any notes associated with the order given by the consumer.
          additionalProperties:
            type: string
          type: object
        isForDelivery:
          description: A value indicating whether the order is for delivery.
          type: boolean
        deliveryCode:
          nullable: true
          description: The delivery code associated with the order.
          type: string
        modificationDecision:
          nullable: true
          x-api-version-from: 2026-03
          $ref: '#/components/schemas/ConsumerordersConsumerOrderModificationDecision'
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderOrderStatus:
      description: The status of an order.
      properties:
        tenant:
          description: The tenant associated with the order.
          type: string
        consumerId:
          description: The Id of consumer associated with the order.
          type: string
        isForDelivery:
          description: A value indicating whether the order is for delivery.
          type: boolean
        deliveryModelOptions:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderDeliveryOptions'
          x-api-version-from: 2019-04
        timestamp:
          description: The UTC timestamp of the date and time that the response was generated at.
          format: date-time
          x-api-version-from: 2019-04
          type: string
        id:
          description: The Id of the order.
          type: string
        restaurantName:
          description: The name of the restaurant associated with the order.
          type: string
        status:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderStatusInfo'
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderOrderTracking:
      description: The tracking information of an order.
      properties:
        id:
          description: The Id of the order.
          type: string
        fulfillment:
          description: Fulfillment details for the order.
          type: object
          properties:
            type:
              description: The type of fulfillment for the order (e.g., delivery, collection).
              type: string
              enum:
                - delivery
                - collection
            isPooled:
              description: A value indicating whether the order is pooled.
              type: boolean
            courier:
              description: Courier information for the order.
              type: object
              properties:
                isTrackable:
                  description: A value indicating whether the courier is capable of providing enhanced tracking information.
                  type: boolean
              required:
                - isTrackable
            allowUnlock:
              description: A value indicating whether the order can be unlocked.
              type: boolean
              nullable: true
          required:
            - type
            - isPooled
        storefront:
          description: Information about the storefront for this order.
          type: object
          properties:
            tags:
              description: Tags identifying the type and characteristics of the storefront the order was placed at.
              type: array
              items:
                type: string
          required:
            - tags
        tracking:
          description: Raw order tracking data.
          type: object
          properties:
            status:
              description: The current status of the order.
              type: string
            etaUtc:
              description: The UTC timestamp of the estimated arrival time.
              format: date-time
              type: string
            isActive:
              description: A value indicating whether the status of the order may change further.
              type: boolean
            lastDeliveryUpdateAt:
              nullable: true
              description: The UTC timestamp of the latest delivery status update, if applicable.
              format: date-time
              type: string
          required:
            - status
            - etaUtc
        courierChat:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderStatusNotificationsInfo'
        isShareable:
          description: A value indicating whether the order details can be shared with other people.
          type: boolean
        annotations:
          description: Display annotations for the order tracking information.
          type: object
          properties:
            tagline:
              description: The main tagline for the tracking display.
              type: object
              properties:
                displayText:
                  description: The text to display for the tagline.
                  type: string
              required:
                - displayText
            primaryStatus:
              description: The primary status message for the order.
              type: object
              properties:
                displayText:
                  description: The text to display for the primary status.
                  type: string
              required:
                - displayText
            subStatus:
              description: Additional status information.
              type: object
              properties:
                displayText:
                  description: The text to display for the sub-status.
                  type: string
              required:
                - displayText
            eta:
              description: The estimated time of arrival display information.
              type: object
              properties:
                displayText:
                  description: The human-readable ETA text.
                  type: string
                displayTemplates:
                  description: Array of template configurations for displaying ETA based on time thresholds.
                  type: array
                  items:
                    type: object
                    properties:
                      upperExclusiveThresholdSeconds:
                        description: The upper exclusive threshold in seconds for when this template should be used.
                        type: integer
                        minimum: 0
                      template:
                        description: The template string to use for displaying the ETA.
                        type: string
                    required:
                      - upperExclusiveThresholdSeconds
                      - template
                displayTemplateDefault:
                  description: The default template string to use when no threshold templates match.
                  type: string
            progressStep:
              description: Condensed progress step information.
              type: object
              properties:
                currentStep:
                  description: The current step in the progress. Must be between 0 and numberOfSteps (inclusive).
                  type: integer
                  minimum: 0
                numberOfSteps:
                  description: The total number of steps in the progress.
                  type: integer
                  minimum: 1
              required:
                - currentStep
                - numberOfSteps
      required:
        - id
        - fulfillment
        - storefront
        - tracking
        - annotations
      x-api-version-from: 2025-10
      type: object
    ConsumerordersConsumerOrderPaginationInfo:
      description: Pagination information for a request.
      properties:
        links:
          description: The pagination links.
          additionalProperties:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderLink'
          type: object
        token:
          description: The pagination token for the next page of results, if any.
          type: string
        total:
          nullable: true
          description: The total number of results, if known.
          format: int64
          type: integer
        count:
          description: The current number of results.
          format: int64
          type: integer
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderPaymentInfo:
      description: Information about a payment.
      properties:
        totals:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderTotals'
        currencyCode:
          description: The ISO-4217 currency code associated with the payment.
          type: string
        paidAt:
          nullable: true
          description: The date and time the order was paid for, if known.
          format: date-time
          type: string
        fees:
          description: The amount of fees applied to the order.
          additionalProperties:
            format: double
            type: number
          type: object
        payments:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderPaymentItem'
          description: The individual payment(s).
          type: array
        taxes:
          description: The taxes applied to the order.
          additionalProperties:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderTaxItem'
          type: object
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderPaymentItem:
      description: An individual payment.
      properties:
        transactionReference:
          description: The transaction reference, if any.
          type: string
        value:
          description: The payment value.
          format: double
          type: number
        cardType:
          description: The card type, such as VISA, if used.
          type: string
        lastCardDigits:
          description: The last digits of a payment card, if used.
          type: string
        deferredFee:
          description: The deferred fee value, if any.
          format: double
          x-api-version-from: 2019-05
          type: number
        displayName:
          description: The display name of the payment method in the customer's language
          type: string
        fee:
          description: The payment fee, if any.
          format: double
          type: number
        paymentMethod:
          description: The payment method, such as cash or card.
          enum:
            - None
            - Cash
            - Card
            - AccountCredit
            - Voucher
            - PayPal
            - Interac
            - ApplePay
          x-api-version-from: 2017-10
          type: string
        paymentType:
          description: The payment type, such as "cash" or "creditcard".
          type: string
        voucherCode:
          description: The voucher code used, if any.
          x-api-version-from: 2019-05
          type: string
        pspName:
          description: The name of the Payment Service Provider, if any.
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderPromotions:
      description: Consumer order promotions containing WebView content.
      type: object
      properties:
        promotionBanner:
          nullable: true
          type: object
          description: Promotion banner object containing tracking ID and field information.
          required:
            - fields
          properties:
            trackingId:
              nullable: true
              description: |
                Tracking identifier for analytics and user interaction monitoring.
                Likely, but not guaranteed, to be a UUID.
              type: string
              example: 00000000-0000-0000-0000-000000000000
            fields:
              $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsLayoutWebViewItem'
      example:
        promotionBanner:
          trackingId: 00000000-0000-0000-0000-000000000000
          fields:
            ref: https://one-web-staging.just-eat.co.uk/search-webviews/static/example.html
            data:
              container:
                content:
                  image: https://just-eat-prod-eu-res.cloudinary.com/image/upload/example.png
                  background: '#f8e7b3'
                  title: Exclusive Offer
                  cta: Order Now
                  hero_text: 20%
                actions: []
              subtitle:
                content:
                  part1_text: 'Get '
                  part1_type: normal
                  part2_text: '20% off '
                  part2_type: bold
                  part3_text: ' your next order'
                  part3_type: normal
    ConsumerordersConsumerOrderRefund:
      description: A refund issued to the customer.
      properties:
        amount:
          description: The amount refunded.
          format: double
          type: number
        type:
          description: The type of refund issued.
          type: string
      x-api-version-from: 2019-05
      type: object
    ConsumerordersConsumerOrderReorderErrorResponse:
      description: An error response.
      properties:
        statusCode:
          description: The HTTP status code.
          format: int32
          type: integer
        _links:
          description: The links information, if any.
          additionalProperties:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderLink'
          type: object
        requestId:
          description: The request Id, if available.
          type: string
        errorCode:
          description: The API error code, if any.
          type: string
        fingerprint:
          description: The error fingerprint, if available.
          type: string
        errorId:
          description: The error Id.
          type: string
        alternativeServiceTypes:
          description: An array of alternative service types that are available.
          type: array
          nullable: true
          items:
            type: string
            enum:
              - collection
              - delivery
        version:
          description: The version of the API that generated the error.
          type: string
        message:
          description: The error message.
          type: string
        detail:
          description: The optional error detail.
          type: object
        timestamp:
          description: The timestamp of the error.
          format: date-time
          type: string
        basketState:
          description: The state of the basket.
          type: string
          nullable: true
          enum:
            - full
            - partial
            - empty
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderReorderResponse:
      properties:
        tenant:
          description: The tenant.
          type: string
        serviceType:
          description: The service type, such as collection or delivery.
          type: string
        menuId:
          description: The menu Id.
          type: string
        restaurantId:
          description: The restaurant Id.
          type: string
        restaurantSeoName:
          description: The restaurant SEO name.
          type: string
        basketId:
          description: The basket Id.
          type: string
        unavailableProductIds:
          items:
            type: string
          description: The unavailable product Ids.
          type: array
        basketState:
          nullable: false
          description: The state of the returned basket.
          enum:
            - full
            - partial
            - empty
          type: string
      additionalProperties: false
      type: object
      description: A reorder response.
      x-api-version-from: 2020-06
    ConsumerordersConsumerOrderRestaurantCapability:
      description: A capability of a restaurant.
      properties:
        name:
          description: The name of the capability.
          type: string
        isCapable:
          description: A value indicating whether the restaurant is capable of fulfilling the capability.
          type: boolean
        metadata:
          description: Arbitrary metadata about the capability.
          additionalProperties:
            type: string
          type: object
      x-api-version-from: 2018-09
      type: object
    ConsumerordersConsumerOrderRestaurantInfo:
      description: Information about a restaurant.
      properties:
        id:
          description: The Id of the restaurant.
          type: string
        metadata:
          description: Arbitrary metadata about the restaurant.
          additionalProperties:
            type: string
          type: object
        isOffline:
          description: A value indicating whether the restaurant is currently offline.
          type: boolean
        cuisines:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderCuisineInfo'
          description: The cuisines associated with the restaurant.
          type: array
        timeZone:
          description: IANA time zone Id the restaurant is located in.
          type: string
        capabilities:
          description: The capabilities of the restaurant.
          additionalProperties:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderRestaurantCapability'
          x-api-version-from: 2018-09
          type: object
        seoName:
          description: The SEO name of the restaurant.
          type: string
        images:
          description: The images associated with the restaurant.
          additionalProperties:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderImage'
          type: object
        postalAddress:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderAddress'
        nextClosesAt:
          nullable: true
          description: The date and time the restaurant next closes, if open.
          format: date-time
          type: string
        displayName:
          description: The display name of the restaurant.
          type: string
        contactNumber:
          description: The contact telephone number for the restaurant.
          type: string
        nextOpensAt:
          nullable: true
          description: The date and time the restaurant next opens, if closed.
          format: date-time
          type: string
        isClosed:
          description: A value indicating whether the restaurant is currently closed.
          type: boolean
        storefrontType:
          description: The type identifier for the store handling the order.
          type: string
        availableServiceTypes:
          description: An array of service types that are available.
          type: array
          nullable: false
          items:
            type: string
            enum:
              - collection
              - delivery
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderRestriction:
      description: An order item can have a restriction. For example the item might be alcohol.
      properties:
        type:
          description: The type of restriction.
          type: string
      x-api-version-from: 2019-05
      type: object
    ConsumerordersConsumerOrderReviewInfo:
      description: Information about the review for an order.
      properties:
        reviewerGivenName:
          description: The given name of the customer that left 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
        averageScore:
          nullable: true
          description: The average score for the attributes of the review.
          format: double
          type: number
        comments:
          description: Any comments left by the consumer in the review.
          type: string
        ratingCode:
          description: The rating code for the review.
          type: string
        reviewDate:
          description: The date the review was submitted.
          format: date-time
          type: string
        canReview:
          description: A value indicating whether the order can be reviewed.
          type: boolean
        type:
          description: Specifies the order review type based on market, service type, and if the order is marketplace or logistics.
          type: string
          enum:
            - default
            - marketplaceWithEta
        scores:
          description: The scores given for the scored attributes of the review.
          additionalProperties:
            format: double
            type: number
          type: object
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderStatusHistoryItem:
      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:
          nullable: true
          description: The due date at the date and time associated with the timestamp, if any.
          format: date-time
          type: string
        timestamp:
          description: The timestamp associated with this order status.
          format: date-time
          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.
          x-api-version-from: 2019-05
          type: string
        value:
          description: The order status at the date and time associated with the timestamp.
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderStatusInfo:
      description: Information about the status of an order.
      properties:
        isDueDateDynamic:
          description: |-
            A value indicating whether the current due date was determined
            dynamically, for example from the current location of a delivery driver.
          x-api-version-from: 2019-04
          type: boolean
        history:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderStatusHistoryItem'
          description: The history of the order's statuses, if available.
          type: array
        currentDueDate:
          nullable: true
          description: The current due date of the order, if any.
          format: date-time
          type: string
        estimatedCompletion:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderDateTimeRange'
        estimatedCompletionInMinutes:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderTimeRangeInMinutes'
        isRecent:
          description: A value indicating whether the order is a recent order.
          type: boolean
        allowUnlock:
          description: A value indicating whether the order can be unlocked.
          type: boolean
          nullable: true
        delay:
          description: How delayed the order is.
          type: string
        expectPreorderNotificationAt:
          nullable: true
          description: The date and time the restaurant is expected to accept a preorder, if any.
          format: date-time
          type: string
        timeZone:
          description: IANA time zone Id associated with the order.
          type: string
        courierChat:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderStatusNotificationsInfo'
        tracking:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderTrackingInfo'
        notifications:
          $ref: '#/components/schemas/ConsumerordersConsumerOrderStatusNotificationsInfo'
        isActive:
          description: A value indicating whether the status of the order may change further.
          type: boolean
        initialDueDate:
          nullable: true
          description: The initial due date of the order, if any.
          format: date-time
          type: string
        finishedAt:
          nullable: true
          description: The date and time the order was finished, if completed successfully.
          format: date-time
          type: string
        confidence:
          description: The confidence level of the order's status.
          type: string
        isDelayed:
          description: A value indicating whether the order is delayed.
          type: boolean
        value:
          description: The current status of the order.
          type: string
        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.
          x-api-version-from: 2019-05
          type: string
        upcoming:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderUpcomingStatusItem'
          description: The expected upcoming order statuses for the order, if known.
          type: array
        isPooled:
          description: A value indicating whether the order is pooled.
          type: boolean
        isShareable:
          description: A value indicating whether the order details can be shared with other people.
          type: boolean
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderStatusNotificationsInfo:
      description: Status updates notification information for an order.
      properties:
        channelKey:
          description: The key for the status updates notification channel, if any.
          type: string
        providerName:
          description: The name of the status updates notification provider, such as PubNub.
          type: string
        channelName:
          description: The name of the status updates notification channel.
          type: string
      x-api-version-from: 2018-09
      type: object
    ConsumerordersConsumerOrderSubstitution:
      description: Represents the added and removed items for a substitution.
      properties:
        added:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBasketSummaryItem'
          description: The items which have substituted the original basket item(s).
          type: array
        removed:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBasketSummaryItem'
          description: The item(s) in the basket that have been substituted.
          type: array
        adjusted:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderBasketSummaryAdjustedItem'
          description: The items which have been adjusted as weighed items.
          type: array
      x-api-version-from: 2019-04
      type: object
    ConsumerordersConsumerOrderSubstitutions:
      description: Information about any substituted items.
      properties:
        refundAmount:
          description: The total refund amount for all of the substituted items.
          format: decimal
          type: number
        items:
          items:
            $ref: '#/components/schemas/ConsumerordersConsumerOrderSubstitution'
          description: Details about basket items that have been substituted.
          type: array
      x-api-version-from: 2019-04
      type: object
    ConsumerordersConsumerOrderTaxItem:
      description: A tax item.
      properties:
        rate:
          description: The tax rate.
          format: double
          type: number
        name:
          description: The name of the tax.
          type: string
        value:
          description: The value of the tax due.
          format: double
          type: number
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderTimeRangeInMinutes:
      description: A time range in minutes.
      properties:
        start:
          description: The start of the range in minutes.
          type: number
        end:
          description: The end of the range in minutes.
          type: number
      x-api-version-from: 2019-05
      type: object
      nullable: true
    ConsumerordersConsumerOrderTipItem:
      description: A tip.
      properties:
        name:
          description: The name of the type of the tip.
          type: string
        amount:
          description: The cash value of the tip.
          format: double
          type: number
        value:
          description: The value of the tip relative to its type, such as the percentage.
          format: double
          type: number
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderTotals:
      description: A class containing payment totals.
      properties:
        taxes:
          description: The total amount of taxes 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
        tips:
          description: The total amount of tips applied to the order.
          format: double
          type: number
        accountCredits:
          description: The total amount of account credit(s) applied to the order.
          format: double
          type: number
        subtotal:
          description: The subtotal for the order.
          format: double
          type: number
        totalToPay:
          description: The total to pay for 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
        vouchers:
          description: The total amount of any voucher(s) applied to the order.
          format: double
          type: number
        fees:
          description: The total amount of fees applied to the order.
          format: double
          type: number
        nonRefundableTotal:
          description: The total amount of non-refundable benefits or fees, such as premium membership.
          format: double
          type: number
          x-api-version-from: 2019-05
        reservedForAdjustments:
          description: The total amount reserved for potential weighed item adjustments.
          format: double
          type: number
          nullable: true
        isEstimated:
          description: A value indicating whether the payment totals are estimated.
          type: boolean
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderTrackingInfo:
      description: Tracking information for an order.
      properties:
        channelKey:
          description: The key for the tracking channel, if any.
          type: string
        providerName:
          description: The name of the tracking provider, such as PubNub.
          type: string
        channelName:
          description: The name of the tracking channel.
          type: string
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrderUpcomingStatusItem:
      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
      x-api-version-from: 2017-10
      type: object
    ConsumerordersConsumerOrdersPostTokenRequest:
      description: A Live Activity device token POST request.
      type: object
      properties:
        orderId:
          type: string
          description: The 22 character global order Id of the order associated with the push token.
        deviceToken:
          type: string
          description: The push Apple device token to be stored.
        bundleId:
          type: string
          description: The Apple bundle ID from which the device token was generated.
    ConsumerqueriesLateOrderCompensationRestaurantResolution:
      type: object
      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
      example:
        acceptedAmount: 500
        isAccepted: true
        orderId: 69rqfxyfze2gjzf5nusdcw
    ConsumerqueriesLateOrderRestaurantResponse:
      properties:
        lateOrderStatus:
          description: The updated later order query status
          enum:
            - Preparing
            - OnItsWay
            - Delivered
          type: string
        additionalDeliveryTimeToAddMinutes:
          description: The amount of time to add to the current delivery estimate in minutes
          type: integer
      type: object
    ConsumerqueriesWebhooksLateOrderCompensationOptions:
      items:
        $ref: '#/components/schemas/OrderpadAppLateOrderCompensationOption'
        type: object
      type: array
    ConsumerqueriesWebhooksLateOrderCompensationQuery:
      type: object
      properties:
        tenant:
          description: Tenant (Country) of order restaurant.
          type: string
        compensationOptions:
          description: List of possible options for compensation
          $ref: '#/components/schemas/ConsumerqueriesWebhooksLateOrderCompensationOptions'
        orderId:
          description: Just Eat order identifier
          type: string
        restaurantId:
          description: Just Eat restaurant identifier
          type: string
      example:
        Tenant: uk
        CompensationOptions:
          - IsRecommended: false
            Amount: 200
          - IsRecommended: true
            Amount: 300
          - IsRecommended: false
            Amount: 400
        OrderId: wiej234idf09i29jijgf4
        RestaurantId: '110230'
    ConsumerqueriesWebhooksLateOrderQuery:
      type: object
      properties:
        tenant:
          description: Tenant (Country) of order restaurant.
          type: string
        orderId:
          description: Just Eat order identifier
          type: string
        restaurantId:
          description: Just Eat restaurant identifier
          type: string
      example:
        Tenant: uk
        OrderId: wiej234idf09i29jijgf4
        RestaurantId: '110230'
    ConsumersAccountBalanceResponse:
      description: Details of the account balance
      properties:
        value:
          format: int32
          type: integer
          description: The consumer's balance value
      type: object
    ConsumersConsumerCreate:
      required:
        - emailAddress
        - firstName
        - lastName
      properties:
        registrationSource:
          default: Native
          description: The registration source of the consumer. Australia and New Zealand only support Guest
          enum:
            - Native
            - Guest
          type: string
        firstName:
          maxLength: 160
          description: The consumer's first name
          type: string
        password:
          minLength: 4
          description: The consumer's password
          maxLength: 160
          type: string
        lastName:
          maxLength: 160
          description: The consumer's last name
          type: string
        emailAddress:
          maxLength: 160
          description: The consumer's email address
          format: email
          type: string
        phoneNumber:
          type: string
          minLength: 3
          maxLength: 16
          description: The consumer's phone number
          nullable: true
      example:
        registrationSource: Native
        firstName: Bob
        password: Pa55word
        lastName: Smith
        emailAddress: consumer@just-eat.com
      type: object
    ConsumersConsumerCreateResponse:
      required:
        - type
        - token
      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
      example:
        token: SKgaDl0wZxnwjNgLxBnU646PDTquWLHOyPuyzidIZIg=
        type: otac
      type: object
    ConsumersConsumerCreateV2:
      required:
        - emailAddress
        - fullName
      properties:
        registrationSource:
          default: native
          description: The registration source of the consumer. Australia and New Zealand only support Guest
          enum:
            - native
            - guest
          type: string
        password:
          minLength: 4
          description: The consumer's password
          maxLength: 160
          type: string
        fullName:
          maxLength: 100
          description: The consumer's full name
          type: string
        emailAddress:
          maxLength: 160
          description: The consumer's email address
          format: email
          type: string
        optInToMarketing:
          type: boolean
          description: Has the consumer explicitly opted in or out for marketing?
          nullable: true
        registrationMethod:
          default: unknown
          description: The registration method of the consumer.
          enum:
            - apple
            - corporateSSO
            - email
            - facebook
            - google
            - guest
            - unknown
          type: string
          nullable: true
        phoneNumber:
          type: string
          minLength: 3
          maxLength: 16
          description: The consumer's phone number
          nullable: true
      example:
        registrationSource: native
        fullName: Bob Smith
        password: Pa55word
        emailAddress: consumer@just-eat.com
        registrationMethod: email
      type: object
    ConsumersConsumerErrorResponse:
      description: Details of an error response
      properties:
        codeText:
          type: string
          description: The description
        code:
          format: int32
          type: integer
          description: The error code
      type: object
    ConsumersConsumerMappingRequest:
      required:
        - klantId
      properties:
        klantId:
          description: The Takeaway Consumer Identifier.
          type: string
      example:
        klantId: '12343534565'
      type: object
    ConsumersConsumerMappingResponse:
      required:
        - consumerId
      properties:
        consumerId:
          description: The Just Eat consumer Identifier.
          type: string
      example:
        consumerId: '134567799'
      type: object
    ConsumersConsumerTakeawayPayDetailsResponse:
      description: Consumer Takeaway Pay account details.
      properties:
        takeawayPayLinked:
          description: Takeaway Pay linked.
          type: boolean
      type: object
    ConsumersConsumersGetResponse:
      type: object
      properties:
        firstName:
          description: The consumer's first name
          type: string
        lastName:
          description: The consumer's last name
          type: string
        displayName:
          description: The consumer's display name
          type: string
        phoneNumber:
          description: The consumer's phone number in E164 format e.g. +441514960453
          type: string
        emailAddress:
          description: The consumer's email address
          type: string
        dateOfBirth:
          description: The consumer's date of birth in ISO 8601 format e.g. YYYY-MM-DD
          type: string
      example:
        firstName: John
        lastName: Doe
        displayName: John Doe
        phoneNumber: '+441234567890'
        emailAddress: john.doe@example
        dateOfBirth: '1914-04-16'
    ConsumersGetCustomerStampCardStatusResponse:
      description: A customer's stamp card status.
      title: GetCustomerStampCardStatusResponse
      properties:
        restaurants:
          description: A collection of restaurants where the customer has active stamps and/or rewards.
          items:
            $ref: '#/components/schemas/ConsumersGetRestaurantCustomerStampCardStatusResponse'
          nullable: false
      type: object
    ConsumersGetRestaurantCustomerStampCardStatusResponse:
      description: A customer's restaurant stamp card status.
      title: GetRestaurantCustomerStampCardStatusResponse
      properties:
        restaurantInfo:
          $ref: '#/components/schemas/ConsumersRestaurantInfo'
        restaurantSubscriptionInfo:
          $ref: '#/components/schemas/ConsumersRestaurantSubscriptionInfo'
        inProgressStampCards:
          items:
            title: InProgressStampCard
            properties:
              stampsCollected:
                description: Count of stamps collected, up to the stamp card size of the restaurant stamp card offer. See offer information.
                format: int32
                type: integer
              currentDiscountValue:
                nullable: false
                description: Accumulated discount value of stamp card in smallest unit of relevant currency.
                format: integer
                type: number
              expectedRewardIssueDate:
                description: A completed stamp cards expected issue date. Only provided when the customer has earned a stamp card size number of stamps.
                format: date-time
                nullable: true
                type: string
            type: object
          description: Array of active and in progress stamp cards.
        rewards:
          items:
            title: StampCardReward
            properties:
              rewardType:
                description: Type of the offer.
                enum:
                  - discount
                format: enum
                type: string
              issueDate:
                description: Date time the reward was issued (UTC).
                format: date-time
                type: string
              expiryDate:
                description: Date time the reward expires (UTC).
                format: date-time
                nullable: true
                type: string
              discountValue:
                nullable: false
                description: The discount value in smallest unit of relevant currency.
                format: integer
                type: number
              discountCode:
                nullable: false
                description: The discount code of the reward.
                type: string
            type: object
          description: Array of active stamp card discount offers.
      type: object
    ConsumersGetRestaurantStampCardStatusResponse:
      description: A customer's restaurant stamp card status.
      title: GetRestaurantCustomerStampCardStatusResponse
      properties:
        restaurantInfo:
          $ref: '#/components/schemas/ConsumersRestaurantInfo'
        restaurantSubscriptionInfo:
          $ref: '#/components/schemas/ConsumersRestaurantSubscriptionInfo'
      type: object
    ConsumersPasswordResetFlowResponse:
      type: object
      properties:
        email:
          description: The consumer's email address.
          type: string
        globalUserId:
          description: Global identifier for consumer and tenant.
          type: string
      example:
        email: example@just-eat.com
        globalUserId: 8It2lEaJjG82nJtxO00Iab0CoF0=
    ConsumersPutMarketingPreferences:
      properties:
        emailAddress:
          description: The email address of the consumer
          type: string
        updates:
          description: Collection of marketing channel subscription updates
          items:
            properties:
              isSubscribed:
                description: Should the channel be subscribed to?
                type: boolean
              dateUpdated:
                description: The timestamp in UTC for the subscription change to the marketing channel
                format: date-time
                type: string
              channelName:
                description: The channel name.
                enum:
                  - email
                  - push
                  - sms
                type: string
            type: object
          type: array
      type: object
      example:
        emailAddress: consumer@just-eat.com
        updates:
          - isSubscribed: true
            channelName: email
            dateUpdated: '2020-07-20T16:07:23.0000000+01:00'
    ConsumersRedeemCommand:
      description: A request to redeem a pin
      properties:
        pin:
          type: string
          description: The pin to redeem
      type: object
    ConsumersRedeemCommandResponse:
      description: The response for a redeem command
      properties:
        value:
          format: int32
          type: integer
          description: The value redeemed
      type: object
    ConsumersRedeemPaycodeCommand:
      description: A request to redeem a pay code
      properties:
        paycode:
          type: string
          description: The pay code to redeem
      type: object
    ConsumersRedeemPaycodeResponse:
      description: The response to redeeming a pay code
      properties:
        value:
          format: int32
          type: integer
          description: The value
      type: object
    ConsumersRestaurantInfo:
      description: Information about the restaurant.
      properties:
        id:
          description: Identifier of the restaurant.
          type: string
        name:
          description: Name of the restaurant.
          type: string
        seoName:
          description: SEO name of the restaurant.
          type: string
        logoUrl:
          description: URL of the restaurant's logo.
          type: string
      type: object
    ConsumersRestaurantSubscriptionInfo:
      description: Current restaurant stamp cards subscription.
      properties:
        timeZone:
          description: Current time zone of the restaurant in IANA format.
          type: string
          nullable: true
        optInDate:
          description: Current subscriptions opt-in date (UTC). Stamps may only be collected after this date. If this is in the future or null, the restaurant should not be considered part of the scheme.
          format: date-time
          nullable: true
          type: string
        optOutDate:
          description: Current subscriptions opt-out date (UTC). Only provided when the restaurant has confirmed their opt-out, see opt-out confirmation date. No further stamps can be earned after this date.
          format: date-time
          nullable: true
          type: string
        optOutConfirmationDate:
          description: Current subscriptions opt-out confirmation date (UTC). Only existing customers with an incomplete set of stamps can collect further stamps after this date.
          format: date-time
          nullable: true
          type: string
        offerInformation:
          description: Information about the offer.
          properties:
            offerType:
              description: Type of the offer.
              enum:
                - default
              format: enum
              type: string
            stampCardSize:
              description: Number of stamps required to complete a stamp card.
              format: int32
              type: integer
            discountPercentage:
              description: Percent of order value collected for each stamp.
              format: float
              type: number
          type: object
      type: object
    ConsumersSearchByConsumerResponse:
      description: A set of search results
      properties:
        cards:
          items:
            properties:
              amount:
                description: The amount for the gift card
                format: int32
                type: integer
              pan:
                type: string
                description: The pan
            type: object
          type: array
      type: object
    ConsumersUpdatePassword:
      required:
        - tenant
        - newPassword
        - oldPassword
      properties:
        tenant:
          description: Tenant for the consumer
          type: string
        newPassword:
          description: The new password
          type: string
        oldPassword:
          description: The old password
          type: string
      example:
        tenant: ie
        newPassword: Pa55word
        oldPassword: OldPassword
      type: object
    ConsumersUpdatePasswordResetFlowResponse:
      type: object
      properties:
        expiry:
          format: date-time
          description: The expiry of the OTAC.
          example: '2021-01-20T19:35:13.6430000+00:00'
          type: string
        accessCode:
          description: The One Time Access Code (OTAC).
          type: string
      example:
        expiry: '2021-01-20T19:35:13.6430000+00:00'
        accessCode: 8It2lEaJjG82nJtxO00Iab0CoF0=
    ConsumersVerifyConsumerOperation:
      required:
        - verificationCode
      properties:
        verificationCode:
          minLength: 1
          description: The verification code sent to the user to verify an operation
          maxLength: 10
          type: string
      example:
        verificationCode: A1B2C3
      type: object
    ConsumersConsumerMarketingPreference:
      items:
        properties:
          isSubscribed:
            description: Should the channel be subscribed to?
            type: boolean
          dateUpdated:
            description: The date of the marketing preference change
            format: date-time
            type: string
          channelName:
            description: The channel name.
            enum:
              - Email
              - Push
              - Sms
            type: string
        type: object
      type: array
    ConsumersConsumerMarketingPreferencev2:
      properties:
        emailAddress:
          description: The email address of the consumer
          type: string
        updates:
          description: Collection of marketing channel subscription updates
          $ref: '#/components/schemas/ConsumersConsumerMarketingPreference'
      type: object
      example:
        emailAddress: consumer@just-eat.com
        updates:
          - isSubscribed: true
            channelName: Email
            dateUpdated: '2020-07-20T16:07:23.0000000+01:00'
    ContractmanagementapiAddress:
      type: object
      description: Information required for an address
      properties:
        street:
          description: List of address lines
          type: array
          maxItems: 5
          minItems: 1
          items:
            type: string
            maxLength: 255
        city:
          description: Address field for the city name
          type: string
          maxLength: 255
        postcode:
          description: Address field for postal code
          type: string
          maxLength: 20
        country:
          description: Address field for the country name
          type: string
          maxLength: 255
      example:
        street:
          - Unit 1
          - High Road
        city: London
        postcode: AR51 1ET
        country: United Kingdom
    ContractmanagementapiApplicant:
      type: object
      description: The authorised representative for the partner.
      properties:
        givenName:
          description: Applicant's first name
          type: string
          maxLength: 255
        familyName:
          description: Applicant's last name
          type: string
          maxLength: 255
      required:
        - givenName
        - familyName
      example:
        givenName: Jane
        familyName: Smith
    ContractmanagementapiCommissionRates:
      type: object
      description: Commission rates agreed by the partner.
      properties:
        delivery:
          type: number
          format: float
          description: Commission rate applied to delivery orders, expressed as a percentage.
        collection:
          type: number
          format: float
          description: Commission rate applied to collection orders, expressed as a percentage.
      required:
        - delivery
        - collection
      additionalProperties: false
      example:
        delivery: 12.5
        collection: 8
    ContractmanagementapiContract:
      type: object
      description: A partner contract containing operational, KYC, and commercially agreed data.
      properties:
        contractId:
          type: string
          description: Unique identifier for the contract.
        tradingName:
          type: string
          description: The trading name of the partner.
        legalEntity:
          $ref: '#/components/schemas/ContractmanagementapiLegalEntity'
        deviceCost:
          $ref: '#/components/schemas/ContractmanagementapiDeviceCost'
        commissionRates:
          $ref: '#/components/schemas/ContractmanagementapiCommissionRates'
        applicant:
          $ref: '#/components/schemas/ContractmanagementapiApplicant'
          nullable: true
        status:
          $ref: '#/components/schemas/ContractmanagementapiContractStatus'
        url:
          type: string
          description: The URL for the partner to review and sign the contract.
      required:
        - contractId
        - tradingName
        - status
        - url
      additionalProperties: false
      example:
        contractId: 9AXM4BJRMHJK
        tradingName: Acme Kitchen
        legalEntity:
          name: Acme Restaurants Ltd
          address:
            street:
              - 123 High Street
            city: London
            postcode: SW1A 1AA
            country: United Kingdom
        deviceCost:
          weekly: 500
          oneTime: 10000
        commissionRates:
          delivery: 12.5
          collection: 8
        applicant:
          givenName: Jane
          familyName: Smith
        status: pending
        url: https://contractmanagementapi.com/sign/660e8400-e29b-41d4-a716-446655440001
    ContractmanagementapiContractStatus:
      description: The current status of the contract.
      type: string
      enum:
        - pending
        - signed
        - superseded
    ContractmanagementapiDeviceCost:
      type: object
      description: Device costs agreed by the partner.
      properties:
        weekly:
          type: number
          format: integer
          description: Weekly device rental cost in the tenant's smallest currency.
        oneTime:
          type: number
          format: integer
          description: One-time device setup cost in the tenant's smallest currency.
      required:
        - weekly
        - oneTime
      additionalProperties: false
      example:
        weekly: 500
        oneTime: 10000
    ContractmanagementapiLegalEntity:
      type: object
      description: The registered legal entity details of the partner.
      properties:
        name:
          type: string
          description: The registered legal entity name of the partner.
        address:
          $ref: '#/components/schemas/ContractmanagementapiAddress'
      required:
        - name
        - address
      additionalProperties: false
      example:
        name: Acme Restaurants Ltd
        address:
          street:
            - 123 High Street
          city: London
          postcode: SW1A 1AA
          country: United Kingdom
    CourierFeedbackCourierFeedbackRequest:
      required:
        - isPositiveFeedback
      properties:
        additionalComment:
          maxLength: 210
          nullable: true
          description: An additional free form comment accompanying the feedback
          type: string
        isPositiveFeedback:
          description: A flag to determine if the feedback is overall positive
          type: boolean
        reasons:
          nullable: false
          items:
            type: string
          description: A list of reasons describing the feedback
          type: array
      example:
        additionalComment: Went above and beyond
        isPositiveFeedback: true
        reasons:
          - had thermal bag
          - friendly
      type: object
    CourieractivityserviceErrorReason:
      description: |2
          Provides specific reasons for an API error, allowing clients to handle different error types programmatically.
          - `forbidden`: The user does not have the necessary permissions for the resource.
          - `invalidDate`: A provided date string does not conform to the expected format.
        Example: Providing '22-07-2025' when '2025-07-22' is expected.
          - `dateRangeExceeded`: The requested date range's duration is larger than the maximum allowed limit.
        Example: Requesting 90 days of data when the limit is 31.
          - `invalidDateRange`: The provided date range is logically impossible.
        Example: The 'startDate' (2025-07-22) is after the 'endDate' (2025-07-20).
      enum:
        - badRequest
        - dateRangeExceeded
        - forbidden
        - invalidDate
        - invalidDateRange
        - notFound
      type: string
    CourieractivityserviceErrorResponse:
      type: object
      properties:
        reason:
          description: A short, machine-readable error code
          type: string
          anyOf:
            - $ref: '#/components/schemas/CourieractivityserviceErrorReason'
            - type: string
    CourieractivityserviceInstant:
      format: date-time
      type: string
      example: '2022-03-10T16:15:50Z'
    CourieractivityserviceMoney:
      required:
        - currencyCode
        - amount
      type: object
      properties:
        currencyCode:
          description: Three-letter currency code as defined by the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard (e.g., USD, EUR, GBP)
          type: string
          example: EUR
        amount:
          format: double
          description: Amount of money expressed in the specified currency
          type: number
          example: 10.85
    CourieractivityserviceStatistic:
      required:
        - tipsEarned
        - cashCollected
        - ordersDelivered
      type: object
      properties:
        tipsEarned:
          description: 'Tips earned in the date range. This field is null if the data is not available (e.g. because tips settings are disabled). Note: If tips earned is zero, you will receive `{ tipsEarned: { amount: 0, ... }}` and *not* null.'
          type: object
          allOf:
            - $ref: '#/components/schemas/CourieractivityserviceMoney'
          nullable: true
        cashCollected:
          description: 'Cash collected in the date range. This field is null if the data is not available. Note: If cash collected is zero, you will receive `{ cashCollected: { amount: 0, ... }}` and *not* null.'
          type: object
          allOf:
            - $ref: '#/components/schemas/CourieractivityserviceMoney'
          nullable: true
        ordersDelivered:
          format: int32
          description: Orders delivered in the date range.
          type: integer
          example: 5
    CourieractivityserviceSummariesResponse:
      required:
        - summaries
      type: object
      properties:
        summaries:
          description: Contains the activities summaries for each restaurant where the courier made a delivery during the current month.
          type: array
          items:
            $ref: '#/components/schemas/CourieractivityserviceSummary'
    CourieractivityserviceSummary:
      required:
        - restaurantName
        - restaurantId
        - showTips
        - statistic
      type: object
      properties:
        restaurantName:
          description: Name of the restaurant
          type: string
          example: Sahara Super Sushi Pizza
        restaurantId:
          description: Unique identifier for the restaurant
          type: string
          example: '9565322'
        showTips:
          description: Boolean indicating if tips are enabled for this restaurant
          type: boolean
          example: true
        statistic:
          description: |
            Statistic can be null if no activity is present. In other words, null statistic
            represents the fact that all fields (`deliveredOrders`, `tipsEarned`) are zero:
            ```json
            { deliveredOrders: 0, tipsEarned: 0, cashCollected: 0, ... }
            ```
          type: object
          allOf:
            - $ref: '#/components/schemas/CourieractivityserviceStatistic'
          nullable: true
    CourieragentchatFault:
      description: Fault details including trace information and error list
      required:
        - faultId
        - traceId
        - errors
      type: object
      properties:
        faultId:
          description: Unique identifier for this fault occurrence
          type: string
          example: 72d7036d-990a-4f84-9efa-ef5f40f6044b
        traceId:
          description: Distributed trace ID for correlation
          type: string
          example: 0HLOCKDKQPKIU
        errors:
          description: List of errors that caused this fault
          type: array
          items:
            $ref: '#/components/schemas/CourieragentchatFaultError'
    CourieragentchatFaultError:
      description: Individual error within a fault response
      required:
        - errorCode
        - description
      type: object
      properties:
        errorCode:
          description: Application-specific error code
          type: string
          example: '1001'
        description:
          description: Human-readable error description
          type: string
          example: 'Delivery state not found: UNKNOWN_STATE'
    CourieragentchatFaultResponse:
      description: JET standard error response envelope
      required:
        - fault
      type: object
      properties:
        fault:
          description: Fault details
          type: object
          allOf:
            - $ref: '#/components/schemas/CourieragentchatFault'
    CourieragentchatTagDto:
      description: A chat tag that couriers can select before starting a support conversation
      required:
        - id
        - name
        - localizedName
        - priority
      type: object
      properties:
        id:
          description: Tag identifier (UUID). Pass to `SendBird` Desk ticket as custom field.
          type: string
          example: 22e608c4-29f2-4597-9ae4-6f9e1ffb6394
        name:
          description: English tag name. Used as `SendBird` Desk tag-name custom field and for logging/analytics.
          type: string
          example: Trouble navigating
        localizedName:
          description: Translated tag name in courier's locale. Display this to the user.
          type: string
          example: Navigationsprobleme
        iconName:
          description: Optional icon identifier for UI rendering. Null if no icon configured.
          type: string
          example: navigation_issue
          nullable: true
        priority:
          description: Tag priority. Mobile sets `SendBird` Desk ticket priority using this value.
          enum:
            - high
            - medium
            - low
          type: string
          example: high
        order:
          format: int32
          description: Display order. Sort tags by this field ascending. First tag has value zero.
          type: integer
          example: 0
    CourieragentchatTagsResponse:
      description: Response containing delivery state and its associated chat tags
      required:
        - deliveryState
        - tags
      type: object
      properties:
        deliveryState:
          description: Echo of the requested delivery state
          type: string
          example: ACCEPTED
        tags:
          description: Ordered list of tags for the delivery state. Empty if courier model is not eligible.
          type: array
          items:
            $ref: '#/components/schemas/CourieragentchatTagDto'
    CourierappmanagementCnmpAckRequest:
      type: object
      description: The CNMP notification acknowledgement request object.
      properties:
        orderNumbers:
          type: array
          items:
            type: integer
          description: A list of order numbers associated with the CNMP notification.
        status:
          type: string
          enum:
            - ORDER_ACCEPTED
            - FIRST_ALERT
            - SECOND_ALERT
            - KEEP_ORDER
            - REASSIGNED_SYSTEM
            - DEFAULT
          description: the CNMP status being acknowledged
      required:
        - orderNumbers
        - status
    CourierappmanagementFastCashOptInResponse:
      type: object
      description: Returned when opt-in precondition checks failed; includes the fast-cash opt-in disabled status reason.
      properties:
        status:
          type: string
          description: Fast Cash disabled status.
          enum:
            - DISABLED_INDETERMINATE_UNAVAILABLE
            - DISABLED_BANK_INFO_MISSING
      required:
        - status
    CouriercustomerchatAuthUserResponse:
      type: object
      description: Response containing the created user ID and token information.
      properties:
        userId:
          type: string
          description: Id of the user created on the service
          nullable: false
        token:
          type: string
          description: Token to be used by the client
          nullable: false
        expiresAt:
          type: integer
          description: The time at which the token expires
          nullable: false
    CouriercustomerchatChatStartRequest:
      type: object
      description: The chat start request object.
      properties:
        chatId:
          type: string
          description: The id of the chat session
          nullable: false
    CouriercustomerchatChatStartResponse:
      type: object
      description: The chat start response object.
      properties:
        channelId:
          type: string
          description: The ID of the channel
          nullable: false
        token:
          type: string
          description: The user token
          nullable: false
        userId:
          type: string
          description: The ID of the user
          nullable: false
    CouriercustomerchatChatStatusResponse:
      type: object
      description: The chat status response object.
      properties:
        canCreateChannel:
          type: boolean
          description: Indicates if a channel can be created for this chat.
        hasActiveChannel:
          type: boolean
          description: Indicates if there is an active channel associated with this chat.
        reason:
          type: string
          nullable: true
          description: The reason for the current status, if applicable.
        channelId:
          type: string
          nullable: true
          description: The identifier of the active channel, if any.
    CourieriamserviceChatLoginResponse:
      required:
        - applicationId
        - userId
        - sessionToken
        - expiresAt
      type: object
      properties:
        applicationId:
          title: application id
          description: id of the `sendbird` application
          type: string
          example: 8C2A8D3F-1F2B-4A9E-BD1F-2B1F2B4A9E1F
        userId:
          title: user id
          description: id of the courier
          type: string
          example: '1234567'
        sessionToken:
          title: session token
          description: session token for the courier
          type: string
        expiresAt:
          title: expires at
          description: expiry time as `unix` timestamp in milliseconds
          type: string
          example: '1739369317807'
    CourieriamserviceLoginRequest:
      required:
        - username
        - password
      type: object
      properties:
        username:
          title: Courier's email address
          description: Courier's email address
          type: string
          example: courier@justeattakeaway.com
        password:
          title: Courier's password
          description: Courier's password
          type: string
    CourieriamserviceLogoutRequest:
      required:
        - chatToken
        - notificationToken
      type: object
      properties:
        chatToken:
          title: Device Chat Token
          description: A device token for the `sendbird` chat service
          type: string
          example: 9D5B346756E6DB1B7A70274FE9B6AB8EFDF0DDD7E7975F0B6F9E860605659923
        notificationToken:
          title: Notification token
          description: A device token for the scoober notification service
          type: string
    CourieriamservicePasswordResetRequest:
      required:
        - email
      type: object
      properties:
        email:
          title: Courier's email address
          description: Courier's email address
          type: string
          example: user@domain.com
    CourieriamserviceRefreshTokenRequest:
      required:
        - courierId
        - refreshToken
      type: object
      properties:
        courierId:
          title: Courier id
          description: Courier id of the refresh token
          type: string
        refreshToken:
          title: Refresh token
          description: Refresh token of the current session
          type: string
    CourierjobsserviceSelfServeUnassignRequest:
      type: object
      description: The request body for self-serve delivery unassignment.
      properties:
        reason:
          type: string
          enum:
            - ACCEPTED_BY_MISTAKE
            - TROUBLE_NAVIGATING
            - VEHICLE_ISSUE
            - APP_OR_DEVICE_ISSUE
            - EMERGENCY_OR_SAFETY
            - LONG_WAIT_TIME
            - BUSINESS_CLOSED
            - ORDER_COLLECTED_BY_SOMEONE_ELSE
            - OTHER
          description: The reason for unassigning the delivery.
      required:
        - reason
    CourierlocationCourierLocation:
      type: object
      description: The location update request object.
      properties:
        latitude:
          type: number
          description: The latitude component of the location.
        longitude:
          type: number
          description: The longitude component of the location.
        horizontalAccuracy:
          type: number
          description: Optional accuracy.
        deviceTimestamp:
          type: string
          description: Optional device timestamp.
      required:
        - latitude
        - longitude
    CourierlocationapiserviceLocationUpdateRequest:
      required:
        - latitude
        - longitude
        - horizontalAccuracy
      type: object
      properties:
        latitude:
          format: double
          description: Updated courier's latitude
          maximum: 90
          minimum: -90
          type: number
          example: 52.56340769
        longitude:
          format: double
          description: Updated courier's longitude
          maximum: 180
          minimum: -180
          type: number
          example: 13.413798
        horizontalAccuracy:
          format: double
          description: Horizontal accuracy in meters with respect to latitude and longitude
          minimum: 0
          type: number
          example: 3.1415
        deviceTimestamp:
          description: Device time in the device timezone at which the location update was sent
          type: string
          allOf:
            - $ref: '#/components/schemas/CourierlocationapiserviceZonedDateTime'
          example: '2025-01-16T15:27:20.20737+02:00'
          nullable: true
        vendorId:
          description: Id of the device used by a courier
          type: string
          nullable: true
    CourierlocationapiserviceZonedDateTime:
      format: date-time
      type: string
      example: '2022-03-10T12:15:50-04:00'
    CouriermiscellaneousserviceReferAFriendResponse:
      required:
        - rafLink
        - errorMessage
      type: object
      properties:
        rafLink:
          description: Refer-A-Friend link. Note that this value can be an empty string if there is an error.
          type: string
          nullable: false
        errorMessage:
          description: 'Error message if there is an error, otherwise it is empty. For example: `Courier does not have a RAF link generated`, `Courier not found`, `scooberId is a required parameter`'
          type: string
          example: ''
    CourierofferserviceOfferStatusUpdateRequest:
      type: object
      description: The offer status update request object.
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - VIEWED
            - ACCEPTED
            - REJECTED
          description: The new status of the offer.
        deliveryIds:
          type: array
          items:
            type: string
          description: Optional list of delivery identifiers associated with the offer.
    CourierofferserviceQuarkusErrorResponse:
      type: object
      description: A Quarkus error response.
      required:
        - error
        - message
      properties:
        error:
          type: string
          description: A code identifying the error.
        message:
          type: string
          description: A message explaining the error.
    CourierprofileserviceAnalyticsResourceBody:
      required:
        - value
      type: object
      properties:
        value:
          description: Value of the analytics setting
          enum:
            - ANALYTICS
            - ESSENTIAL
            - UNKNOWN
          type: object
    CouriershiftflowserviceChatInfoDto:
      description: Provide information for the chat between courier and customer
      required:
        - id
      type: object
      properties:
        id:
          description: An id of a chat with a customer
          type: string
        channelUrl:
          description: The url of channel in which the chat is created.
          type: string
          nullable: true
    CouriershiftflowserviceCoordinatesDto:
      required:
        - latitude
        - longitude
      type: object
      properties:
        latitude:
          format: double
          description: Latitude of the coordinate
          type: number
          example: 48.1451929
        longitude:
          format: double
          description: Longitude of the coordinate
          type: number
          example: 11.559787
    CouriershiftflowserviceDeliveryCodeInfoDto:
      description: Provide information when the job delivery is protected by a delivery code
      required:
        - numberOfDigits
      type: object
      properties:
        numberOfDigits:
          format: int32
          description: Number of digits of the delivery code
          type: integer
    CouriershiftflowserviceDeliveryStepDto:
      description: Represents the delivery step of a courier job.
      required:
        - eventType
        - jobTrackingId
        - estimatedTime
        - locationInfo
      type: object
      properties:
        eventType:
          $ref: '#/components/schemas/CouriershiftflowserviceEventType'
        jobTrackingId:
          type: string
        estimatedTime:
          format: date
          type: string
          example: '2022-03-10'
        scheduledTime:
          format: date
          type: string
          example: '2022-03-10'
          nullable: true
        locationInfo:
          $ref: '#/components/schemas/CouriershiftflowserviceLocationInfoDto'
        chatId:
          description: The id of chat between courier and customer. It will be removed in the future.
          type: string
          nullable: true
          deprecated: true
        chatInfo:
          description: Provide information for a chat between courier and customer
          type: object
          anyOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceChatInfoDto'
            - enum:
                - null
          nullable: true
        deliveryCodeInfo:
          description: Provide information when the job delivery is protected by a delivery code
          type: object
          anyOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceDeliveryCodeInfoDto'
            - enum:
                - null
          nullable: true
        fromPartnerInfo:
          description: Provide information about the Delivery origin Partner
          type: object
          anyOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceFromPartnerInfoDto'
            - enum:
                - null
    CouriershiftflowserviceEstimatesDto:
      type: object
      properties:
        estimatedTime:
          description: Estimated time in ISO 8601 format.
          type: string
          nullable: true
        distanceInMeters:
          format: int32
          description: Estimated distance in meters.
          type: integer
          nullable: true
    CouriershiftflowserviceEventType:
      enum:
        - PICKUP
        - DELIVERY
      type: string
    CouriershiftflowserviceFromPartnerInfoDto:
      description: Provide information about the Delivery origin Partner
      required:
        - name
      type: object
      properties:
        id:
          description: Provide information about the Delivery origin partnerId.
          type: string
          nullable: true
        name:
          description: Provide information about the Delivery origin Partner Name.
          type: string
    CouriershiftflowserviceJobInfoDto:
      required:
        - id
        - price
        - orderFlow
        - orderStatus
        - googleDistance
        - containsAlcoholicItems
        - isSplit
      type: object
      properties:
        id:
          description: Job ID
          type: string
        globalOrderId:
          description: Unique ID of the order across JET.
          type: string
          example: inw0hg5dlu2v0plypdon3q
          nullable: true
        partnerOrderReference:
          description: Reference ID of the order.
          type: string
          example: DARUA1
          nullable: true
        price:
          format: int32
          description: Price of the order associated to the job. Format is in the minor unit of the currency. For example, for EUR a value of 100 means 1EUR.
          type: integer
          example: 1520
        paymentMethod:
          description: Method of payment.
          type: string
          anyOf:
            - $ref: '#/components/schemas/CouriershiftflowservicePaymentMethod'
            - enum:
                - null
          nullable: true
        orderFlow:
          description: 'Defines the order flow, specifying the sequence of notifications: whether the courier is notified before the restaurant, the restaurant before the courier, or both simultaneously.'
          type: string
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceOrderFlow'
          deprecated: true
        orderStatus:
          description: Status of the order
          type: string
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceOrderStatus'
        googleDistance:
          format: int32
          description: Distance in meters.
          type: integer
          example: 1100
        containsAlcoholicItems:
          description: True if the job contains alcoholic items, otherwise false.
          type: boolean
        minimumAgeRequired:
          format: int32
          description: If this field is non-null, then it is the age of the customer required for receiving the order
          type: integer
          nullable: true
        hashedDateOfBirth:
          description: The SHA-256 hash (in HEX format) of the date of birth, formatted in ISO 8601 (YYYY-MM-DD). If the date of birth is unavailable, this field will be null
          type: string
          example: 253cc68f602792c897da18d783813611200910b3d35b44991254a5a39e36b233
          nullable: true
        isSplit:
          description: True if the job is consist of split order, otherwise false.
          type: boolean
    CouriershiftflowserviceJobPaymentDto:
      type: object
      properties:
        amount:
          format: int32
          description: Payment amount in minor units of the currency.
          type: integer
          example: 1320
        tipAmount:
          format: int32
          description: Tip amount in minor units of the currency.
          type: integer
          nullable: true
    CouriershiftflowserviceJobRouteStepDto:
      required:
        - eventType
        - jobTrackingId
        - estimatedTime
        - locationInfo
      type: object
      properties:
        eventType:
          description: The nature of the route step, e.g. pick up or delivery
          type: string
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceEventType'
        jobTrackingId:
          description: Tracking id of the job
          type: string
          example: J1SVM6YE31RR6S1234
        estimatedTime:
          format: date
          description: This is the estimated time of pickup or delivery depending on the `eventType`. It is the estimation of when the courier should/actually will be there. Format is ISO 8601.
          type: string
          example: '2021-04-18T20:06:09.000+00:00'
        scheduledTime:
          format: date
          description: Indicates the scheduled time for pickup or delivery, determined by the `eventType`. This field is applicable for pre-orders, where a customer places an order in advance (e.g., ordering in the morning for a delivery at noon). Format is ISO 8601.
          type: string
          example: '2021-04-18T20:06:09.000+00:00'
          nullable: true
        locationInfo:
          description: Contains information about the location of the route step.
          type: object
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceLocationInfoDto'
    CouriershiftflowserviceLocationDto:
      required:
        - coordinates
        - name
        - address
        - city
      type: object
      properties:
        coordinates:
          description: Coordinates of the route step.
          type: object
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceCoordinatesDto'
        name:
          description: Name of the location.
          type: string
          example: Ninja Kebap Sushigate
        address:
          description: Address of the route step.
          type: string
          example: Wspólna 17/18
        zipcode:
          description: Zip code of the route step.
          type: string
          example: '64283'
          nullable: true
        city:
          description: City of the route step.
          type: string
          example: Wien
    CouriershiftflowserviceLocationInfoDto:
      required:
        - name
        - coordinates
        - address
        - city
        - phone
      type: object
      properties:
        name:
          description: Name of the location
          type: string
          example: Jane Doe
        coordinates:
          description: Coordinates of the location
          type: object
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceCoordinatesDto'
        address:
          description: Address of the location
          type: string
          example: Bayerstraße 10A
        zipcode:
          description: Zip code of the location
          type: string
          example: '80335'
          nullable: true
        city:
          description: City of the location
          type: string
          example: Wien
        googlePlaceId:
          description: Google Place id of the location
          type: string
          example: ChIJ4ziFNoIFbUcRXypeb8s_1e8
          nullable: true
        phone:
          description: Phone information
          type: object
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowservicePhoneDto'
        parking:
          description: Parking information
          type: string
          example: Mariencenter 1UG neben Netto unter der Rolltreppe
          nullable: true
        additionalInfo:
          description: Additional information - legacy field, is not used in app versions after 3.29.0
          type: string
          nullable: true
          deprecated: true
        notes:
          description: Notes from partners or customers depending on the delivery step type
          type: string
          nullable: true
    CouriershiftflowserviceOfferDto:
      required:
        - offerId
        - payment
        - offerExpiresAt
        - routeSteps
      type: object
      properties:
        offerId:
          description: Unique id of the offer
          type: string
        payment:
          description: Payment information about the offer
          type: object
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowservicePaymentDto'
        offerExpiresAt:
          format: int64
          description: The expiration timestamp of the offer in Unix time format.
          type: integer
        routeSteps:
          description: A route consists of steps the courier must follow if they accept the offer. Each step represents information related to a pickup or delivery stop.
          type: array
          items:
            $ref: '#/components/schemas/CouriershiftflowserviceOfferRouteStepDto'
    CouriershiftflowserviceOfferRouteStepDto:
      required:
        - eventType
        - jobId
        - location
      type: object
      properties:
        eventType:
          description: The nature of the route step, e.g. PICKUP or DELIVERY.
          type: string
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceEventType'
        jobId:
          description: The job id associated with the route step.
          type: string
          example: '189315022'
        location:
          description: Location information for this route step.
          type: object
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceLocationDto'
        estimates:
          description: Estimated time and distance information for this route step.
          type: object
          anyOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceEstimatesDto'
            - enum:
                - null
          nullable: true
    CouriershiftflowserviceOrderFlow:
      enum:
        - RESTAURANT_THEN_SCOOBER
        - SCOOBER_THEN_RESTAURANT
        - UNIFIED_ORDER_FLOW
      type: string
    CouriershiftflowserviceOrderStatus:
      enum:
        - ORDER_RECEIVED
        - ORDER_READY_FOR_KITCHEN
      type: string
    CouriershiftflowservicePauseDetails:
      description: Contains information about pause reason and actions possible during the state.
      required:
        - reason
      type: object
      properties:
        reason:
          description: Reason for the status
          type: string
        selfResumable:
          description: A flag showing if a courier is allowed to initiate shift resumption from the app.
          type: boolean
    CouriershiftflowservicePayloadDto:
      required:
        - shiftInfo
        - offers
        - routeSteps
        - jobsInfo
      type: object
      properties:
        shiftInfo:
          description: Contains information about the current state of the shift.
          type: object
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceShiftInfoDto'
        offers:
          description: DO NOT USE THIS FIELD. This field is always empty. It will be removed in the future.
          type: array
          items: {}
          deprecated: true
        offer:
          description: Provides information for FLEX couriers about active offers that they can accept or decline. A `null` value means that no active offer currently exists.
          type: object
          anyOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceOfferDto'
            - enum:
                - null
          nullable: true
        routeSteps:
          description: A route consists of multiple steps that the courier must follow in that order. Each step represents information related to either a pickup or a delivery stop.
          type: array
          items:
            $ref: '#/components/schemas/CouriershiftflowserviceJobRouteStepDto'
        jobsInfo:
          description: Contains information about jobs that are hard-assigned to the courier. The keys represent the tracking IDs of the jobs, while the values provide the corresponding job information
          type: object
          additionalProperties:
            $ref: '#/components/schemas/CouriershiftflowserviceJobInfoDto'
        tip:
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceTipDto'
          nullable: true
    CouriershiftflowservicePaymentDto:
      description: Payment information about the offer
      required:
        - breakdown
      type: object
      properties:
        totalAmount:
          format: int32
          description: Total payment amount in minor units of the currency.
          type: integer
          example: 1320
        breakdown:
          description: Payment breakdown per job.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/CouriershiftflowserviceJobPaymentDto'
    CouriershiftflowservicePaymentMethod:
      enum:
        - CASH
        - CARD_PAYMENT_AT_DELIVERY
        - ONLINE
      type: string
    CouriershiftflowservicePhoneDto:
      description: Phone information like phone number, etc
      required:
        - number
      type: object
      properties:
        number:
          description: Phone number
          type: string
          example: '3001234567'
        maskedNumber:
          description: Masked phone number to protect the customer's privacy
          type: string
          example: 22 1475 1111
          nullable: true
        maskedVerificationCode:
          description: Needed for making a call to the masked number
          type: string
          example: '284321952'
          nullable: true
    CouriershiftflowservicePickupStepDto:
      description: Represents the pickup step of a courier job.
      required:
        - eventType
        - jobTrackingId
        - estimatedTime
        - locationInfo
      type: object
      properties:
        eventType:
          $ref: '#/components/schemas/CouriershiftflowserviceEventType'
        jobTrackingId:
          type: string
        estimatedTime:
          format: date
          type: string
          example: '2022-03-10'
        scheduledTime:
          format: date
          type: string
          example: '2022-03-10'
          nullable: true
        locationInfo:
          $ref: '#/components/schemas/CouriershiftflowserviceLocationInfoDto'
    CouriershiftflowserviceShiftInfoDto:
      description: Contains information about the current state of the shift.
      required:
        - status
        - statusUpdatedBy
      type: object
      properties:
        status:
          description: Current status of the shift.
          type: string
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceStatus'
        statusUpdatedBy:
          description: Indicates who initiated the shift status update.
          type: string
          allOf:
            - $ref: '#/components/schemas/CouriershiftflowserviceStatusUpdatedBy'
          example: COURIER
        pauseDetails:
          description: Details regarding pause state of the shift.
          type: object
          anyOf:
            - $ref: '#/components/schemas/CouriershiftflowservicePauseDetails'
            - enum:
                - null
    CouriershiftflowserviceShiftPauseRequest:
      required:
        - reasonId
      type: object
      properties:
        reasonId:
          pattern: \S
          type: string
    CouriershiftflowserviceStatus:
      enum:
        - ACTIVE
        - PAUSED
        - 'OFF'
      type: string
    CouriershiftflowserviceStatusUpdatedBy:
      enum:
        - UNKNOWN
        - COURIER
        - LIVE_OPS
        - AUTOMATICALLY
      type: string
    CouriershiftflowserviceTipDto:
      required:
        - amount
        - currency
        - jobId
      type: object
      properties:
        amount:
          type: number
        currency:
          type: string
        jobId:
          type: string
    CouriershiftflowserviceUnit:
      type: object
    CourierstatementsliveEarningCyclesResponse:
      type: object
      required:
        - earningCycles
      properties:
        earningCycles:
          type: array
          description: List of earning cycles sorted by end date descending.
          items:
            type: object
            required:
              - startDate
              - endDate
            properties:
              startDate:
                type: string
                format: date-time
                description: Start date of the earning cycle in UTC.
                example: '2025-01-01T00:00:00Z'
              endDate:
                type: string
                format: date-time
                description: End date of the earning cycle in UTC.
                example: '2025-01-07T00:00:00Z'
    Couriersync400CourierSyncErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Invalid Request
          type: string
        error:
          description: Error Title
          example: Invalid Request
          type: string
      type: object
    Couriersync401CourierSyncErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Unauthorized Request
          type: string
        error:
          description: Error Title
          example: Unauthorized Request
          type: string
      type: object
    Couriersync404CourierSyncErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Courier Sync not found
          type: string
        error:
          description: Error Title
          example: Courier Sync not found
          type: string
      type: object
    Couriersync500CourierSyncErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Internal Server Error
          type: string
        error:
          description: Error Title
          example: Internal Server Error
          type: string
      type: object
    CouriersyncAddress:
      description: Address information.
      properties:
        useLatLongAddress:
          description: When enabled use latitude and longitude address.
          type: boolean
        name:
          description: Site's institution name or commercial name.
          example: Clinic Hospital
          type: string
        latitude:
          format: double
          description: The address latitude coordinate.
          example: 51.048615
          type: number
        phone:
          description: Customer's phone number
          example: +1 (222) 2222-2222
          type: string
        specialInstructions:
          description: Special instructions for delivery
          example: Contactless Delivery Please
          type: string
        city:
          description: City's name
          example: Calgary
          type: string
        address1:
          description: Site's complete street address
          example: '121 17 Ave SW #405'
          type: string
        province:
          description: Province's name
          example: Alberta
          type: string
        longitude:
          format: double
          description: The address longitude coordinate.
          example: -114.070847
          type: number
        postalCode:
          description: Postal code.
          example: T0R 0X1
          type: string
      type: object
    CouriersyncBonusSummary:
      description: The zone profile object for a given delivery zone.
      properties:
        type:
          description: Types of bonuses that may be granted to the courier.
          $ref: '#/components/schemas/CouriersyncBonusType'
        value:
          description: Bonus value
          format: integer
          type: number
      type: object
    CouriersyncBonusType:
      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
    CouriersyncCheckedInState:
      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
    CouriersyncCourierStatus:
      description: >-
        The courier application status. Here is a brief example of each status. <p>`ON-BOARDING` - Courier is progressing 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</p><p>`SURPLUS` - Zone has been closed for On-boarding; courier cannot proceed</p><p>`ACTIVE` - Courier has interacted with the app within the last two weeks and will be automatically scheduled based on their availability</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</p><p>`RELIABILITY_ISSUES` - historical account was suspended due to frequent flakes or rejected orders</p><p>`VEHICLE_ISSUES` - Account suspended due to reported vehicle problems, may reactivate by contacting support</p><p>`INCIDENT_ISSUES` - Account suspended indefinitely due to significant concern (used by Incidents
        team)</p><p>`OTHER_ACCOUNT_ISSUES` - General account suspension, usually in connection with problems not under regular courier status</p><p>`EXPIRED_DOCUMENTS` - General account suspension, typically expired right to work documentation</p><p>`REJECTED` - Applicant did not meet minimum requirements</p><p>`WITHDRAWN` - Applicant decided not to proceed</p><p>`BANNED` - Courier’s access to the network was revoked</p><p>`LEFT_NETWORK` - Courier voluntarily left</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
    CouriersyncCourierSync:
      description: The courier sync payload holds the updated values for deliveries, personal information, location and shifts associated with a particular courier.
      properties:
        remainingJobs:
          format: integer
          description: Amount of remaining jobs assignable to the courier.
          example: 2
          type: number
        lastName:
          description: Last name of the courier in which the updated sync payload was requested for.
          example: Doe
          type: string
        timestamp:
          format: long
          description: Current timestamp for the courier sync updated payload.
          example: 1593444834
          type: number
        doNotUseStatus:
          description: The courier usability status.
          $ref: '#/components/schemas/CouriersyncDoNotUseStatus'
        flexStateForAssignedZones:
          maxItems: 2
          type: array
          minItems: 2
          items:
            $ref: '#/components/schemas/CouriersyncCourierZoneFlexState'
          description: List of flex state types for each delivery zone the courier is currently on a delivery process or have already delivered orders.
        timezone:
          description: Time zone in which the courier shift was started.
          example: GMT-6
          type: string
        topUpPromotion:
          description: Calculated top up promotion settings for the courier.
          $ref: '#/components/schemas/CouriersyncTopUpPromotion'
        orderAcceptanceTimes:
          description: The acceptance times used to present the offer to the courier.
          $ref: '#/components/schemas/CouriersyncOrderAcceptanceTimes'
        serverSendSeconds:
          format: integer
          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
          type: number
        firstName:
          description: First name of the courier in which the updated sync payload was requested for.
          example: John
          type: string
        totalDeliveries:
          format: integer
          description: Number of deliveries completed by the courier.
          example: 11
          type: number
        jobs:
          maxItems: 2
          type: array
          minItems: 2
          items:
            $ref: '#/components/schemas/CouriersyncJobDetails'
          description: The list of jobs assigned to the courier.
        earlyCheckoutAvailable:
          description: The possibility of an early checkout of the shift is available when true.
          type: boolean
        checkedInState:
          description: The state of a courier on a shift. A courier might be checked in or not.
          $ref: '#/components/schemas/CouriersyncCheckedInState'
        name:
          description: Name of the courier in which the updated sync payload was requested for.
          example: John Doe
          type: string
        localSaveSeconds:
          format: integer
          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
          type: number
        serverGateMeters:
          format: integer
          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
          type: number
        shift:
          description: The shift details in which the courier is signed up for.
          $ref: '#/components/schemas/CouriersyncShift'
        isLiveFlexStatesAvailable:
          description: The live flex states are enabled when true.
          type: boolean
        status:
          $ref: '#/components/schemas/CouriersyncCourierStatus'
        cancelledOrderSummaries:
          maxItems: 1
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CouriersyncOrderCancelled'
          description: List with a summary of all the cancelled orders associated with the courier.
      type: object
    CouriersyncCourierZoneFlexState:
      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
        flexAvailable:
          description: Flex states are enabled when true
          type: boolean
        deliveryZoneName:
          description: Delivery zone name for flex state.
          example: Winnipeg SW
          type: string
        flexStateType:
          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>
          $ref: '#/components/schemas/CouriersyncSyncFlexStateType'
      type: object
    CouriersyncDoNotUseStatus:
      description: The usability status of a courier
      enum:
        - IN_USE
        - NOT_IN_USE
        - UNRESPONSIVE
        - PAUSE_ORDERS
        - CANCELLATION
      type: string
    CouriersyncFees:
      description: The calculated courier payment components.
      properties:
        tip:
          format: integer
          description: Tip the courier might get from customers when an order is placed
          example: 180
          type: number
        jobPay:
          format: integer
          description: Job pay is the sum of the pay components subsidy, drive score subsidy and delivery fee.
          example: 100
          type: number
        deliveryFee:
          format: integer
          description: Delivery fee paid by the customer
          example: 500
          type: number
        driveScoreSubsidy:
          format: integer
          description: Drive score subsidy paid to courier
          example: 200
          type: number
        subsidy:
          format: integer
          description: Skip subsidy paid to courier
          example: 90
          type: number
        reimbursements:
          format: integer
          description: Reimbursements paid to courier. This might occur in the event of an order cancellation, order other refundable reasons.
          example: 100
          type: number
        bonuses:
          maxItems: 1
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CouriersyncBonusSummary'
          description: List of bonuses that may be granted to the courier under specific situations.
      type: object
    CouriersyncJobDetails:
      properties:
        time:
          type: number
          format: long
          description: Job creation time stamp.
          example: 1593444834
        deliveryId:
          type: string
          description: Delivery identifier for the job.
          example: 61376a78-12e1-4f11-bba2-2097a65s2d75
        orderNumber:
          type: string
          description: Incrementing number generated for each particular order.
          example: '10113045'
        fees:
          description: The calculated components of the courier payment for the job.
          $ref: '#/components/schemas/CouriersyncFees'
        status:
          description: All the possible job status that might occur during a delivery process.
          $ref: '#/components/schemas/CouriersyncJobStatus'
        groceryDelivery:
          description: The order contains grocery delivery when true.
          type: boolean
        destination:
          description: The job address complete information.
          $ref: '#/components/schemas/CouriersyncAddress'
        distance:
          format: integer
          description: The distance between the courier location and the job destination.
          type: number
        amount:
          type: number
          format: integer
          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
        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.
          $ref: '#/components/schemas/CouriersyncJobType'
        restaurantName:
          type: string
          description: Restaurant's name.
          example: MacDonalds
        paymentType:
          description: The order payment status associated with the job.
          $ref: '#/components/schemas/CouriersyncSyncPaymentType'
        alcoholDelivery:
          description: The order contains alcoholic products when true.
          type: boolean
        courierId:
          type: string
          description: Courier identifier for the job details
          example: 61376a78-12e1-4f11-bba2-2097a65s2d75
      description: The details of a job which may be assigned to a courier for delivery.
      type: object
    CouriersyncJobStatus:
      description: All possible job status during a delivery process.
      enum:
        - UNASSIGNED
        - ASSIGNED_PENDING_ACCEPTED
        - ASSIGNED
        - ACCEPTED
        - PARKING
        - ARRIVED
        - ENTERED
        - COMPLETED
      type: string
    CouriersyncJobType:
      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
    CouriersyncOrderAcceptanceTimes:
      description: The acceptance times used to present the offer to the courier.
      properties:
        expirationTimestamp:
          format: integer
          description: The time when the offer to the courier will expire. Usually the courier has 60 seconds to accept a new offer.
          example: 1593444834
          type: number
        viewedTimestamp:
          format: integer
          description: The time the delivery offer was viewed by the courier
          example: 1593444834
          type: number
        currentSystemTimestamp:
          format: integer
          description: The time the delivery offer was made to the courier.
          example: 1593444834
          type: number
      type: object
    CouriersyncOrderCancelled:
      properties:
        cancellationTime:
          type: number
          format: integer
          description: Current timestamp for the cancelled order.
          example: 1593444834
        deliveryId:
          type: string
          description: Deliver identifier for the cancelled order.
          example: 53c3afb5-fcs5-4941-be6d-2179f812sc8d
        restaurantName:
          type: string
          description: Restaurant name for the cancelled order.
          example: MacDonalds
        orderNumber:
          type: string
          description: Order number for the cancelled order.
          example: '10113445'
        isAlcoholDelivery:
          description: The cancelled order contains alcoholic products when true.
          type: boolean
        collectJobStatus:
          description: The collect job status for the cancelled order.
          $ref: '#/components/schemas/CouriersyncJobStatus'
        isCashPayment:
          description: The cancelled order was cash payment when true.
          type: boolean
        courierId:
          type: string
          description: Courier identifier for the cancelled order.
          example: 53c3afb5-fcs5-4941-be6d-2179f812sc8d
      description: The order cancelled object holds the details of a cancelled order.
      type: object
    CouriersyncShift:
      description: The shift object associated with a courier on a courier sync payload update.
      properties:
        vehicle:
          description: Type of vehicle on shift
          $ref: '#/components/schemas/CouriersyncVehicle'
        shiftType:
          description: Type of shift the courier is on
          $ref: '#/components/schemas/CouriersyncShiftType'
        startDate:
          description: Timestamp for when the shift was started.
          format: integer
          type: number
        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
        deliveryZoneId:
          description: Delivery zone id the shift was created for.
          example: 53c3afb5-fcs5-4941-be6d-2179f812sc8d
          type: string
      type: object
    CouriersyncShiftType:
      description: The types of shifts available for the couriers.
      enum:
        - REGULAR
        - ON_CALL
        - OVERFLOW
        - ALCOHOL_ELIGIBLE
        - UNKNOWN
      type: string
    CouriersyncSyncFlexStateType:
      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
    CouriersyncSyncPaymentType:
      description: The order payment status.
      enum:
        - PAID
        - UNPAID
      type: string
    CouriersyncTopUpPromotion:
      description: The zone profile object for a given delivery zone.
      properties:
        showAcceptanceRate:
          description: Enables showing the courier acceptance rate when true
          type: boolean
        currentAcceptanceRate:
          format: integer
          description: The current order acceptance rate calculated for the courier.
          example: 9500
          type: number
        requiredAcceptanceRate:
          format: integer
          description: The required acceptance rate the courier should have to be eligible for top up bonus subsidy.
          example: 8000
          type: number
      type: object
    CouriersyncVehicle:
      description: All The types of vehicle available.
      enum:
        - CAR
        - BICYCLE
        - TRICYCLE
        - VAN
        - TRUCK
        - E_BIKE
        - SCOOTER
      type: string
    CustomerconnectionCreateLoyaltySchemeConnectionRequest:
      required:
        - schemeId
        - membershipNumber
      properties:
        schemeId:
          description: The ID of the loyalty scheme.
          type: string
        membershipNumber:
          description: The customer's membership number for the scheme.
          type: string
      example:
        schemeId: coop
        membershipNumber: '1235252342'
      type: object
    CustomerconnectionCreateQuery:
      required:
        - createConnectionToken
      properties:
        createConnectionToken:
          description: The token that can be used to create the connection between a 3rd party and the authenticated customer.
          type: string
      example:
        createConnectionToken: 018eccae-b90a-7209-a1b8-6f6bc03bcc1c
      type: object
    CustomerconnectionCustomerConnectionUpdatedWebhook:
      required:
        - event_type
        - user_id
        - timestamp
      properties:
        event_type:
          description: The type of event.
          enum:
            - user.consent.revoked
            - user.benefit.updated
          type: string
        user_id:
          description: The third-party identifier for the user that this event is for.
          type: string
        timestamp:
          description: The timestamp of the event represented in ISO 8601.
          type: string
          format: date-time
      example:
        event_type: user.consent.revoked
        user_id: qp15XU2HzEd8qQFxOPgZ04TxAlqifKlc
        timestamp: '2025-05-09T11:36:37.0000000+02:00'
      type: object
    CustomerconnectionGetCustomerConnectionDetailsResponse:
      properties:
        connections:
          description: List of details about all the connections a customer has with third parties.
          type: array
          items:
            required:
              - identifier
              - status
            type: object
            properties:
              identifier:
                description: Third-party identifier.
                type: string
              status:
                description: Connection status.
                type: string
                enum:
                  - active
                  - inactive
                  - pending
                  - default
      example:
        connections:
          - identifier: AmazonPrime
            status: active
          - identifier: Another Third-Party
            status: inactive
      type: object
    CustomerconnectionGetLoyaltySchemesResponse:
      properties:
        loyaltyschemes:
          description: Gets details about all the loyalty schemes associated with the customer
          type: array
          items:
            required:
              - id
              - schemeId
              - membershipNumber
            type: object
            properties:
              id:
                description: The unique identifier of the loyalty scheme record.
                type: string
              schemeId:
                description: The ID of the loyalty scheme
                type: string
              membershipNumber:
                description: The membership number of the loyalty scheme
                type: string
              isActive:
                description: Whether the loyalty scheme is currently active
                type: boolean
      example:
        connections:
          - id: 1234
            schemeId: coop
            membershipNumber: 371346413
            isActive: true
          - id: 321442
            schemeId: anotherscheme
            membershipNumber: 2131314421
            isActive: false
    CustomerconnectionTokenQuery:
      required:
        - code
        - code_verifier
        - redirect_uri
        - connection_identifier
      properties:
        code:
          description: The authorization code that can be used to generate the connection tokens with a 3rd party.
          type: string
        code_verifier:
          description: The code verifier that was used to generate the code challenge in the initial authorization request to the 3rd party.
          type: string
        redirect_uri:
          description: The redirect URI that was used in the initial authorization request to the 3rd party.
          type: string
        connection_identifier:
          description: The identifier of the third-party to connect with.
          type: string
      example:
        code: SplxlOBezQQYbYS6WxdWMx
        code_verifier: 2CgAAiZC0g0OA-jmBmmjTBZiyPCQsnq_2q7k1sD-bBY
        redirect_uri: https://example.com/token
        connection_identifier: ThirdPartyIdentifier
      type: object
    CustomerconnectionTokenResponse:
      description: Response containing the token to create connection with 3rd party
      properties:
        create_connection_token:
          description: The token that can be used to create the connection between a 3rd party and the authenticated customer.
          type: string
      example:
        create_connection_token: 018eccae-b90a-7209-a1b8-6f6bc03bcc1c
      type: object
    CustomerfavouritesCreateCustomerFavouriteRequest:
      type: object
      description: A request to create a favourite for a customer.
      required:
        - type
        - id
      properties:
        type:
          description: Type of the favourite to be created.
          type: string
          enum:
            - partner
        id:
          description: Identifier of the resource to be marked as favourite.
          type: string
      example:
        type: partner
        id: b16f42862d
    CustomerfavouritesGetCustomerFavouritesForTypeResponse:
      properties:
        favourites:
          description: List of favourites of a particular type.
          type: array
          items:
            required:
              - id
              - createdAt
            type: object
            properties:
              id:
                description: Unique identifier for the favourite.
                type: string
              createdAt:
                description: Date and time when the favourite was created, represented in ISO 8601 date format.
                type: string
                format: date-time
      example:
        favourites:
          - id: e14f328726
            createdAt: '2022-01-13T20:08:51.01Z'
          - id: b16f42862d
            createdAt: '2022-08-15T14:57:47.893Z'
      type: object
    CustomerordercreationrestaurantsAcceptedPaymentTypesDto:
      type: object
      properties:
        acceptsCreditCard:
          type: boolean
        acceptsCash:
          type: boolean
        acceptsInteracOnline:
          type: boolean
        acceptsCorporate:
          type: boolean
    CustomerordercreationrestaurantsAdminSettingsDto:
      type: object
      properties:
        masterOnline:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsMasterOnline'
        isActive:
          type: boolean
    CustomerordercreationrestaurantsCarouselDto:
      type: object
      properties:
        carouselId:
          type: string
        pinnedPosition:
          type: integer
          format: int32
        delzoneId:
          type: string
          nullable: true
        cuisineId:
          type: string
          nullable: true
        type:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsCarouselType'
        platform:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsCarouselPlatform'
        name:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsCarouselName'
        subtitle:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsCarouselSubtitle'
        restaurants:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantSearchResultDto'
    CustomerordercreationrestaurantsCarouselName:
      type: object
      properties:
        en:
          type: string
        fr:
          type: string
    CustomerordercreationrestaurantsCarouselPlatform:
      type: string
      enum:
        - WEB
        - MOBILE
        - ALL
    CustomerordercreationrestaurantsCarouselSubtitle:
      type: object
      properties:
        en:
          type: string
          nullable: true
        fr:
          type: string
          nullable: true
    CustomerordercreationrestaurantsCarouselType:
      type: string
      enum:
        - CUISINE
        - FAVOURITE
        - ORDER_HISTORY
        - TOP_NAVIGATION
        - SEARCH_CAROUSEL
        - ML_RECOMMENDATION
        - ITEM
    CustomerordercreationrestaurantsCarouselsDto:
      type: object
      properties:
        carousels:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsCarouselDto'
    CustomerordercreationrestaurantsCategoryFrequencyDto:
      type: object
      properties:
        categoryName:
          type: string
        frequency:
          type: integer
          format: int32
    CustomerordercreationrestaurantsCategorySuggestionDto:
      type: object
      properties:
        enName:
          type: string
        frName:
          type: string
    CustomerordercreationrestaurantsCloseTimePaddingModifier:
      type: string
      enum:
        - DEFAULT
        - IGNORE_ASAP_TARGET_COLLECT
    CustomerordercreationrestaurantsCuisineDto:
      type: object
      properties:
        id:
          type: string
        name:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsCuisineName'
        spotlight:
          type: boolean
        imageUrl:
          type: string
          nullable: true
        pinnedPosition:
          type: integer
          nullable: true
          format: int32
        frequency:
          type: integer
          format: int32
        spotlightDelivery:
          type: boolean
        spotlightPickup:
          type: boolean
    CustomerordercreationrestaurantsCuisineName:
      type: object
      properties:
        en:
          type: string
        fr:
          type: string
    CustomerordercreationrestaurantsCuisinesDto:
      type: object
      properties:
        cuisines:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsCuisineDto'
    CustomerordercreationrestaurantsDeliveryFeeDto:
      type: object
      properties:
        fee:
          type: integer
          format: int32
        orderMinimum:
          type: integer
          format: int32
        skipSubsidy:
          type: integer
          format: int32
        restaurantSubsidy:
          type: integer
          format: int32
        pass:
          type: string
          nullable: true
        provider:
          type: string
          nullable: true
    CustomerordercreationrestaurantsDeliveryHours:
      type: object
      properties:
        sunday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsStartEnd'
        monday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsStartEnd'
        tuesday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsStartEnd'
        wednesday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsStartEnd'
        thursday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsStartEnd'
        friday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsStartEnd'
        saturday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsStartEnd'
    CustomerordercreationrestaurantsDeliveryPackage:
      type: string
      enum:
        - DEFAULT_SETUP
        - SKIP_FREE_DELIVERY
        - RESTAURANT_FREE_DELIVERY
        - PROMOTION
        - QSR
        - SKIP_FREE_QSR
        - RESTAURANT_FREE_QSR
        - PROMOTION_TWO
        - RESTAURANT_SELF_SERVE
        - CUSTOM_SETUP
        - SKIP_FREE_CP
        - RESTAURANT_FREE_CP
        - SPLIT_FREE_CP
        - MICRO
        - FSG
        - SKIP_FREE_FSG
        - RESTAURANT_FREE_FSG
        - SPLIT_FREE_FSG
        - QSG
        - SKIP_FREE_QSG
        - RESTAURANT_FREE_QSG
        - SPLIT_FREE_QSG
        - FSA
        - SKIP_FREE_FSA
        - RESTAURANT_FREE_FSA
        - SPLIT_FREE_FSA
    CustomerordercreationrestaurantsDorothyEstimateDto:
      type: object
      properties:
        predictedMinutes:
          type: integer
          nullable: true
          format: int32
    CustomerordercreationrestaurantsGeoPositionDto:
      type: object
      properties:
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
    CustomerordercreationrestaurantsHourMinute:
      type: object
      properties:
        hour:
          type: integer
          format: int32
        minute:
          type: integer
          format: int32
    CustomerordercreationrestaurantsHoursDto:
      type: object
      properties:
        start:
          type: integer
          format: int64
        end:
          type: integer
          format: int64
    CustomerordercreationrestaurantsImageUrlsDto:
      type: object
      properties:
        menuImageLargeUrl:
          type: string
          nullable: true
        menuImageMediumUrl:
          type: string
          nullable: true
        menuImageSmallUrl:
          type: string
          nullable: true
        listImageWebUrl:
          type: string
          nullable: true
        listImageMobileUrl:
          type: string
          nullable: true
        menuImageListUrl:
          type: string
          nullable: true
    CustomerordercreationrestaurantsLocation:
      type: object
      properties:
        name:
          type: string
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
        address:
          type: string
        address1:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        province:
          type: string
        taxZoneId:
          type: string
        country:
          type: string
        postalCode:
          type: string
          nullable: true
    CustomerordercreationrestaurantsLocationDto:
      type: object
      properties:
        address:
          type: string
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
    CustomerordercreationrestaurantsLocationDto1:
      type: object
      properties:
        address:
          type: string
        position:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsGeoPositionDto'
        province:
          type: string
        country:
          type: string
        taxZoneId:
          type: string
        name:
          type: string
    CustomerordercreationrestaurantsMasterOnline:
      type: string
      enum:
        - ONBOARDING
        - ONLINE
        - DELCO_NETWORK
        - SPECIAL_DATES
        - ACCOUNT_ISSUES
        - NON_ACCOUNT_ISSUES
        - ONBOARDING_UNSUCCESSFUL
        - LEFT_NETWORK
        - SKIP_REASONS
        - BANNED
        - JE_NO_OVERRIDE
    CustomerordercreationrestaurantsOrderType:
      type: string
      enum:
        - DELIVERY
        - PICKUP
      description: Type of order
    CustomerordercreationrestaurantsPartnerSuggestionDto:
      type: object
      properties:
        restaurantId:
          type: string
        name:
          type: string
        cuisineNames:
          type: array
          uniqueItems: true
          items:
            type: string
        skipScore:
          type: integer
          format: int32
    CustomerordercreationrestaurantsPreOrderTimesParamsDto:
      type: object
      properties:
        restaurantId:
          type: string
          nullable: true
        latitude:
          type: number
          nullable: true
          format: double
        longitude:
          type: number
          nullable: true
          format: double
        deliveryMinutes:
          type: integer
          nullable: true
          format: int32
        orderType:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsOrderType'
        callIn:
          type: boolean
          nullable: true
        itemMap:
          type: object
          additionalProperties:
            type: integer
            format: int32
    CustomerordercreationrestaurantsRadiusSearchResultDto:
      type: object
      properties:
        restaurantIds:
          type: array
          items:
            type: string
    CustomerordercreationrestaurantsRestaurantFlatInfoDto:
      type: object
      properties:
        id:
          type: string
        timeZone:
          type: string
        location:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsLocationDto1'
        isDelco:
          type: boolean
        restaurantGroupId:
          type: string
          nullable: true
        acceptedPaymentTypes:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsAcceptedPaymentTypesDto'
        isShopAndPayPartner:
          type: boolean
    CustomerordercreationrestaurantsRestaurantFlatWithOpenInfoDto:
      type: object
      properties:
        id:
          type: string
        timeZone:
          type: string
        location:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsLocationDto1'
        isDelco:
          type: boolean
        restaurantGroupId:
          type: string
          nullable: true
        acceptedPaymentTypes:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsAcceptedPaymentTypesDto'
        isOpen:
          type: boolean
        isShopAndPayPartner:
          type: boolean
    CustomerordercreationrestaurantsRestaurantGeoPositionInfoBatchDto:
      type: object
      properties:
        restaurantGeoPositionMap:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsGeoPositionDto'
    CustomerordercreationrestaurantsRestaurantGrubhubDetailsDto:
      type: object
      properties:
        restaurantId:
          type: string
        grubhubUrl:
          type: string
          nullable: true
    CustomerordercreationrestaurantsRestaurantLiveDataBatchDto:
      type: object
      properties:
        restaurants:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantLiveDataDto'
    CustomerordercreationrestaurantsRestaurantLiveDataDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        cleanUrl:
          type: string
        skipScore:
          type: integer
          format: int32
        isDelco:
          type: boolean
        targetCollectTime:
          type: integer
          nullable: true
          format: int32
        foodPrepTime:
          type: integer
          format: int32
        online:
          type: boolean
        position:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsGeoPositionDto'
        hours:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsHoursDto'
        restaurantGroupId:
          type: string
          nullable: true
        cuisineIds:
          type: array
          uniqueItems: true
          items:
            type: string
        neighbourhoodCleanUrl:
          type: string
          nullable: true
        isNonNetwork:
          type: boolean
        deliveryPackage:
          allOf:
            - $ref: '#/components/schemas/CustomerordercreationrestaurantsDeliveryPackage'
          nullable: true
        isRetailMenu:
          type: boolean
        restaurantType:
          allOf:
            - $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantType'
          nullable: true
        isLiveMenuV2:
          type: boolean
        isNestedMenu:
          type: boolean
        primaryCuisineId:
          type: string
          nullable: true
        secondaryCuisineId:
          type: string
          nullable: true
        closeTimePaddingModifier:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsCloseTimePaddingModifier'
        offers:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantOfferSummaryDto'
    CustomerordercreationrestaurantsRestaurantLookupDto:
      type: object
      properties:
        restaurants:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantOverviewDto'
    CustomerordercreationrestaurantsRestaurantOfferSummaryDto:
      type: object
      properties:
        promotionId:
          type: string
        restaurantId:
          type: string
        offerType:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantOfferType'
        enabled:
          type: boolean
        minimumSubtotal:
          type: integer
          nullable: true
          format: int32
        discountAmount:
          type: integer
          nullable: true
          format: int32
        points:
          type: integer
          nullable: true
          format: int32
        maxRedemptions:
          type: integer
          nullable: true
          format: int32
    CustomerordercreationrestaurantsRestaurantOfferType:
      type: string
      enum:
        - FREE_ITEM
        - RFB
        - FLAT_DISCOUNT
        - BUY_ONE_GET_ONE
    CustomerordercreationrestaurantsRestaurantOverviewDto:
      type: object
      properties:
        id:
          type: string
        shortName:
          type: string
        cleanUrl:
          type: string
        logoUrl:
          type: string
          nullable: true
    CustomerordercreationrestaurantsRestaurantParamsDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
    CustomerordercreationrestaurantsRestaurantParamsFullDto:
      type: object
      properties:
        orderType:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsOrderType'
        requestedTime:
          type: integer
          nullable: true
          format: int64
        delcoHours:
          allOf:
            - $ref: '#/components/schemas/CustomerordercreationrestaurantsDeliveryHours'
          nullable: true
        asapTargetCollect:
          type: integer
          nullable: true
          format: int32
        itemMap:
          type: object
          additionalProperties:
            type: integer
            format: int32
        latitude:
          type: number
          nullable: true
          format: double
        longitude:
          type: number
          nullable: true
          format: double
    CustomerordercreationrestaurantsRestaurantSearchResultDto:
      type: object
      properties:
        restaurantId:
          type: string
        name:
          type: string
        fees:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsDeliveryFeeDto'
        cleanUrl:
          type: string
        minTime:
          type: integer
          format: int32
        medTime:
          type: integer
          format: int32
        maxTime:
          type: integer
          format: int32
        skipScore:
          type: integer
          format: int32
        bannerImageUrl:
          type: string
          nullable: true
        logoImageUrl:
          type: string
          nullable: true
        promotionId:
          type: string
          nullable: true
        isNew:
          type: boolean
        restaurantType:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantType'
        isOpen:
          type: boolean
        distance:
          type: number
          nullable: true
          format: double
        isTopPlacement:
          type: boolean
        deliveryMinutes:
          type: integer
          format: int32
        isRetailMenu:
          type: boolean
        timeZone:
          type: string
        menuHours:
          allOf:
            - $ref: '#/components/schemas/CustomerordercreationrestaurantsWeeklyHoursDto'
          nullable: true
        location:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsLocationDto'
        offers:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantOfferSummaryDto'
        isShopAndPayPartner:
          type: boolean
        showSkipScore:
          type: boolean
    CustomerordercreationrestaurantsRestaurantSearchResultListDto:
      type: object
      properties:
        restaurantSearchResultDtoList:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantSearchResultDto'
        restaurantClosedForDeliveryList:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantSearchResultDto'
        categoryFrequencyList:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsCategoryFrequencyDto'
    CustomerordercreationrestaurantsRestaurantStaticInfoBatchDto:
      type: object
      properties:
        restaurants:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantStaticInfoDto'
    CustomerordercreationrestaurantsRestaurantStaticInfoDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        cleanUrl:
          type: string
        skipScore:
          type: integer
          format: int32
        isDelco:
          type: boolean
        imageUrls:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsImageUrlsDto'
        hasRealImages:
          type: boolean
        cuisinesIds:
          type: array
          uniqueItems: true
          items:
            type: string
        location:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsLocationDto1'
        restaurantGroupId:
          type: string
          nullable: true
        isNew:
          type: boolean
        alcoholLicense:
          type: string
          nullable: true
        acceptsAlcoholStackedOrder:
          type: boolean
        menuItemSpecialInstructions:
          type: boolean
        restaurantType:
          allOf:
            - $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantType'
          nullable: true
        deliveryPackage:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsDeliveryPackage'
        isRetailMenu:
          type: boolean
        isLiveMenuV2:
          type: boolean
        isNestedMenu:
          type: boolean
        allowReordering:
          type: boolean
        catalogRestrictionUrl:
          type: string
          nullable: true
        primaryCuisineId:
          type: string
          nullable: true
        secondaryCuisineId:
          type: string
          nullable: true
        isShopAndPayPartner:
          type: boolean
        showSkipScore:
          type: boolean
    CustomerordercreationrestaurantsRestaurantTimeEstimateDto:
      type: object
      properties:
        predictedMinutes:
          type: integer
          format: int32
    CustomerordercreationrestaurantsRestaurantType:
      type: string
      enum:
        - FULL_SERVICE
        - QUICK_SERVICE
        - GROCERY
        - ALCOHOL
        - CONVENIENCE_STORE
        - CANNABIS
        - SKIP_EXPRESS_LANE
        - PHARMACY
        - RETAIL
        - PET_STORE
        - FLOWERS
        - BEAUTY
        - KIDS_AND_BABY
    CustomerordercreationrestaurantsRestaurantWithStatusDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        shortName:
          type: string
        cleanUrl:
          type: string
        skipScore:
          type: integer
          format: int32
        isDelco:
          type: boolean
        imageUrls:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsImageUrlsDto'
        cuisinesIds:
          type: array
          uniqueItems: true
          items:
            type: string
        location:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsLocation'
        restaurantGroupId:
          type: string
          nullable: true
        menuItemSpecialInstructions:
          type: boolean
        acceptsPickup:
          type: boolean
        online:
          type: boolean
        foodPrepMinutes:
          type: integer
          format: int32
        timeZone:
          type: string
        acceptedPaymentTypes:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsAcceptedPaymentTypesDto'
        grubhubUrl:
          type: string
          nullable: true
        clientStoreId:
          type: string
          nullable: true
        isOpen:
          type: boolean
          nullable: true
        opensAt:
          type: integer
          nullable: true
          format: int64
        skipScoreOverride:
          type: integer
          nullable: true
          format: int32
        adminSettings:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsAdminSettingsDto'
        weeklyHours:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsWeeklyHoursDto'
        membershipSavingsAvailable:
          type: boolean
        offers:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantOfferSummaryDto'
    CustomerordercreationrestaurantsRestaurantZoneDto:
      type: object
      properties:
        deliveryMinutes:
          type: integer
          format: int32
        fees:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsDeliveryFeeDto'
    CustomerordercreationrestaurantsRestaurantZoneForDeliveryDto:
      type: object
      properties:
        restaurantId:
          type: string
        minutes:
          type: integer
          format: int32
        fees:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsDeliveryFeeDto'
        membershipSavingsAvailable:
          type: boolean
    CustomerordercreationrestaurantsRestaurantZoneForDeliveryListDto:
      type: object
      properties:
        restaurantZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsRestaurantZoneForDeliveryDto'
    CustomerordercreationrestaurantsSearchSuggestionsDto:
      type: object
      properties:
        categoryNames:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsCategorySuggestionDto'
        partners:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsPartnerSuggestionDto'
    CustomerordercreationrestaurantsSortType:
      type: string
      enum:
        - SKIP_SCORE_DESCENDING
        - ASAP_TIME_ESTIMATE_ASCENDING
        - DELIVERY_FEE_ASCENDING
        - DISTANCE_ASCENDING
        - DEFAULT
    CustomerordercreationrestaurantsStartEnd:
      type: object
      properties:
        start:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsHourMinute'
        end:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsHourMinute'
    CustomerordercreationrestaurantsTime:
      type: object
      properties:
        hour:
          type: integer
          format: int32
        minute:
          type: integer
          format: int32
    CustomerordercreationrestaurantsTimeRange:
      type: object
      properties:
        start:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsTime'
        end:
          $ref: '#/components/schemas/CustomerordercreationrestaurantsTime'
    CustomerordercreationrestaurantsTopPlacementSearchResultDto:
      type: object
      properties:
        promotionId:
          type: string
        restaurantId:
          type: string
    CustomerordercreationrestaurantsTopPlacementSearchResultListDto:
      type: object
      properties:
        records:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsTopPlacementSearchResultDto'
    CustomerordercreationrestaurantsWeeklyHoursDto:
      type: object
      properties:
        sunday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsTimeRange'
        monday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsTimeRange'
        tuesday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsTimeRange'
        wednesday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsTimeRange'
        thursday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsTimeRange'
        friday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsTimeRange'
        saturday:
          type: array
          items:
            $ref: '#/components/schemas/CustomerordercreationrestaurantsTimeRange'
    CustomersupportHelpChannelsResponse:
      type: object
      description: A response containing the details of help channels available to a customer, including whether it's enabled and any metadata that the channel might require to optimally function
      properties:
        chatbot:
          type: object
          description: Contains the help channel details related to the chatbot
          properties:
            isEnabled:
              description: The status showing if the chatbot help channel is enabled
              type: boolean
            tags:
              description: The tags required by the chatbot feature
              type: array
              items:
                type: string
            metadata:
              description: The metadata required by the chatbot feature
              type: array
              items:
                type: object
                properties:
                  id:
                    description: The identifier of the metadata field
                    type: string
                  value:
                    description: The value of the metadata field
                    type: string
          required:
            - isEnabled
      required:
        - chatbot
      example:
        chatbot:
          isEnabled: true
          tags:
            - order_origin_core
            - origin_chat_agent
          metadata:
            - id: '19542902182557'
              value: service_customer
            - id: '22512833221661'
              value: chatbot
    CustomersupportInformationBannerResponse:
      type: object
      description: A response containing the current state of the information banner
      properties:
        isEnabled:
          description: The status on whether the information banner should be shown
          type: boolean
        title:
          description: The title of the information banner
          type: string
        message:
          description: The message content of the information banner
          type: string
      required:
        - isEnabled
      example:
        isEnabled: true
        title: Delayed Response Alert
        message: Our response time is slower due to technical issues with our ticketing partner. Apologies for the inconvenience.
    CustomersupportLegalConcernRequest:
      type: object
      description: A request to report a legal concern from a customer
      properties:
        name:
          maxLength: 160
          description: The customer name
          type: string
        emailAddress:
          maxLength: 160
          description: The customer email address
          type: string
          format: email
        topic:
          description: Topic code representing the context for the legal concern
          enum:
            - menu
            - review
            - sellersInformation
          type: string
        reason:
          description: Reason code representing the reason for the legal concern
          enum:
            - fake
            - nameOrDescriptionViolatesThirdPartyTrademarkRights
            - itemOrImageViolatesThirdPartyTrademarkRights
            - itemNotFromBrand
            - itemFakeCopyOrIllegal
            - itemDescriptionWrongOrMisleading
            - itemImagesDoNotRepresent
            - itemAllergenInformationMissingOrIncorrect
            - itemMayContainRestrictedIngredients
            - insultsHarassesOrDiscriminates
            - indicatesBriberyModernDaySlaveryOrExploitation
            - inaccurateFoodHygieneRating
            - incorrectLocation
            - inaccurateDescriptionIncorrectOrOffensive
            - incorrectOpeningTimes
            - other
            - profanityOrOffensiveWording
          type: string
        partnerId:
          maxLength: 30
          description: The id of the Partner (e.g. a restaurant)
          type: string
        partnerName:
          maxLength: 200
          description: The name of the Partner (e.g. a restaurant)
          type: string
        details:
          maxLength: 4000
          description: The details of the legal concern request including the specific complaint that the customer has about this content
          type: string
        identifier:
          maxLength: 120
          description: An identifier for the content that the customer has a legal concern with to help assist in the identification of the content e.g. menu item name or review id
          type: string
        additionalInformation:
          maxLength: 70
          description: Additional information used to help identify the specifics of the legal concern e.g. category of the menu item that has been reported
          type: string
        confirmation:
          description: Legal confirmation from the customer that their report is accurate to the best of their knowledge
          type: boolean
      required:
        - name
        - emailAddress
        - topic
        - reason
        - details
        - confirmation
      example:
        name: Bob Smith
        emailAddress: bob.smith@justeattakeaway.com
        topic: sellersInformation
        reason: incorrectLocation
        partnerId: '123456'
        partnerName: Random Restaurant
        details: The seller is not telling the truth in their information
        identifier: '123456'
        confirmation: true
    CustomersupportSupportTicketRequest:
      type: object
      description: A request to raise a support ticket from a customer
      properties:
        name:
          maxLength: 160
          description: The customer name
          type: string
        emailAddress:
          maxLength: 160
          description: The customer email address
          type: string
          format: email
        phoneNumber:
          maxLength: 20
          description: The customer phone number
          type: string
        details:
          maxLength: 4000
          description: The customer's description of their request, including any extra details that will help an agent resolve their problem
          type: string
        relatedSubject:
          maxLength: 200
          description: The related subject of the support request, e.g. title of the FAQ article that this request was made from
          type: string
        reason:
          maxLength: 100
          description: The summary reason why the support request is being made used to direct the support request to the correct location
          type: string
        orderNumber:
          maxLength: 30
          description: The friendly order identifier of the order related to the support request
          type: string
      required:
        - name
        - emailAddress
        - phoneNumber
        - details
        - relatedSubject
        - reason
      example:
        name: Bob Smith
        emailAddress: bob.smith@justeattakeaway.com
        phoneNumber: '01234567890'
        details: My order was missing half of the pizza I ordered!
        relatedSubject: How do we handle missing items in your order
        reason: default
        orderNumber: '12345678'
    CustomersupportSupportTokenResponse:
      type: object
      description: A response containing a support token to be used with 3rd party support service
      properties:
        supportToken:
          description: The generated support token for 3rd party support service
          type: string
      required:
        - supportToken
      example:
        supportToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
    CustomerverificationVerifyGuestQuery:
      required:
        - email
        - deviceId
      properties:
        email:
          description: The customer's email address.
          format: email
          type: string
        deviceId:
          description: The customer's unique device Id.
          type: string
      example:
        email: customer@just-eat.com
        deviceId: 108D854D-FF71-#B56-8B77-B7375481BEF4
      type: object
    CustomerverificationVerifyQuery:
      required:
        - email
        - token
      properties:
        email:
          description: The customer's email address.
          format: email
          type: string
        token:
          description: The customer's authentication (CityMeal) token.
          type: string
      example:
        email: customer@just-eat.com
        token: SGVsbG9Xb3JsZCE=
      type: object
    CustomerverificationVerifyResponse:
      description: Response containing the customer details.
      properties:
        email:
          description: The customer's email address.
          format: email
          type: string
        fullName:
          description: The customer's full name.
          type: string
        userType:
          description: The customer's registration type.
          enum:
            - guest
            - account
          type: string
        accountStatus:
          description: The customer's account status.
          enum:
            - notApplicable
            - notActivated
            - activated
          type: string
        jetPayStatus:
          description: The customer's JET pay status.
          enum:
            - allowed
            - notAllowed
          type: string
        phoneNumber:
          description: The customer's phone number.
          type: string
      example:
        email: customer@just-eat.com
        fullName: John Doe
        userType: guest
        accountStatus: activated
        jetPayStatus: allowed
        phoneNumber: '+12345678901'
      type: object
    CustomerverificationVerifyTokenQuery:
      required:
        - accessToken
        - refreshToken
      properties:
        accessToken:
          description: The customer's authentication token
          type: string
        refreshToken:
          description: The customer's refresh token.
          type: string
      example:
        accessToken: eyJhbGciOiJSUzI1NiIsImprdS
        refreshToken: eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dH
      type: object
    CustomerverificationVerifyTokenResponse:
      description: Response containing the customer details.
      properties:
        email:
          description: The customer's email address.
          format: email
          type: string
        userType:
          description: The customer's registration type.
          enum:
            - guest
            - account
          type: string
        customerId:
          description: Customer Id.
          type: string
      example:
        email: customer@just-eat.com
        userType: guest
        customerId: '123456789'
      type: object
    DaasDaaSAssistanceRequest:
      type: object
      description: The assistance request object.
      required:
        - requestId
        - collect
        - reason
      properties:
        requestId:
          type: string
          description: The ID of the request. This is generated from the [Estimate delivery](#tag/Delivery-as-a-Service/paths/~1delivery~1estimate/post) endpoint
          nullable: false
        collect:
          description: Collect point used to identify the pick-up address. Represents a restaurant, a grocery store, or any other collect point. The available collect points can be retrieved using the [Get Collect Points](#tag/Delivery-as-a-Service/paths/~1delivery~1collect-points/get) endpoint.
          nullable: false
          type: object
          required:
            - id
          properties:
            id:
              type: string
              description: The collect point Id.
              nullable: false
        reason:
          enum:
            - COLLECTION_TIME_UPDATE
            - REPORT_COURIER_DELAY
            - REPORT_BAD_COURIER_BEHAVIOUR
            - OTHER_CUSTOMER_CONCERNS
            - SPECIAL_INSTRUCTIONS_INQUIRY
            - OTHER_ORDER_ISSUES
          type: string
          description: Reason used to identify the reason for which a partner needs help.
          nullable: false
      example:
        requestId: 9f84ce96-69e4-4122-8250-b17c0e92dd25
        collect:
          id: efeb46ce-53eb-44cd-afba-ba59e7b84a57
        reason: COLLECTION_TIME_UPDATE
    DaasDaaSAssistanceRequestResponse:
      type: object
      description: Request for help response.
      properties:
        requestId:
          type: string
          description: Unique Id used to identify the request.
          nullable: false
        message:
          type: string
          description: The message related to the processing of the assistance request.
          nullable: false
      example:
        requestId: 9f84ce96-69e4-4122-8250-b17c0e92dd25
        message: Request for Assistance successfully processed, please expect a Skip Agent to reach out to you.
    DaasDaaSBarcode:
      type: object
      description: Details about the type of Barcode provider.
      properties:
        type:
          description: Type of barcode provider. Currently, only partner provided barcode is supported. Note -- this is currently not supported for the following markets [BE, BG, DK, IT, NL, PL, ES, CH].
          nullable: false
          enum:
            - PARTNER_PROVIDED
    DaasDaaSCancelDeliveryRequest:
      type: object
      description: The cancel delivery object.
      required:
        - requestId
      properties:
        requestId:
          type: string
          description: The ID of the request. This is generated from the [Estimate delivery](#tag/Delivery-as-a-Service/paths/~1delivery~1estimate/post) endpoint
          nullable: false
      example:
        requestId: 9f84ce96-69e4-4122-8250-b17c0e92dd25
    DaasDaaSCancelDeliveryResponse:
      type: object
      description: The order cancellation response.
      properties:
        requestId:
          type: string
          description: Unique Id used to identify the request.
          nullable: false
        message:
          type: string
          description: The message related to the processing of the cancellation request.
          nullable: false
      example:
        requestId: 9f84ce96-69e4-4122-8250-b17c0e92dd25
        message: The order cancellation request is being processed right now.
    DaasDaaSCancelJobStatusResponse:
      type: object
      description: The status of a cancellation request.
      title: CancelJobStatus
      required:
        - status
        - message
        - requestId
        - vendorOrderId
      properties:
        status:
          enum:
            - true
            - false
          type: boolean
          description: The status of a cancellation request.
          nullable: false
        message:
          type: string
          description: The error message associated with a failed cancellation request (only provided if the status is false, otherwise this property will be empty).
          nullable: false
        requestId:
          type: string
          description: The request ID associated with the delivery.
          nullable: false
        vendorOrderId:
          type: string
          description: Order ID supplied by the partner on delivery creation referencing the order within their systems. If this was not specified by the partner this will be an auto-generated number by JET.
          nullable: false
        metadata:
          type: object
          description: Key-value map of partner custom identifiers that were provided during delivery creation.
          nullable: true
      example:
        status: true
        message: ''
        requestId: e0d58b3a-f547-4013-a4e5-728263040f33
        vendorOrderId: '123456789'
        metadata:
          store_id: '2132546'
    DaasDaaSCollectPointAddressResponse:
      type: object
      description: The collect point address.
      properties:
        id:
          type: string
          description: The collect point Id.
          nullable: false
        name:
          type: string
          description: Name of the collect point.
          nullable: false
        emailAddress:
          type: string
          description: Email of the collect point.
          nullable: false
        phoneNumber:
          type: string
          description: |
            Phone number of the collect point.

            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.
          nullable: false
          minLength: 3
          maxLength: 16
        address:
          type: string
          description: Address of the collect point.
          nullable: false
        city:
          type: string
          description: City of the collect point.
          nullable: false
        province:
          type: string
          description: Province of the collect point.  This will not be returned where a province is not applicable, for example in some EU markets.
          nullable: true
        postalCode:
          type: string
          description: Postal code of the collect point.
          nullable: true
        latitude:
          type: number
          description: Latitude information.
          nullable: false
          format: double
        longitude:
          type: number
          description: Longitude information.
          nullable: false
          format: double
        timeZone:
          type: string
          description: Time zone of the collect point in IANA format.
          nullable: false
        countryCode:
          type: string
          description: Country of the collect point in upper case ISO 3166-1 alpha-2 format.
          nullable: true
        locationRemarks:
          type: string
          description: Instructions from partner to the courier. These are intended to help the courier navigate to the partner premises.
          nullable: true
        courierRegion:
          type: string
          description: Id of the delivery region, where the collect point is located. This will only be returned for collect points in the following markets [BE, BG, DK, IT, NL, PL, ES, CH].
          nullable: true
        corporateIdentifier:
          type: string
          description: Corporate identifier of the collect point, where applicable.
          nullable: true
    DaasDaaSCollectPointResponse:
      type: object
      description: The list of collect points.
      properties:
        collectPoints:
          type: array
          description: List of collect points.
          items:
            $ref: '#/components/schemas/DaasDaaSCollectPointAddressResponse'
      example:
        collectPoints:
          - id: efeb46ce-53eb-44cd-afba-ba59e7b84a57
            name: SkipTheDishes
            emailAddress: skip.the.dishes@email.com
            phoneNumber: '+12049433578'
            address: 140 Bannatyne Ave
            city: Winnipeg
            province: Manitoba
            postalCode: R3B 3C5
            latitude: 49.89747240077531
            longitude: -97.13645263021056
            timeZone: America/Winnipeg
            tenantId: ca
            shortName: SkipTheDishes
            locationRemarks: Curb side pickup only
            corporateIdentifier: '107'
          - id: b37b03d0-828b-4d83-8d6c-f205699dcd49
            name: Just Eat
            emailAddress: just.eat@email.com
            phoneNumber: '+14315559966'
            address: CuvryStr 23
            city: Berlin
            postalCode: '13357'
            latitude: 52.549883
            longitude: 13.377196
            timeZone: Europe/Berlin
            countryCode: DE
            locationRemarks: Use the stairs on the left of the restaurant.
            courierRegion: de:berlin
    DaasDaaSConflictException:
      description: A HTTP 409 error response
      properties:
        error:
          description: Type of Exception.
          type: string
        message:
          description: The reason that an error was thrown.
          type: string
      type: object
      example:
        error: RestException
        message: Unable to create a request for assistance as an action already exists for this delivery.
    DaasDaaSCourierCollectionTimeResponse:
      type: object
      description: The Courier Collection Time ETA.
      title: CourierCollectionTime
      required:
        - courierETA
        - requestId
        - deliveryProperties
        - deliveryId
      properties:
        deliveryId:
          type: string
          description: The ID associated with the delivery in the logistics network.  In cases where there are multiple deliveries for a DaaS request, this ID will uniquely identify the individual delivery.
          nullable: false
        courierETA:
          description: The courier's estimated time of arrival at the collection point in UTC.
          type: string
          format: date-time
        requestId:
          type: string
          description: The request ID associated with the delivery.
          nullable: false
        vendorOrderId:
          type: string
          description: Order ID supplied by the partner on delivery creation referencing the order within their systems.  If this was not specified by the partner this will be an auto-generated number by JET.
          nullable: false
        deliveryProperties:
          type: object
          description: Details about the additional properties associated with the delivery.
          properties:
            isReturn:
              type: boolean
              description: A flag indicating whether the delivery is a return job. If `true`, the delivery is a return.
              nullable: false
            reasonForReturn:
              type: string
              description: This field specifies the reason for the return of a delivery. It will only be populated if the delivery is being returned.
              nullable: true
        metadata:
          type: object
          description: Key-value map of partner custom identifiers that were provided during delivery creation.
          nullable: true
      example:
        courierETA: '2021-12-20T15:25:33.339Z'
        requestId: e0d58b3a-f547-4013-a4e5-728263040f33
        deliveryId: 0d6e0120-9523-45ab-a142-c9cc47b7767e
        vendorOrderId: '123456789'
        deliveryProperties:
          isReturn: false
          reasonForReturn: null
        metadata:
          store_id: '2132546'
    DaasDaaSCourierDeliveryTimeResponse:
      type: object
      description: The Courier Delivery Time ETA.
      title: CourierDeliveryTime
      required:
        - postPurchaseDeliveryEta
        - requestId
        - deliveryProperties
        - deliveryId
      properties:
        postPurchaseDeliveryEta:
          description: The courier's estimated time of arrival at the delivery point in UTC.
          type: string
          format: date-time
        requestId:
          type: string
          description: The request ID associated with the delivery.
          nullable: false
        deliveryId:
          type: string
          description: The ID associated with the delivery in the logistics network.  In cases where there are multiple deliveries for a DaaS request, this ID will uniquely identify the individual delivery.
          nullable: false
        vendorOrderId:
          type: string
          description: Order ID supplied by the partner on delivery creation referencing the order within their systems.  If this was not specified by the partner this will be an auto-generated number by JET.
          nullable: false
        deliveryProperties:
          type: object
          description: Details about the additional properties associated with the delivery.
          properties:
            isReturn:
              type: boolean
              description: A flag indicating whether the delivery is a return job. If `true`, the delivery is a return.
              nullable: false
            reasonForReturn:
              type: string
              description: This field specifies the reason for the return of a delivery. It will only be populated if the delivery is being returned.
              nullable: true
        metadata:
          type: object
          description: Key-value map of partner custom identifiers that were provided during delivery creation.
          nullable: true
      example:
        postPurchaseDeliveryEta: '2021-12-20T15:25:33.339Z'
        requestId: e0d58b3a-f547-4013-a4e5-728263040f33
        deliveryId: 0d6e0120-9523-45ab-a142-c9cc47b7767e
        vendorOrderId: '123456789'
        deliveryProperties:
          isReturn: false
          reasonForReturn: null
        metadata:
          store_id: '2132546'
    DaasDaaSCourierLocationResponse:
      type: object
      description: The Courier Location.
      title: CourierLocation
      required:
        - latitude
        - longitude
        - requestId
        - vendorOrderId
        - deliveryProperties
      properties:
        latitude:
          description: The courier's latitude.
          type: number
          format: float
        longitude:
          description: The courier's longitude.
          type: number
          format: float
        requestId:
          type: string
          description: The request ID associated with the delivery.
          nullable: false
        vendorOrderId:
          type: string
          description: Order ID supplied by the partner on delivery creation referencing the order within their systems.  If this was not specified by the partner this will be an auto-generated number by JET.
          nullable: false
        deliveryProperties:
          type: object
          description: Details about the additional properties associated with the delivery.
          required:
            - isReturn
          properties:
            isReturn:
              type: boolean
              description: A flag indicating whether the delivery is a return job. If `true`, the delivery is a return.
              nullable: false
            reasonForReturn:
              type: string
              description: This field specifies the reason for the return of a delivery. It will only be populated if the delivery is being returned.
              nullable: true
        metadata:
          type: object
          description: Key-value map of partner custom identifiers that were provided during delivery creation.
          nullable: true
      example:
        requestId: e0d58b3a-f547-4013-a4e5-728263040f33
        vendorOrderId: '123456789'
        latitude: 49.8027123
        longitude: 49.8027123
        deliveryProperties:
          isReturn: false
          reasonForReturn: null
        metadata:
          platform: Simulator
          version: 1.9.6
          mode: test
    DaasDaaSCourierResponse:
      type: object
      description: The status of a delivery.
      title: CourierJobStatus
      required:
        - deliveryId
        - status
        - orderId
        - requestId
        - vendorOrderId
        - poolingId
        - deliveryProperties
        - orderTrackerURL
        - courier
      properties:
        status:
          enum:
            - UNASSIGNED
            - ASSIGNED
            - IN_TRANSIT_TO_COLLECT
            - ARRIVED_TO_COLLECT
            - COLLECTED
            - IN_TRANSIT_TO_DELIVER
            - ARRIVED_TO_DELIVER
            - DELIVERED
            - RETURN_INITIATED
            - CANCELLED
            - CANCELLATION_FAILURE
          type: string
          description: |
            The current status of a delivery. Status progression:

            - `UNASSIGNED`: No courier has been assigned yet. The system is searching for available couriers.

            - `ASSIGNED`: A delivery offer has been sent to one or more couriers. **IMPORTANT: This does NOT mean a courier is confirmed**. You may receive multiple ASSIGNED notifications as offers are sent to different couriers.

            - `IN_TRANSIT_TO_COLLECT`: A courier has accepted the delivery and is confirmed and en route to your collection point.

            - `ARRIVED_TO_COLLECT`: The courier has arrived at your collection point and is ready to pick up the order.

            - `COLLECTED`: The courier has picked up the order from the pickup location.

            - `IN_TRANSIT_TO_DELIVER`: The courier is on their way to deliver the order to the customer.

            - `ARRIVED_TO_DELIVER`: The courier has arrived at the customer's delivery location.

            - `DELIVERED`: The order has been successfully delivered to the customer.

            - `RETURN_INITIATED`: The courier has initiated a return journey.

            - `CANCELLED`: The delivery has been cancelled successfully.

            - `CANCELLATION_FAILURE`: The cancellation attempt failed.
          nullable: false
        deliveryId:
          type: string
          description: The ID associated with the delivery in the logistics network.  In cases where there are multiple deliveries for a DaaS request, this ID will uniquely identify the individual delivery.
          nullable: false
        orderId:
          type: string
          description: The order ID associated with the delivery.
          nullable: false
        requestId:
          type: string
          description: The request ID associated with the delivery.
          nullable: false
        vendorOrderId:
          type: string
          description: Order ID supplied by the partner on delivery creation referencing the order within their systems.  If this was not specified by the partner this will be an auto-generated number by JET.
          nullable: false
        poolingId:
          type: string
          description: If Single Partner Pooling is enabled, this will contain a unique identifier of the pooled deliveries.  Deliveries with a matching `poolingId` will be picked up by the same courier.
          nullable: true
        deliveryProperties:
          type: object
          description: Details about the additional properties associated with the delivery.
          required:
            - isReturn
          properties:
            isReturn:
              type: boolean
              description: A flag indicating whether the delivery is a return job. If `true`, the delivery is a return.
              nullable: false
            reasonForReturn:
              type: string
              description: This field specifies the reason for the return of a delivery. It will only be populated if the delivery is being returned.
              nullable: true
        orderTrackerURL:
          type: string
          description: The tracking URL for the delivery.  Note -- This is only available for the following markets [CA, BE, BG, DK, IT, NL, PL, ES, CH], otherwise the value will be `Not available`.
          nullable: false
        courier:
          type: object
          description: Details about the courier associated with the delivery.
          required:
            - name
          properties:
            id:
              type: string
              description: Id of the courier.  Note -- This is not currently available for the following markets and will be blank [BE, BG, DK, IT, NL, PL, ES, CH].
              nullable: false
            name:
              type: string
              description: Name of the courier.  Note -- This is not currently available for the following markets and will be blank [BE, BG, DK, IT, NL, PL, ES, CH].
              nullable: false
      example:
        status: DELIVERED
        deliveryId: 0d6e0120-9523-45ab-a142-c9cc47b7767e
        orderId: efeb46ce-53eb-44cd-afba-ba59e7b84a89
        requestId: e0d58b3a-f547-4013-a4e5-728263040f33
        vendorOrderId: '123456789'
        poolingId: f664be7a-6ffc-4287-8a7f-3e32beacc851
        orderTrackerURL: http://www.skipthedishes.com/order-tracker/efeb46ce-53eb-44cd-afba-ba59e7b84a89
        courier:
          id: 17cc81ef-d246-460a-a5d2-e4db506c17d7
          name: Example Courier
        deliveryProperties:
          isReturn: false
          reasonForReturn: null
    DaasDaaSDelcoNotification:
      type: object
      description: All Delco Notifications.
      title: Rest of World market supported notifications
      anyOf:
        - $ref: '#/components/schemas/DaasDaaSDeliveryCreatedResponse'
        - $ref: '#/components/schemas/DaasDaaSCourierResponse'
        - $ref: '#/components/schemas/DaasDaaSCourierCollectionTimeResponse'
        - $ref: '#/components/schemas/DaasDaaSCourierLocationResponse'
        - $ref: '#/components/schemas/DaasDaaSCancelJobStatusResponse'
        - $ref: '#/components/schemas/DaasDaaSCourierDeliveryTimeResponse'
        - $ref: '#/components/schemas/DaasDaaSProofOfDeliveryResponse'
        - $ref: '#/components/schemas/DaasDaaSPictureProofOfDeliveryResponse'
    DaasDaaSDeliveryAddress:
      type: object
      description: Delivery Point address.
      required:
        - name
        - emailAddress
        - phoneNumber
        - address
        - city
      properties:
        name:
          type: string
          description: Name of the recipient.
          nullable: false
          maxLength: 100
        emailAddress:
          type: string
          description: Email of the recipient.
          nullable: false
          maxLength: 100
        phoneNumber:
          type: string
          description: |
            Phone number of the recipient.

            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.
          nullable: false
          maxLength: 40
        address:
          type: string
          description: Address of the recipient.
          nullable: false
          maxLength: 255
        city:
          type: string
          description: City of the recipient’s address.
          nullable: false
          maxLength: 50
        province:
          type: string
          description: Province of the recipient.
          nullable: true
          maxLength: 50
        postalCode:
          type: string
          description: Postal code of the recipient’s address.
          nullable: true
          maxLength: 15
        geolocation:
          description: |
            Coordinates of the recipient’s address to be used for the delivery. **(Note: This is mandatory for the following markets [BE, BG, DK, IT, NL, PL, ES, CH])**
          nullable: true
          allOf:
            - $ref: '#/components/schemas/SharedGeoJsonPoint'
    DaasDaaSDeliveryCreatedResponse:
      type: object
      description: The Skip order number for a DaaS order.
      title: DeliveryCreated
      required:
        - deliveryId
        - requestId
        - orderNumber
        - vendorOrderId
        - deliveryProperties
      properties:
        deliveryId:
          type: string
          description: The ID associated with the delivery in the logistics network.  In cases where there are multiple deliveries for a DaaS request, this ID will uniquely identify the individual delivery.
          nullable: false
        requestId:
          type: string
          description: The request ID associated with the delivery.
          nullable: false
        orderNumber:
          type: integer
          description: Vendor Order ID supplied by the partner referencing the order within their systems. Note, if the partner does not supply this value, JET will auto-generate a number instead.  **Note -- Soon to be deprecated.**
          nullable: false
        vendorOrderId:
          type: string
          description: Order ID referencing the order. Note, this can be supplied by the partner. If the partner does not supply this value, JET will auto-generate a number instead.
          nullable: false
        deliveryProperties:
          type: object
          description: Details about the additional properties associated with the delivery.
          properties:
            isReturn:
              type: boolean
              description: A flag indicating whether the delivery is a return job. If `true`, the delivery is a return.
              nullable: false
            reasonForReturn:
              type: string
              description: This field specifies the reason for the return of a delivery. It will only be populated if the delivery is being returned.
              nullable: true
        metadata:
          type: object
          description: Key-value map of partner custom identifiers that were provided during delivery creation.
          nullable: true
      example:
        deliveryId: 0d6e0120-9523-45ab-a142-c9cc47b7767e
        requestId: 8a260fb7-6555-42e9-a4cb-9b64224dfac1
        orderNumber: 123456789
        vendorOrderId: '123456789'
        deliveryProperties:
          isReturn: false
          reasonForReturn: null
        metadata:
          platform: Simulator
          version: 1.9.6
          mode: test
    DaasDaaSDeliveryDetails:
      type: object
      description: Details about the items being delivered.
      properties:
        weightGrams:
          type: number
          format: double
          description: Total weight of the items being delivered, in grams.
          nullable: false
          minimum: 0
        preparationDuration:
          type: number
          format: int32
          description: |
            Number of minutes required to prepare the delivery. Must be between 5 and 60 minutes. Required for ASAP orders (when neither `targetCollectTime` nor `targetDeliverTime` is specified). Optional for scheduled orders (when either `targetCollectTime` or `targetDeliverTime` is provided).
          nullable: true
          minimum: 5
          maximum: 60
        hasAlcohol:
          type: boolean
          description: Whether the order contains alcohol or not. If not specified, the default is `false`.  If this is `true`, `ageRestriction` is required for the following markets [BE, BG, DK, IT, NL, PL, ES, CH].
          nullable: true
        ageRestriction:
          type: number
          format: int32
          description: Customer age required in order to hand over delivery.  Note -- this is required if `hasAlcohol` is `true`.
          minimum: 0
          nullable: true
        ageVerificationWithId:
          type: boolean
          description: Whether alcohol deliveries should use ID-scanning proof of delivery. If not specified, the default behaviour is `true`. This field is only supported when `hasAlcohol` is `true`.
          nullable: true
    DaasDaaSDeliveryOptions:
      type: object
      description: Details about the delivery options.
      properties:
        proofOfDelivery:
          description: Proof of delivery protection to be used for the request, such as PIN codes.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DaasDaaSProofOfDelivery'
        unreachablePreference:
          description: The courier's action when a customer cannot be reached. If not specified, the default is `DROP_OFF`. Note -- this is currently not supported in the following markets [BE, BG, DK, IT, NL, PL, ES, CH].
          nullable: true
          enum:
            - DROP_OFF
            - RETURN
        proofOfPickup:
          description: Proof of pickup protection to be used for the request, such as barcodes. Note -- this is currently not supported in the following markets [BE, BG, DK, IT, NL, PL, ES, CH].
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DaasDaaSProofOfPickup'
        vehiclePreference:
          description: |
            Optional settings to enforce specific vehicle types for the delivery, such as car-only deliveries. If not provided, the next available courier will be assigned regardless of vehicle type. **Note: Currently not supported in the following markets [BE, BG, DE, IT, NL, PL, ES, CH].**
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DaasDaaSVehiclePreference'
        dropoffAction:
          type: string
          description: Specify the preferred delivery drop-off method. `CONTACTLESS` instructs the courier to leave the order at the customer's door without direct contact. `MEET_AT_DOOR` instructs the courier to hand the order directly to the customer. If not specified, the system defaults to `MEET_AT_DOOR`.
          nullable: true
          enum:
            - CONTACTLESS
            - MEET_AT_DOOR
    DaasDaaSDeliveryRejectedResponse:
      type: object
      description: Delivery Rejected request.
      title: DeliveryRejected
      required:
        - message
        - requestId
      properties:
        message:
          type: string
          description: Rejection reason. Note -- Only available in the following markets [BE, BG, DK, IT, NL, PL, ES, CH].
          nullable: false
        requestId:
          type: string
          description: The request ID associated with the delivery.
          nullable: false
        metadata:
          type: object
          description: Key-value map of partner custom identifiers that were provided during delivery creation.
          nullable: true
      example:
        requestId: 4cd98e14-9902-4b13-a3c0-78004898af32
        message: Mandatory request parameter firstName is missing
        metadata:
          store_id: '2132546'
    DaasDaaSDeliveryRequest:
      type: object
      description: The delivery object.
      required:
        - requestId
      properties:
        requestId:
          type: string
          description: The ID of the request. This is generated from the [Estimate delivery](#tag/Delivery-as-a-Service/paths/~1delivery~1estimate/post) endpoint. The ID that was generated must be used within five minutes of a successful estimate, otherwise the ID will be considered expired. Once an ID has been used for a successful delivery creation, it cannot be reused thereafter.
          nullable: false
        specialInstructions:
          type: string
          description: Instructions about the delivery that the customer wants to submit.
          nullable: true
          maxLength: 255
        targetCollectTime:
          type: string
          description: Time in UTC when the partners wish to have the order collected from the restaurant. Required if target deliver time was not specified in the Estimate delivery request.
          format: date-time
          nullable: true
        tip:
          description: Tip paid to the courier for a delivery in cents
          nullable: true
          type: integer
          format: int32
          minimum: 0
          exclusiveMinimum: false
        orderValue:
          description: Total value of an order in cents.
          nullable: true
          type: integer
          format: int32
          minimum: 0
          exclusiveMinimum: false
        vendorOrderId:
          type: string
          description: Order ID supplied by the partner referencing the order within their systems. This will be mandatory in the following markets [BE, BG, DK, IT, NL, PL, ES, CH]. This should be a human-readable value as it will be displayed for the courier during the pickup process, and is strongly recommended not to be a UUID. Note, if the partner does not supply this value, JET will auto-generate a number instead.
          nullable: true
        paymentType:
          type: string
          description: Specify the preferred payment type for the delivery. Deliveries will either be PREPAID or COD (Cash on Delivery). If COD is chosen, please ensure that the price in the order value field includes all potential surcharges such as tax. **Note:** Cash on Delivery (COD) is currently supported only in the BG (Bulgaria) market.
          nullable: true
        metadata:
          type: object
          description: Key-value map of partner custom identifiers. These identifiers will be included in webhook notifications. Values cannot exceed 255 characters.
          nullable: true
      example:
        requestId: 9f84ce96-69e4-4122-8250-b17c0e92dd25
        specialInstructions: Double meat
        targetCollectTime: '2021-08-04T19:00:45.211Z'
        tip: 100
        orderValue: 2000
        vendorOrderId: '123456789'
        paymentType: PREPAID
        metadata:
          store_id: '2132546'
    DaasDaaSDeliveryResponse:
      type: object
      description: The estimated delivery.
      properties:
        requestId:
          type: string
          description: Unique Id used to identify the request.
          nullable: false
        collect:
          type: object
          description: Estimated date and time of order collection in UTC. Will only be returned if target deliver time was not specified.
          nullable: false
          properties:
            id:
              type: string
              description: The collect point Id.
              nullable: false
        delivery:
          type: object
          description: Delivery point used to identify the delivery address. Represents a customer, or any other delivery point.
          nullable: false
        targetDeliverTime:
          description: Time in UTC when the partners wish to have the order delivered to the customer.
          type: string
          format: date-time
        specialInstructions:
          description: Instructions about the delivery that the customer wants to submit.
          type: string
          nullable: true
          format: string
        tip:
          description: Tip paid to the courier for a delivery in cents
          nullable: true
          type: integer
          format: int32
          minimum: 0
          exclusiveMinimum: false
      example:
        requestId: 9f84ce96-69e4-4122-8250-b17c0e92dd25
        collect:
          id: efeb46ce-53eb-44cd-afba-ba59e7b84a57
        delivery:
          name: Delivery Point
          emailAddress: delivery.point@email.com
          phoneNumber: '+12049433578'
          address: 140 Bannatyne Ave
          city: Winnipeg
          province: Manitoba
          postalCode: R3B 3C5
        targetDeliverTime: '2021-12-20T15:25:33.339Z'
        specialInstructions: Double meat
        tip: 100
    DaasDaaSDeliveryStatusResponse:
      type: object
      description: The status of a delivery.
      properties:
        status:
          enum:
            - UNASSIGNED
            - ASSIGNED
            - IN_TRANSIT_TO_COLLECT
            - ARRIVED_TO_COLLECT
            - COLLECTED
            - IN_TRANSIT_TO_DELIVER
            - ARRIVED_TO_DELIVER
            - DELIVERED
            - RETURN_INITIATED
            - UNKNOWN
            - CANCELLED
            - CANCELLATION_FAILURE
          type: string
          description: The current status of a delivery.
          nullable: false
        orderId:
          type: string
          description: The order Id associated with the delivery.
          nullable: false
        vendorOrderId:
          type: string
          description: Order ID supplied by the partner on delivery creation referencing the order within their systems.  If this was not specified by the partner this will be an auto-generated number by JET.
          nullable: false
        orderTrackerURL:
          type: string
          description: The tracking URL for the delivery. Note -- This is only available in the CA market, otherwise the value will be `Not available`.
          nullable: false
        timestamp:
          description: The timestamp in UTC.
          type: string
          format: date-time
        metadata:
          type: object
          description: Key-value map of partner custom identifiers that were provided during delivery creation.
          nullable: true
      example:
        status: DELIVERED
        orderId: efeb46ce-53eb-44cd-afba-ba59e7b84a89
        vendorOrderId: '123456789'
        orderTrackerURL: http://www.skipthedishes.com/order-tracker/efeb46ce-53eb-44cd-afba-ba59e7b84a89
        timestamp: '2021-12-20T15:25:33.339Z'
        deliveryId: 0d6e0120-9523-45ab-a142-c9cc47b7767e
        deliveryProperties:
          isReturn: false
        metadata:
          store_id: '2132546'
    DaasDaaSEstimateRequest:
      type: object
      description: The estimate delivery object.
      required:
        - collect
        - delivery
      properties:
        collect:
          description: Collect point used to identify the pick-up address. Represents a restaurant, a grocery store, or any other collect point. The available collect points can be retrieved using the [Get Collect Points](#tag/Delivery-as-a-Service/paths/~1delivery~1collect-points/get) endpoint.
          nullable: false
          required:
            - id
          type: object
          properties:
            id:
              type: string
              description: The collect point Id.
              nullable: false
        delivery:
          description: Delivery point used to identify the delivery address. Represents a customer, or any other delivery point.
          nullable: false
          allOf:
            - $ref: '#/components/schemas/DaasDaaSDeliveryAddress'
        deliveryDetails:
          description: Optional information about the items included in this delivery.  Note -- this will be required for the following markets [BE, BG, DK, IT, NL, PL, ES, CH].
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DaasDaaSDeliveryDetails'
        deliveryOptions:
          description: Optional settings pertaining to the delivery preferences.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DaasDaaSDeliveryOptions'
        targetDeliverTime:
          description: |
            Supply this parameter to set up an advance order. It is the time in UTC for which the order should be delivered to the customer. This value must be between 1 hour to 5 days in advance. You may only specify either the `targetCollectTime` or `targetDeliverTime` with an advance order request. **Note: Currently not supported for the following markets [BE, BG, DK, IT, NL, PL, ES, CH]**
          nullable: true
          type: string
          format: date-time
        targetCollectTime:
          description: |
            Supply this parameter to set up an advance order. It is the time in UTC for which the courier should arrive to collect the order. This value must be between 1 hour to 5 days in advance. You may only specify either the `targetCollectTime` or `targetDeliverTime` with an advance order request. **Note: Currently not supported for the following markets [BE, BG, DK, IT, NL, PL, ES, CH]**
          nullable: true
          type: string
          format: date-time
        hasAlcohol:
          description: This previous `hasAlcohol` flag can no longer be used.  If `true`, an error will be returned and the estimate will be discarded.  Use the `deliveryDetails.hasAlcohol` flag instead for orders with alcohol.
          nullable: true
          deprecated: true
          type: boolean
        itemList:
          description: List of item to be included in the delivery.  This is required if the `proofOfPickup` flag is present as a part of `deliveryOptions`.
          nullable: true
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/DaasDaaSItem'
      example:
        collect:
          id: efeb46ce-53eb-44cd-afba-ba59e7b84a57
        delivery:
          name: Delivery Point
          emailAddress: delivery.point@email.com
          phoneNumber: '+12049433578'
          address: 140 Bannatyne Ave
          city: Winnipeg
          province: Manitoba
          postalCode: R3B 3C5
          geolocation:
            coordinates:
              - -37.8156
              - 144.96292
            type: point
        deliveryDetails:
          weightGrams: 100
          preparationDuration: 30
          hasAlcohol: true
          ageRestriction: 18
          ageVerificationWithId: false
        deliveryOptions:
          proofOfDelivery:
            pinCode:
              type: DSP_GENERATED
          unreachablePreference: DROP_OFF
          proofOfPickup:
            barcode:
              type: PARTNER_PROVIDED
          vehiclePreference:
            carOnly: true
          dropoffAction: MEET_AT_DOOR
        targetDeliverTime: '2021-12-20T15:25:33.339Z'
        itemList:
          - itemId: '1111'
            name: Item1
            quantity: 4
            weight: 200
            barcode:
              type: UPC
              value: '3765532'
            price: 1000
            category: FOOD
          - itemId: '1141'
            name: Item4
            quantity: 3
            weight: 1000
            barcode:
              type: UPC
              value: '376665532'
            price: 1200
            category: GROCERY
    DaasDaaSEstimateResponse:
      type: object
      description: The estimated delivery.
      properties:
        requestId:
          type: string
          description: Unique Id used to identify the request.
          nullable: false
        dynamicDeliveryFee:
          type: integer
          description: The cost of the estimated delivery in minor currency units.
          format: int32
          nullable: false
        dynamicDeliveryFeeRule:
          type: string
          description: The rule triggered based on the distance of the delivery, allowing a fee to be associated with the delivery.
          nullable: false
        estimatedEarliestCollectTime:
          type: string
          description: Estimated date and time of order collection in UTC. Will only be returned if `targetCollectTime` or `targetDeliverTime` was not specified (only for asap requests).
          format: date-time
          nullable: true
        estimatedEarliestDeliverTime:
          type: string
          description: Estimated date and time of order delivery in UTC. Will only be returned if `targetCollectTime` or `targetDeliverTime` was not specified (only for asap requests).
          format: date-time
          nullable: true
        targetCollectTime:
          type: string
          description: Targeted date and time of order collection in UTC if `targetCollectTime` or `targetDeliverTime` was specified (only for advance requests).
          format: date-time
          nullable: true
        targetDeliverTime:
          type: string
          description: Targeted date and time of order delivery in UTC if `targetCollectTime` or `targetDeliverTime` was specified (only for advance requests).
          format: date-time
          nullable: true
      example:
        requestId: 9f84ce96-69e4-4122-8250-b17c0e92dd25
        dynamicDeliveryFee: 350
        dynamicDeliveryFeeRule: 5MinuteDelivery
        estimatedEarliestCollectTime: '2021-12-20T15:25:33.339Z'
        estimatedEarliestDeliverTime: '2021-12-20T15:45:33.339Z'
    DaasDaaSItem:
      type: object
      description: Details about an item being delivered.
      properties:
        itemId:
          type: string
          format: varchar40
          description: Identification code of the item.  This must be unique within a delivery.
          nullable: false
          minimum: 1
        name:
          type: string
          format: varchar100
          description: Name of the item.
          nullable: false
          minimum: 1
        quantity:
          type: number
          format: int32
          description: Number of this item to be included in the delivery.
          nullable: false
          minimum: 1
        weight:
          type: number
          format: int32
          description: Weight of a single item in grams.
          nullable: true
          minimum: 0
        barcode:
          description: Barcode of the item.  If the `deliveryOptions.proofOfPickup` type for this delivery is `barcode`, this field is required.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DaasDaasItemBarcode'
        price:
          type: integer
          format: int32
          description: Price of the item in the smallest currency unit (e.g. cents).
          nullable: true
          minimum: 0
          maximum: 1000000
          exclusiveMinimum: false
          exclusiveMaximum: false
        category:
          type: string
          description: Category of the item. Defaults to FOOD if not provided.
          nullable: true
          enum:
            - FOOD
            - GROCERY
    DaasDaaSNotificationConfigRequest:
      type: object
      description: The notification config object.
      required:
        - email
        - endpoint
        - secret
        - type
      properties:
        email:
          type: string
          description: Email of the partner to contact in case there are any issues with the notifications.
          nullable: false
        endpoint:
          type: string
          description: Partner's HTTPS endpoint to receive events and notifications. Make sure the endpoint is properly prefixed as we only support HTTPS (secure) URLs.
          nullable: false
        secret:
          type: string
          description: The token or password.
          nullable: false
        type:
          type: string
          description: Type of configuration.
          enum:
            - BASIC
            - TOKEN
          nullable: false
        username:
          type: string
          description: The username of the partner's credentials to store. Only required for type BASIC.
          nullable: true
        subscriptions:
          type: array
          description: List of notification events to subscribe to. The partner will be subscribed to all events if this parameter is not supplied. On the other hand, if an empty list is supplied, you will be unsubscribed from all events.
          items:
            type: string
            enum:
              - ALL
              - COURIERJOBSTATUS
              - CANCELJOBSTATUS
              - COURIERCOLLECTIONTIME
              - COURIERLOCATION
              - DELIVERYREJECTED
              - COURIERDELIVERYTIME
              - PROOFOFDELIVERY
              - PROOFOFDELIVERY_PICTURE
          nullable: true
      example:
        email: email@partner.com
        endpoint: endpoint-partner.ca/webhook
        secret: partner-password
        type: BASIC
        username: partner-username
        subscriptions:
          - COURIERJOBSTATUS
          - CANCELJOBSTATUS
    DaasDaaSNotificationConfigResponse:
      type: object
      description: The notification config object.
      properties:
        email:
          type: string
          description: Email of the partner to contact in case there are any issues with the notifications.
          nullable: false
        endpoint:
          type: string
          description: Partner's endpoint for events and notifications to be sent to.
          nullable: false
        type:
          type: string
          description: Type of configuration.
          nullable: false
        username:
          type: string
          description: The username of the partner's credentials to store. Only required for type BASIC.
          nullable: true
        subscriptions:
          type: array
          description: List of notification events partner is subscribed to.
          nullable: true
      example:
        email: email@partner.com
        endpoint: endpoint-partner.ca/webhook
        type: BASIC
        username: partner-username
        subscriptions:
          - CANCELJOBSTATUS
    DaasDaaSNotificationConfigWebhookRequest:
      type: object
      description: The webhook notification config object.
      required:
        - id
        - type
        - timestamp
        - data
      properties:
        id:
          type: string
          description: Event UUID
          nullable: false
        type:
          type: string
          description: Event Type
          nullable: false
          enum:
            - COURIERJOBSTATUS
            - CANCELJOBSTATUS
            - COURIERCOLLECTIONTIME
            - DELIVERYCREATED
            - COURIERLOCATION
            - DELIVERYREJECTED
            - COURIERDELIVERYTIME
            - PROOFOFDELIVERY
            - PROOFOFDELIVERY_PICTURE
        timestamp:
          description: The timestamp in UTC.
          type: string
          nullable: false
          format: date-time
        data:
          nullable: false
          anyOf:
            - $ref: '#/components/schemas/DaasDaaSDelcoNotification'
            - $ref: '#/components/schemas/DaasDaaSScooberNotification'
          description: |
            The following data is dispatched to the partner through the webhook endpoint.  Please note that `CourierLocation` is not presently available for the following markets [BE, BG, DK, IT, NL, PL, ES, CH].
      example:
        id: ee70cb3c-d7fa-11ec-9d64-0242ac120002
        type: COURIERJOBSTATUS
        timestamp: '2021-12-20T15:25:33.339Z'
        data:
          status: DELIVERED
          requestId: e0d58b3a-f547-4013-a4e5-728263040f33
          orderId: efeb46ce-53eb-44cd-afba-ba59e7b84a89
          orderTrackerURL: http://www.skipthedishes.com/order-tracker/efeb46ce-53eb-44cd-afba-ba59e7b84a89
          courier:
            name: Example Courier
    DaasDaaSPictureProofOfDeliveryResponse:
      type: object
      description: Picture As A Proof Of Delivery.
      title: PictureAsProofOfDelivery
      required:
        - deliveryId
        - requestId
        - vendorOrderId
        - urls
      properties:
        deliveryId:
          type: string
          description: The ID associated with the delivery in the logistics network.  In cases where there are multiple deliveries for a DaaS request, this ID will uniquely identify the individual delivery.
          nullable: false
        requestId:
          type: string
          description: The request ID associated with the delivery.
          nullable: false
        vendorOrderId:
          type: string
          description: Order ID supplied by the partner on delivery creation referencing the order within their systems.  If this was not specified by the partner this will be an auto-generated number by JET.
          nullable: false
        urls:
          type: array
          description: The list of temporary links to the images of a delivered order, valid for five minutes.
          items:
            type: string
          nullable: false
        metadata:
          type: object
          description: Key-value map of partner custom identifiers that were provided during delivery creation.
          nullable: true
      example:
        requestId: 54352cd8-1c31-4480-9df1-398563a73699
        vendorOrderId: '123456789'
        deliveryId: 0d6e0120-9523-45ab-a142-c9cc47b7767e
        urls:
          - https://bucket.s3.amazonaws.com/454-d3a7-4e46?X-Amz-Security-Token=IQoJb3Z2&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20250228T233313Z&X-Amz-SignedHeaders=host&X-Amz-Credential=ASIASL3FNW%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Expires=300&X-Amz-Signature=8609e0e3ae69b
        metadata:
          store_id: '2132546'
    DaasDaaSPinCode:
      type: object
      description: Details about the type of PIN code.
      properties:
        type:
          description: Type of PIN code provider. Currently, only delivery service provider generated PIN code is supported.
          nullable: false
          enum:
            - DSP_GENERATED
    DaasDaaSProofOfDelivery:
      type: object
      description: Details about the PIN code.
      properties:
        pinCode:
          description: Protect this delivery with a PIN code, which the customer must provide to the courier upon delivery.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DaasDaaSPinCode'
    DaasDaaSProofOfDeliveryResponse:
      type: object
      description: Proof Of Delivery.
      title: ProofOfDelivery
      required:
        - deliveryId
        - requestId
        - pinCode
        - status
      properties:
        deliveryId:
          type: string
          description: The ID associated with the delivery in the logistics network.  In cases where there are multiple deliveries for a DaaS request, this ID will uniquely identify the individual delivery.
          nullable: false
        requestId:
          type: string
          description: The request ID associated with the delivery.
          nullable: false
        vendorOrderId:
          type: string
          description: Order ID supplied by the partner on delivery creation referencing the order within their systems. If this was not specified by the partner this will be an auto-generated number by JET.
          nullable: false
        pinCode:
          type: string
          description: The PIN code generated for proof of delivery.
          nullable: true
        status:
          enum:
            - CREATED
            - VALID
            - INVALID
          type: string
          description: The status of the PIN code is defined as follows`:` CREATED indicates that a PIN code has been generated, VALID indicates that the PIN code has been successfully validated, and INVALID indicates that the validation of the PIN code has failed.
          nullable: false
        metadata:
          type: object
          description: Key-value map of partner custom identifiers that were provided during delivery creation.
          nullable: true
      example:
        requestId: 54352cd8-1c31-4480-9df1-398563a73699
        deliveryId: 0d6e0120-9523-45ab-a142-c9cc47b7767e
        vendorOrderId: '123456789'
        pinCode: '1234'
        status: CREATED
        metadata:
          store_id: '2132546'
    DaasDaaSProofOfPickup:
      type: object
      description: Details about the Barcode.
      properties:
        barcode:
          description: Use barcode scanning as a proof of pickup for this delivery.  If this option is selected, barcode values must be provided in the `itemList`.  Note -- this is feature currently not supported in the following markets [BE, BG, DK, IT, NL, PL, ES, CH].
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DaasDaaSBarcode'
    DaasDaaSScooberNotification:
      type: object
      description: All Scoober Notifications.
      title: BE, BG, DK, IT, NL, PL, ES, CH market supported notifications
      anyOf:
        - $ref: '#/components/schemas/DaasDaaSDeliveryCreatedResponse'
        - $ref: '#/components/schemas/DaasScooberCourierResponse'
        - $ref: '#/components/schemas/DaasDaaSCourierCollectionTimeResponse'
        - $ref: '#/components/schemas/DaasDaaSCancelJobStatusResponse'
        - $ref: '#/components/schemas/DaasDaaSDeliveryRejectedResponse'
        - $ref: '#/components/schemas/DaasDaaSCourierDeliveryTimeResponse'
    DaasDaaSSimulateDeliveryResponse:
      type: object
      description: The simulated delivery response.
      properties:
        requestId:
          type: string
          description: Unique Id used to identify the request.
          nullable: false
        message:
          type: string
          description: The message related to the processing of the delivery simulation request.
          nullable: false
      example:
        requestId: 9f84ce96-69e4-4122-8250-b17c0e92dd25
        message: The delivery simulation request is being processed right now.
    DaasDaaSUpdateNotificationConfigRequest:
      type: object
      description: The update notification config object.
      properties:
        email:
          type: string
          description: Email of the partner to contact in case there are any issues with the notifications.
          nullable: true
        endpoint:
          type: string
          description: Partner's HTTPS endpoint to receive events and notifications. Make sure the endpoint is properly prefixed as we only support HTTPS (secure) URLs.
          nullable: true
        secret:
          type: string
          description: The token or password.
          nullable: true
        type:
          type: string
          description: Type of configuration.
          enum:
            - BASIC
            - TOKEN
          nullable: true
        username:
          type: string
          description: The username of the partner's credentials to store. Only required for type BASIC.
          nullable: true
        subscriptions:
          type: array
          description: List of notification events to subscribe to.
          items:
            type: string
            enum:
              - ALL
              - COURIERJOBSTATUS
              - CANCELJOBSTATUS
              - COURIERCOLLECTIONTIME
              - COURIERLOCATION
              - DELIVERYREJECTED
              - COURIERDELIVERYTIME
              - PROOFOFDELIVERY
              - PROOFOFDELIVERY_PICTURE
          nullable: true
      example:
        subscriptions:
          - COURIERJOBSTATUS
          - CANCELJOBSTATUS
    DaasDaaSVehiclePreference:
      type: object
      properties:
        carOnly:
          description: |
            If `true`, the delivery will be assigned only to couriers using cars. If `false`, the next available courier will be assigned regardless of vehicle type, based on the partner's preferences.
          type: boolean
          nullable: false
          default: false
    DaasDaasConnectTokenRequest:
      required:
        - grant_type
      properties:
        grant_type:
          description: The OAuth2 grant type. This must be set to "client_credentials"
          enum:
            - client_credentials
          type: string
    DaasDaasErrorException:
      description: A HTTP 400 error response
      properties:
        error:
          description: Type of Exception.
          type: string
        message:
          description: The reason that an error was thrown.
          type: string
        type:
          description: Type of the error
          type: string
      type: object
      example:
        error: GeocodeAddressException
        message: 'Delivery not available: The customer address is outside of a deliverable region.'
        type: GEOCODING_ERROR
    DaasDaasForbiddenException:
      description: A HTTP 403 error response
      properties:
        message:
          description: The reason that an error was thrown.
          type: string
      type: object
      example:
        message: User is not authorized to access this resource with an explicit deny
    DaasDaasInternalServerErrorException:
      description: A HTTP 500 error response
      properties:
        error:
          description: Type of Exception.
          type: string
        message:
          description: The reason that an error was thrown.
          type: string
      type: object
      example:
        error: OrderTrackerException
        message: 'Order tracker: The request id was not found.'
    DaasDaasItemBarcode:
      type: object
      description: Barcode of a DaaS Item
      properties:
        type:
          description: Type of barcode for the item.
          nullable: false
          enum:
            - UPC
            - CODE_128
        value:
          type: string
          format: varchar128
          description: Barcode value.
          nullable: false
    DaasDaasKeycloakAuthResponse:
      type: object
      description: The authentication response.
      properties:
        access_token:
          type: string
          description: JWT used to authenticate to DAAS endpoints.
          nullable: false
        token_type:
          type: string
          description: The type of the token returned.
          nullable: false
        expires_in:
          type: integer
          description: The number of seconds the token expires in.
          nullable: false
      example:
        access_token: >-
          eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJwbThEQ2tGRXZlcmpZYS1JQlJUdExZSDgxdUJzaTRLbEVrMlhPZlE5VHFjIn0.eyJleHAiOjE2MzA1Mzc1MTMsImlhdCI6MTYzMDUzNzIxMywianRpIjoiNWY1ODA5M2QtNzBiYy00MmQwLTkyZmQtZDI1YTM0ZGZiZmZlIiwiaXNzIjoiaHR0cHM6Ly9hcGktc3RhZ2luZy5za2lwdGhlZGlzaGVzLmNvbS9hdXRoL3JlYWxtcy9kYWFzIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjViMDI0YzM4LWI4OTUtNDQ0Ni1hMjQ0LTJmMDU1MDFjYWZlZiIsInR5cCI6IkJlYXJlciIsImF6cCI6InNtb290aC1hcHAiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIkRBQVMtUkVBRCIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJEQUFTLVdSSVRFIiwiZGVmYXVsdC1yb2xlcy1kYWFzIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJwcm9maWxlIGVtYWlsIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJjbGllbnRJZCI6InNtb290aC1hcHAiLCJjbGllbnRIb3N0IjoiOTkuNzkuMTUwLjE1MiIsInBhcnRuZXJpZCI6IjljYzc3ODY1LWM2NGQtNGJkNi05YzQ0LTllMGJlODMyMjAzNiIsInByZWZlcnJlZF91c2VybmFtZSI6InNlcnZpY2UtYWNjb3VudC1zbW9vdGgtYXBwIiwiY2xpZW50QWRkcmVzcyI6Ijk5Ljc5LjE1MC4xNTIifQ.Fp6YL648fSfrTje-uPKjdIIqk_hYAniCMLlQqMTuUSDohQaLt1ew_ZBbN_ET35k9K_BsSN1PHI8C1M2CHqkKoQ36cK937elkzbDik_V6f9OD_w8aWQ95dyliIQFHsk2AvfACaQNoCaZhY_kexby0v7frjuIBjMTriegeSbpwDmcRpFL0pkwQDDpdUNA28iYDRws41dFUf3wkH4x3EIMMDKKGAbmqDMCrOBJ18FyFXQ1GfULc-fR7nEP_NzY6YxO-Qwct35N_4g8I-HTIXvgGBLRouKB2mui4t8G2F7E_d6lITSSMGYxO8n7W6gs8yNg5tnED3Kv6tdhwJmDuuT30JA
        token_type: Bearer
        expires_in: 300
    DaasDaasSimulateDeliveryRequest:
      type: object
      description: Simulate delivery
      required:
        - requestId
      properties:
        requestId:
          type: string
          description: The ID of the request. This is generated from the [Estimate delivery](#tag/Delivery-as-a-Service/paths/~1delivery~1estimate/post) endpoint.
          nullable: false
        deliveryStep:
          description: The step until which the delivery should be simulated. This is an optional field. If not provided, the delivery will be simulated until the DELIVERED step. If a delivery is simulated for any step before DELIVERED, it can be simulated again for any subsequent step; the simulation will then resume from the point where the previous simulation for that request ended.
          nullable: true
          type: string
          enum:
            - ASSIGNED
            - IN_TRANSIT_TO_COLLECT
            - ARRIVED_TO_COLLECT
            - COLLECTED
            - IN_TRANSIT_TO_DELIVER
            - ARRIVED_TO_DELIVER
            - DELIVERED
            - CANCELLED
            - RETURN_INITIATED
            - IN_TRANSIT_TO_RETURN
            - RETURNED
          default: DELIVERED
        stepWaitDuration:
          description: The delay between each delivery step in milliseconds.
          nullable: true
          type: integer
          format: int32
      example:
        requestId: 9f84ce96-69e4-4122-8250-b17c0e92dd25
        stepWaitDuration: 10000
    DaasDaasUnauthorizedException:
      description: A HTTP 401 error response
      properties:
        error:
          description: Type of Exception.
          type: string
        message:
          description: The reason that an error was thrown.
          type: string
      type: object
      example:
        message: Unauthorized
    DaasScooberCourierResponse:
      type: object
      description: The status of a delivery.
      title: CourierJobStatus
      required:
        - status
        - orderId
        - requestId
        - vendorOrderId
        - orderTrackerURL
        - courier
      properties:
        status:
          enum:
            - ASSIGNED
            - ARRIVED_TO_COLLECT
            - COLLECTED
            - ARRIVED_TO_DELIVER
            - DELIVERED
            - CANCELLED
          type: string
          description: |
            The current status of a delivery. Status progression:

            - `ASSIGNED`: A courier has accepted the delivery and is confirmed. The courier will proceed to your collection point.

            - `ARRIVED_TO_COLLECT`: The courier has arrived at your collection point and is ready to pick up the order.

            - `COLLECTED`: The courier has picked up the order from the pickup location.

            - `ARRIVED_TO_DELIVER`: The courier has arrived at the customer's delivery location.

            - `DELIVERED`: The order has been successfully delivered to the customer.

            - `CANCELLED`: The delivery has been cancelled successfully.
          nullable: false
        orderId:
          type: string
          description: The order Id associated with the delivery.
          nullable: false
        requestId:
          type: string
          description: The request ID associated with the delivery.
          nullable: false
        vendorOrderId:
          type: string
          description: Order ID supplied by the partner on delivery creation referencing the order within their systems.
          nullable: false
        orderTrackerURL:
          type: string
          description: The tracking URL for the delivery.  Note -- This is only available for the following markets [CA, BE, BG, DK, IT, NL, PL, ES, CH], otherwise the value will be `Not available`.
          nullable: false
        courier:
          type: object
          description: Details about the courier associated with the delivery.
          required:
            - name
          properties:
            id:
              type: string
              description: Id of the courier.  Note -- This is not currently available for the following markets and will be blank [BE, BG, DK, IT, NL, PL, ES, CH].
              nullable: false
            name:
              type: string
              description: Name of the courier.  Note -- This is not currently available for the following markets and will be blank [BE, BG, DK, IT, NL, PL, ES, CH].
              nullable: false
      example:
        status: DELIVERED
        orderId: efeb46ce-53eb-44cd-afba-ba59e7b84a89
        requestId: e0d58b3a-f547-4013-a4e5-728263040f33
        vendorOrderId: '123456789'
        orderTrackerURL: http://www.skipthedishes.com/order-tracker/efeb46ce-53eb-44cd-afba-ba59e7b84a89
        courier:
          id: 17cc81ef-d246-460a-a5d2-e4db506c17d7
          name: Example Courier
    DeliveryApiBulkDeliveryDetailsList:
      items:
        $ref: '#/components/schemas/DeliveryApiBulkDeliveryDetails'
      type: array
    DeliveryApiBulkDeliveryDetails:
      required:
        - DriverId
        - TimeStampWithUtcOffset
      properties:
        EtaAtDeliveryAddress:
          format: date-time
          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'
          type: string
        TimeStampWithUtcOffset:
          description: This should represent the bulk delivery updated timestamp.
          format: date-time
          type: string
        OrderId:
          description: Just Eat order identifier
          type: string
        Location:
          $ref: '#/components/schemas/LogisticsLocation'
        EtaAtRestaurant:
          format: date-time
          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'
          type: string
        DriverId:
          description: The driver identifier
          example: '123456'
          type: string
      type: object
    DeliveryApiDeliveryDetails:
      type: object
      required:
        - DriverId
        - TimeStampWithUtcOffset
      properties:
        DriverId:
          description: The driver identifier
          example: '123456'
          type: string
        Location:
          $ref: '#/components/schemas/LogisticsLocation'
        TimeStampWithUtcOffset:
          description: This should represent the delivery detailed updated timestamp.
          format: date-time
          type: string
      example:
        TimeStampWithUtcOffset: '2018-03-10T14:45:28.7537228+00:00'
        DriverId: fae456
    DeliveryApiDeliveryDriverAssignedDetails:
      required:
        - VehicleDetails
        - DriverId
        - DriverName
        - TimeStampWithUtcOffset
      properties:
        DriverId:
          description: The driver identifier
          example: '123456'
          type: string
        EtaAtDeliveryAddress:
          format: date-time
          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'
          type: string
        TimeStampWithUtcOffset:
          format: date-time
          description: This should represent the driver assigned timestamp.
          example: '2020-12-25T15:45:28.7537228+00:00'
          type: string
        DriverContactNumber:
          description: This should represent the driver's contact number.
          example: '+447123456789'
          type: string
        VehicleDetails:
          $ref: '#/components/schemas/DeliveryApiVehicleDetails'
        DriverName:
          description: |-
            This should represent the driver's name.

            **(Optional)** If `VehicleDetails` provided
          example: David
          type: string
        Location:
          $ref: '#/components/schemas/LogisticsLocation'
        EtaAtRestaurant:
          format: date-time
          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'
          type: string
      type: object
    DeliveryApiDeliveryDriverDetailsWithEta:
      type: object
      required:
        - DriverId
        - TimeStampWithUtcOffset
      properties:
        Location:
          $ref: '#/components/schemas/LogisticsLocation'
        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
        TimeStampWithUtcOffset:
          description: This should represent the Eta calculated timestamp.
          format: date-time
          type: string
        DriverId:
          description: The driver identifier
          example: '123456'
          type: string
      example:
        Location:
          Speed: 8.68
          Latitude: 51.51641
          Heading: 357.10382
          Accuracy: 12.814
          Longitude: -0.103198
        EtaAtDeliveryAddress: '2018-03-10T15:45:28.7537228+00:00'
        TimeStampWithUtcOffset: '2018-03-10T14:45:28.7537228+00:00'
        DriverId: fe157a
    DeliveryApiDeliveryDriverLocation:
      required:
        - DriverId
        - TimeStampWithUtcOffset
      properties:
        EtaAtRestaurant:
          format: date-time
          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'
          type: string
        Location:
          example:
            Speed: 8.68
            Latitude: 51.51641
            Heading: 357.10382
            Accuracy: 12.814
            Longitude: -0.103198
          $ref: '#/components/schemas/LogisticsLocation'
        EtaAtDeliveryAddress:
          format: date-time
          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'
          type: string
        TimeStampWithUtcOffset:
          format: date-time
          description: This should represent the location updated timestamp.
          example: '2020-12-25T15:45:28.7537228+00:00'
          type: string
        DriverId:
          description: The driver identifier
          example: '123456'
          type: string
      type: object
    DeliveryApiDeliveryDriverUnassignedDetails:
      required:
        - DriverId
        - TimeStampWithUtcOffset
      properties:
        EtaAtDeliveryAddress:
          format: date-time
          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'
          type: string
        'Location:':
          description: This should represent the driver's geographic location (longitude and latitude)
          $ref: '#/components/schemas/LogisticsLocation'
        TimeStampWithUtcOffset:
          format: date-time
          description: This should represent the driver unassigned timestamp.
          example: '2020-12-25T15:30:28.7537228+00:00'
          type: string
        DriverContactNumber:
          description: This should represent the driver's contact number.
          example: '+447123456789'
          type: string
        UnassignedBy:
          description: This should represent the actor who triggered unassignment.
          example: operation
          type: string
        DriverId:
          description: The driver identifier
          example: '123456'
          type: string
        DriverName:
          description: This should represent the driver's name.
          example: David McDriverson
          type: string
        Reason:
          description: This should represent the delivery partner's reason for unassigning themselves from the order.
          example: package_not_ready
          type: string
        Comment:
          description: This should represent the comment on the unassignment.
          example: Order was not ready
          type: string
        EtaAtRestaurant:
          format: date-time
          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'
          type: string
      type: object
    DeliveryApiDeliveryRestaurantslist:
      properties:
        restaurants:
          items:
            format: int32
            type: number
          description: A list of Just Eat restaurant ids served by the pool.
          example:
            - 10202
            - 10203
          type: array
      type: object
    DeliveryApiOnItsWayDetails:
      required:
        - DriverId
        - TimeStampWithUtcOffset
      properties:
        DriverId:
          description: The driver identifier
          example: '123456'
          type: string
        Location:
          $ref: '#/components/schemas/LogisticsLocation'
        EstimatedArrivalTime:
          format: date-time
          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'
          type: string
        TimeStampWithUtcOffset:
          format: date-time
          description: This should represent the driver on its ways timestamp.
          example: '2020-12-25T15:30:28.7537228+00:00'
          type: string
      type: object
    DeliveryApiVehicleDetails:
      description: |-
        Details of a vehicle

        **(Optional)** If `DriverName` provided
      properties:
        Vehicle:
          example: Motorbike
          type: string
          description: Details of the vehicle
        VehicleRegistration:
          example: JU51 SAY
          type: string
          description: Registration details of the vehicle
      type: object
    DeliveryWebhooksConnectorderList:
      items:
        $ref: '#/components/schemas/DeliveryWebhooksConnectorder'
      type: array
    DeliveryWebhooksConnectorder:
      properties:
        OrderId:
          type: string
          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
        CustomerInfo:
          properties:
            Name:
              type: string
              description: The name of the Customer.
              example: Just Eat
            Email:
              type: string
              description: Email address for the Customer.
              example: contact@just-eat.com
            Id:
              type: string
              description: The JUST EAT Customer Id.
              example: '123456'
            LocationAccuracyDescription:
              type: string
              description: Location accuracy description
              example: ROOFTOP
            Address:
              type: string
              description: Customer Address. Note that Address is comma delimited.
              example: Fleet Place House, 2 Fleet Place, London
            Longitude:
              type: number
              format: double
              description: Customer address longitude. Will be 0 if not provided.
              example: -0.12624
            Latitude:
              type: number
              format: double
              description: Customer address latitude. Will be 0 if not provided.
              example: 51.50015
            PreviousRestuarantOrderCount:
              format: int32
              description: The number of Orders the Customer has placed at this Restaurant via JUST EAT
              type: number
            TimeZone:
              type: string
              description: Customer timezone, e.g. 'Central European Standard Time'.
              example: GMT Standard Time
            Postcode:
              type: string
              description: The post code where Customer is located.
              example: EC4M 7RF
            PhoneNumber:
              type: string
              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: '18727863'
            LocationAccuracyInMeters:
              type: number
              format: double
              description: Accuracy of the location data in meters.
              example: 0
            LocationSource:
              type: string
              description: Provider of the location data.
              example: GeodataGeocoder
            PhoneMaskingCode:
              type: string
              description: Code to use when calling customer phone masked number (`DisplayPhoneNumber`) about this order. Null if phone masking not enabled
              example: '444333222'
            DisplayPhoneNumber:
              type: string
              description: The customer's masked phone number.
              example: (01) 872 7863
            City:
              type: string
              description: The name of the city where the Customer is located.
              example: London
          description: Customer data
          type: object
        Id:
          deprecated: true
          type: string
          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'
        IsAMiniFistPumpOrder:
          deprecated: true
          description: Legacy Promotion - Ignore.
          type: boolean
        PaymentInfo:
          properties:
            PaymentLines:
              items:
                properties:
                  Value:
                    type: number
                    format: double
                    description: The value of the payment.
                    example: 22.05
                  CardFee:
                    type: number
                    format: double
                    description: Was there a fee for the payment mechanism.
                    example: 0.5
                  Type:
                    enum:
                      - Card
                    description: How was the order Paid.
                    type: string
                description: Payment line data
                type: object
              description: How the Customer has paid for the Order.
              type: array
            Total:
              type: number
              format: double
              description: The total order value.
              example: 22.55
            TotalComplementary:
              type: number
              format: double
              description: Order amount covered by JUST EAT.
              example: 0
            CashOnDelivery:
              description: Is the Customer paying on Delivery.
              type: boolean
            PaidDate:
              format: date-time
              description: DateTime when the Order was Paid (excludes UTC offset).
              type: string
            DriverTipValue:
              type: number
              format: double
              description: The value of the tip given to the Driver.
              example: 0
          description: Payment data
          type: object
        Order:
          properties:
            InitialDueDate:
              deprecated: true
              format: date-time
              description: Ignore - use `InitialDueDateWithUtcOffset`.
              type: string
            PlacedDate:
              format: date-time
              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.
              type: string
            DueDateWithUtcOffset:
              format: date-time
              description: The DateTime when the Customer has been told they will receive the Order.
              type: string
            ServiceType:
              enum:
                - Collection
                - Delivery
              description: Type of the Order.
              type: string
            RdsPickupTimeWithUtcOffset:
              format: date-time
              description: When the Delivery Partner needs to be at the Restaurant to pickup the Order.
              type: string
            Notes:
              properties:
                Courier:
                  properties:
                    Note:
                      type: string
                      description: Notes from the customer to the courier
                      example: Please ring the top bell
                Kitchen:
                  properties:
                    Note:
                      type: string
                      description: Notes from the customer to the kitchen
                      example: As much mayonnaise as you can fit!
                Order:
                  properties:
                    Note:
                      type: string
                      description: General notes from the customer
            NoteToRestaurant:
              type: string
              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. Ignore - use `Notes`.
              example: Contact-free delivery
              deprecated: true
            DueDate:
              deprecated: true
              format: date-time
              description: Ignore - use `DueDateWithUtcOffset`.
              type: string
            PickupNoticePeriod:
              type: string
              format: timespan
              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'
            InitialDueDateWithUtcOffset:
              format: date-time
              description: When the Customer was originally told the order would be delivered (prior to Restaurant adjustment)
              type: string
            PromptAsap:
              description: Did the Customer request the Order to ready ASAP
              type: boolean
          description: Order data
          type: object
        CustomerOrderId:
          type: number
          deprecated: true
          description: This is a deprecated customer-facing ID that we maintain to support existing implementations.
          example: 348322088
          format: int32
        Restrictions:
          items:
            $ref: '#/components/schemas/DeliveryWebhooksOrderItemRestriction'
          description: This is a list of types of restricted items contained in the order.
          type: array
        BasketInfo:
          properties:
            MenuId:
              type: number
              format: int32
              description: Id of the Restaurant's menu.
              example: 777890
            Discount:
              type: number
              format: double
              description: The discount amount, used in conjunction with `DiscountType`.
              example: 4.78
            BasketId:
              type: string
              description: Unique Basket Id for the Order.
              example: ABCb8DzdnUy7G481b0JN5g
            GroupedBasketItems:
              items:
                properties:
                  OrderSubId:
                    type: number
                    format: int32
                    description: Order `SubId`
                    example: 0
                  MenuCardNumber:
                    type: string
                    description: Menu card number.
                    example: '1'
                  CombinedPrice:
                    type: number
                    format: double
                    description: The total price of the Basket Item (including discounts).
                    example: 3.58
                  BasketItem:
                    properties:
                      Name:
                        type: string
                        description: The Item name, e.g. Chicken Tikka Masala or Family Meal Deal 3.
                        example: Mini Fillet Burger
                      UnitPrice:
                        type: number
                        format: double
                        description: The price of the item.
                        example: 1.79
                      OptionalAccessories:
                        items:
                          properties:
                            OptionalAccessoryId:
                              type: number
                              format: int32
                              description: The accessory Id.
                              example: 56168
                            UnitPrice:
                              type: number
                              format: double
                              description: The unit price of the accessory.
                              example: 0.5
                            Name:
                              type: string
                              description: The name of the accessory.
                              example: Add Bacon
                            Quantity:
                              type: number
                              format: int32
                              description: The quantity of the accessory.
                              example: 1
                          description: Optional accessory
                          type: object
                        description: An option item added to the Basket Item, this may be options such as Garlic Bread or a bottle of Coke.
                        type: array
                      MultiBuyDiscounts:
                        items:
                          properties:
                            DiscountType:
                              type: string
                              description: Type of the discount applied
                              example: Percent
                            Amount:
                              type: number
                              format: double
                              description: Amount of the discount applied
                              example: 4.5
                            ProductTypeId:
                              format: int32
                              description: The Id of the product type the discount applies to.
                              type: number
                            OrderItemId:
                              description: Id of the Order item.
                              type: string
                          description: Multi-purchase discount data
                          type: object
                        description: Any multi-purchase discounts applied to this item.
                        type: array
                      RequiredAccessories:
                        items:
                          properties:
                            UnitPrice:
                              type: number
                              format: double
                              description: The unit price of the accessory.
                              example: 0.1
                            GroupId:
                              type: number
                              format: int32
                              description: The group Id of the accessory.
                              example: 3
                            Name:
                              type: string
                              description: The name of the accessory.
                              example: Large Meal
                            RequiredAccessoryId:
                              type: number
                              format: int32
                              description: The accessory Id.
                              example: 225025
                          description: Required accessory
                          type: object
                        description: Items required as part of the Item, for example, Pizza base sauce.
                        type: array
                      MenuCardNumber:
                        type: string
                        description: Menu card number.
                        example: '1'
                      MealParts:
                        items:
                          properties:
                            OptionalAccessories:
                              items:
                                properties:
                                  OptionalAccessoryId:
                                    type: number
                                    format: int32
                                    description: The accessory Id.
                                    example: 56168
                                  UnitPrice:
                                    type: number
                                    format: double
                                    description: The unit price of the accessory.
                                    example: 0.5
                                  Name:
                                    type: string
                                    description: The name of the accessory.
                                    example: Add Bacon
                                  Quantity:
                                    type: number
                                    format: int32
                                    description: The quantity of the accessory.
                                    example: 1
                                description: Optional accessory
                                type: object
                              description: Optional accessories
                              type: array
                            MealPartId:
                              type: number
                              format: int32
                              description: The meal part Id.
                              example: 45822750
                            Synonym:
                              description: The synonym of the meal part.
                              type: string
                            RequiredAccessories:
                              items:
                                properties:
                                  UnitPrice:
                                    type: number
                                    format: double
                                    description: The unit price of the accessory.
                                    example: 0.16
                                  GroupId:
                                    type: number
                                    format: int32
                                    description: The group Id of the accessory.
                                    example: 3
                                  Name:
                                    type: string
                                    description: The name of the accessory.
                                    example: Coca-Cola Original Taste
                                  RequiredAccessoryId:
                                    type: number
                                    format: int32
                                    description: The accessory Id.
                                    example: 225025
                                description: Required accessory
                                type: object
                              description: Required accessories
                              type: array
                            GroupId:
                              type: number
                              format: int32
                              description: The group Id.
                              example: 1
                            Name:
                              type: string
                              description: The name of the meal part.
                              example: Any Sides?
                          description: Meal part data
                          type: object
                        description: Represents sub-parts of a meal.
                        type: array
                      ProductId:
                        type: number
                        format: int32
                        description: Id of the Product.
                        example: 45858074
                      Synonym:
                        description: Legacy - ignore.
                        type: string
                      CombinedPrice:
                        type: number
                        format: double
                        description: Unit Price plus individual Meal Part item cost.
                        example: 3.58
                      Discounts:
                        items:
                          properties:
                            DiscountType:
                              type: string
                              description: Type of the discount applied
                              example: Percent
                            Amount:
                              type: number
                              format: double
                              description: Amount of the discount applied
                              example: 4.5
                          description: Discount data
                          type: object
                        description: Any discounts applied to this specific item.
                        type: array
                      ProductTypeId:
                        type: number
                        format: int32
                        description: Id of the Product.
                        example: 428
                    description: An item in the Basket.
                    type: object
                  Quantity:
                    type: number
                    format: int32
                    description: The quantity of Basket Items requested.
                    example: 2
                description: An item in the Basket.
                type: object
              description: Grouped basket items
              type: array
            Discounts:
              items:
                properties:
                  DiscountType:
                    type: string
                    description: The type of discount, e.g. a percentage or the order or fixed amount.
                    example: Percent
                  Discount:
                    type: number
                    format: int32
                    description: The discount amount, used in conjunction with `DiscountType`.
                    example: 10
                  QualifyingValue:
                    type: number
                    format: double
                    description: The minimum order amount in order for this discount to be applicable.
                    example: 4.78
                  Id:
                    type: number
                    format: int32
                    description: Basket item id.
                    example: 21950
                description: Discount data
                type: object
              description: Any Discounts applied to the Order.
              type: array
            Total:
              type: number
              format: double
              description: Total price of the Order.
              example: 47.97
            MultiBuyDiscount:
              type: number
              format: double
              description: MultiBuy discount.
              example: 0
            DeliveryCharge:
              type: number
              format: double
              description: Amount of cost that comes from delivery.
              example: 5
            SubTotal:
              type: number
              format: double
              description: The Basket total cost, excluding any discounts.
              example: 47.75
            ToSpend:
              type: number
              format: double
              description: Amount to spend.
              example: 0
          description: Basket data
          type: object
        OrderReference:
          deprecated: true
          type: string
          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
        RestaurantInfo:
          properties:
            Longitude:
              type: number
              format: double
              description: Restaurant address longitude. Will be 0 if not provided.
              example: -0.12624
            City:
              type: string
              description: The name of the city where the Restaurant is located
              example: London
            EmailAddress:
              type: string
              description: Email address for the Restaurant.
              example: contact@testrestaurant.com
            Postcode:
              type: string
              description: The post code where Restaurant is located
              example: EC4M 7RF
            AddressLines:
              items:
                type: string
                description: Address line
                example: Fleet Place House 2, Fleet Place, London
              description: Restaurant address.
              type: array
            Id:
              type: string
              description: Unique ID of the Restaurant.
              example: '123456'
            PhoneNumber:
              type: string
              description: The Restaurant phone number.
              example: '7123456789'
            PickupNotes:
              type: string
              description: Order pickup instructions for the Delivery Partner.
              example: Use the back entrance
            DispatchMethod:
              type: string
              description: '`DispatchMethod` to use.'
              example: Phone
            Latitude:
              type: number
              format: double
              description: Restaurant address latitude. Will be 0 if not provided.
              example: 51.50015
            Name:
              type: string
              description: The name of the Restaurant.
              example: Test Restaurant
          description: Restaurant data
          type: object
        FriendlyOrderReference:
          type: string
          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: object
    DeliveryWebhooksDriverLocation:
      description: An update to the driver location
      properties:
        TimeStamp:
          format: date-time
          type: string
          description: Timestamp for the location
        OrderId:
          type: string
          description: The Order Id
        Location:
          $ref: '#/components/schemas/OrdersApiV2LocationV2'
      type: object
    DeliveryWebhooksDriverStatus:
      description: Details of the driver's change in status
      properties:
        OrderId:
          type: string
          description: The order Id
        DriverContactNumber:
          type: string
          description: The driver contact number
        Event:
          enum:
            - DriverAssigned
            - DriverAtRestaurant
            - OnItsWay
            - AtDeliveryAddress
            - Delivered
          type: string
          description: The new status of the driver
        DriverName:
          type: string
          description: The driver's name
        TimeStamp:
          format: date-time
          type: string
          description: Timestamp for the status change
        EstimatedDeliveryTime:
          format: date-time
          type: string
          description: The estimated delivery time
        EstimatedPickupTime:
          format: date-time
          type: string
          description: The estimated pickup time from the restaurant
      type: object
    DeliveryWebhooksOrderItemRestriction:
      properties:
        Type:
          description: The type of restricted item contained in the order. The only supported value is 'Alcohol'.
          enum:
            - Alcohol
          type: string
      type: object
    DeliveryWebhooksReadyForPickup:
      description: Details of an order being ready for pickup
      properties:
        Event:
          enum:
            - Ready for pickup
          type: string
          description: The order is ready for pickup
        Timestamp:
          format: date-time
          type: string
          description: The timestamp
      type: object
    DeliveryPoolCreateDeliveryPool:
      required:
        - name
      description: A request to create a delivery pool
      properties:
        name:
          description: The name of the pool, used by operations teams, in reports, etc.
          type: string
        restaurants:
          items:
            format: int32
            type: number
          description: A list of Just Eat restaurant ids served by the delivery pool.
          type: array
      example:
        name: Toronto - West
        restaurants:
          - 123
          - 456
      type: object
    DeliveryPoolDeliveryPoolHours:
      type: object
      required:
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday
        - sunday
      properties:
        friday:
          description: The delivery pool details for Friday
          required:
            - poolTimes
          properties:
            poolTimes:
              items:
                required:
                  - startTime
                  - endTime
                properties:
                  endTime:
                    description: pool end time for Friday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Friday (HH:mm)
                    type: string
                type: object
              description: pool start and end times for the day
              type: array
            closed:
              description: true if the pool is closed for the day
              type: boolean
          type: object
        tuesday:
          description: The delivery pool details for Tuesday
          required:
            - poolTimes
          properties:
            poolTimes:
              items:
                required:
                  - startTime
                  - endTime
                properties:
                  endTime:
                    description: pool end time for Tuesday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Tuesday (HH:mm)
                    type: string
                type: object
              description: pool start and end times for the day
              type: array
            closed:
              description: true if the pool is closed for the day
              type: boolean
          type: object
        thursday:
          description: The delivery pool details for Thursday
          required:
            - poolTimes
          properties:
            poolTimes:
              items:
                required:
                  - startTime
                  - endTime
                properties:
                  endTime:
                    description: pool end time for Thursday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Thursday (HH:mm)
                    type: string
                type: object
              description: pool start and end times for the day
              type: array
            closed:
              description: true if the pool is closed for the day
              type: boolean
          type: object
        sunday:
          description: The delivery pool details for Sunday
          required:
            - poolTimes
          properties:
            poolTimes:
              items:
                required:
                  - startTime
                  - endTime
                properties:
                  endTime:
                    description: pool end time for Sunday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Sunday (HH:mm)
                    type: string
                type: object
              description: pool start and end times for the day
              type: array
            closed:
              description: true if the pool is closed for the day
              type: boolean
          type: object
        saturday:
          description: The delivery pool details for Saturday
          required:
            - poolTimes
          properties:
            poolTimes:
              items:
                required:
                  - startTime
                  - endTime
                properties:
                  endTime:
                    description: pool end time for Saturday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Saturday (HH:mm)
                    type: string
                type: object
              description: pool start and end times for the day
              type: array
            closed:
              description: true if the pool is closed for the day
              type: boolean
          type: object
        monday:
          description: The delivery pool details for Monday
          required:
            - poolTimes
          properties:
            poolTimes:
              items:
                required:
                  - startTime
                  - endTime
                properties:
                  endTime:
                    description: pool end time for Monday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Monday (HH:mm)
                    type: string
                type: object
              description: pool start and end times for the day
              type: array
            closed:
              description: true if the pool is closed for the day
              type: boolean
          type: object
        wednesday:
          description: The delivery pool details for Wednesday
          required:
            - poolTimes
          properties:
            poolTimes:
              items:
                required:
                  - startTime
                  - endTime
                properties:
                  endTime:
                    description: pool end time for Wednesday (HH:mm)
                    type: string
                  startTime:
                    description: pool start time for Wednesday (HH:mm)
                    type: string
                type: object
              description: pool start and end times for the day
              type: array
            closed:
              description: true if the pool is closed for the day
              type: boolean
          type: object
      example:
        monday:
          closed: false
          poolTimes:
            - startTime: '09:00'
              endTime: '21:00'
        tuesday:
          closed: true
          poolTimes:
            - startTime: '10:00'
              endTime: '19:00'
        wednesday:
          closed: false
          poolTimes:
            - startTime: '08:00'
              endTime: '18:00'
        thursday:
          closed: false
          poolTimes:
            - startTime: '12:00'
              endTime: '03:00'
        friday:
          closed: false
          poolTimes:
            - startTime: '12:00'
              endTime: '01:00'
        saturday:
          closed: false
          poolTimes:
            - startTime: '11:00'
              endTime: '23:00'
        sunday:
          closed: false
          poolTimes:
            - startTime: '13:00'
              endTime: '19:00'
    DeliveryPoolEstimatedTime:
      type: object
      description: An estimated time
      properties:
        bestGuess:
          description: Your best estimation (hh:mm:ss)
          type: string
      example:
        bestGuess: '00:35:00'
    DeliveryPoolPatchDeliveryPool:
      type: object
      description: A change to a delivery pool
      properties:
        name:
          description: The name of the pool, used by operations teams, in reports, etc.
          type: string
        restaurants:
          items:
            format: int32
            type: number
          description: A list of Just Eat restaurant ids served by the delivery pool.
          type: array
      example:
        name: Toronto - North
    DeliveryPoolUpdateDeliveryPoolRisk:
      required:
        - riskLevel
      type: object
      description: A change to a delivery pool risk
      properties:
        riskLevel:
          description: |
            The risk level value between 0 and 9 where 0 being little to no "risk" and 9 being at maximum "risk".

            The agreed process for handling missing risk signal values:
              - If the last value < 9, remain online - BAU.
              - If the last value = 9, remain offline.

            The higher risk value, the smaller polygon will be defined.
          type: number
          format: integer
          minimum: 0
          maximum: 9
      example:
        riskLevel: 1
    DeliveryconfigurationCreateDeliveryHoursRequest:
      type: object
      description: Delivery hours for days of the week
      additionalProperties: false
      properties:
        monday:
          description: Delivery hours for monday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        tuesday:
          description: Delivery hours for tuesday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        wednesday:
          description: Delivery hours for wednesday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        thursday:
          description: Delivery hours for thursday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        friday:
          description: Delivery hours for friday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        saturday:
          description: Delivery hours for saturday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        sunday:
          description: Delivery hours for sunday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
    DeliveryconfigurationCreateDeliveryPoolRequestInternal:
      type: object
      additionalProperties: false
      properties:
        poolId:
          type: string
          description: Pool id
          nullable: true
        name:
          type: string
          description: Name of pool
          nullable: true
        timeZone:
          type: string
          description: Time zone
          nullable: true
        poolZone:
          type: string
          description: Pool zone
          nullable: true
        partnerSubscriptionId:
          type: string
          description: Partner subscription id
          nullable: true
        restaurants:
          type: array
          description: Restaurants
          nullable: true
          items:
            type: integer
            format: int32
    DeliveryconfigurationCreateRestaurantsPoolSchedulesRequest:
      type: object
      additionalProperties: false
      required:
        - data
      properties:
        data:
          description: Schedules
          type: array
          items:
            $ref: '#/components/schemas/DeliveryconfigurationScheduleEntry'
    DeliveryconfigurationDeliveryHoursForDay:
      type: object
      description: Delivery hours for day
      additionalProperties: false
      properties:
        closed:
          description: Restaurant is closed
          type: boolean
        poolTimes:
          type: array
          description: Opening times for delivery pool
          nullable: true
          items:
            $ref: '#/components/schemas/DeliveryconfigurationPoolTime'
    DeliveryconfigurationDeliveryHoursResponseInternal:
      properties:
        monday:
          description: Delivery hours for monday
          nullable: true
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        tuesday:
          nullable: true
          description: Delivery hours tuesday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        wednesday:
          nullable: true
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
          description: Delivery hours for wednesday
        thursday:
          nullable: true
          description: Delivery hours for thursday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        friday:
          nullable: true
          description: Delivery hours for friday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        saturday:
          nullable: true
          description: Delivery hours for saturday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
        sunday:
          nullable: true
          description: Delivery hours for sunday
          $ref: '#/components/schemas/DeliveryconfigurationDeliveryHoursForDay'
      type: object
      description: Delivery hours for days of the week
      additionalProperties: false
    DeliveryconfigurationDeliveryPoolsResponseInternal:
      type: object
      additionalProperties: false
      properties:
        items:
          type: array
          nullable: true
          description: Delivery pools
          items:
            $ref: '#/components/schemas/DeliveryconfigurationItem'
    DeliveryconfigurationEditDeliveryPoolRequestInternal:
      type: object
      additionalProperties: false
      properties:
        name:
          type: string
          description: Name of pool
          nullable: true
        timeZone:
          type: string
          description: Time zone
          nullable: true
        poolZone:
          type: string
          nullable: true
          description: Pool zone
        partnerSubscriptionId:
          type: string
          description: Partner subscription id
          nullable: true
    DeliveryconfigurationGetRestaurantPoolScheduleResponse:
      type: object
      additionalProperties: false
      properties:
        restaurantId:
          type: integer
          description: Restaurant id
          format: int32
        data:
          type: array
          nullable: true
          description: Pool schedules
          items:
            $ref: '#/components/schemas/DeliveryconfigurationPoolSchedule'
    DeliveryconfigurationGraphData:
      type: object
      additionalProperties: false
      properties:
        dateTime:
          type: string
          description: Date time
          format: date-time
        minutes:
          type: integer
          format: int32
          description: Minutes
          nullable: true
    DeliveryconfigurationItem:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          description: Item Id
          nullable: true
        name:
          type: string
          description: Item name
          nullable: true
        timeZone:
          type: string
          description: Time zone
          nullable: true
        poolZone:
          type: string
          description: Pool zone
          nullable: true
        restaurants:
          type: array
          description: Restaurants
          nullable: true
          items:
            $ref: '#/components/schemas/DeliveryconfigurationRestaurantGlobalId'
        partnerSubscriptionId:
          type: string
          description: Partner subscription id
          nullable: true
    DeliveryconfigurationItem2:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          description: Item id
          nullable: true
        poolId:
          type: string
          description: Pool id
          nullable: true
        payload:
          type: string
          description: Item payload
          nullable: true
        eventType:
          type: string
          description: Item event type
          nullable: true
        createdUtc:
          type: string
          description: Created time
          format: date-time
        createdBy:
          type: string
          description: Created by name
          nullable: true
    DeliveryconfigurationPartnerSubscription:
      type: object
      additionalProperties: false
      properties:
        name:
          type: string
          description: Partner subscription
          nullable: true
        type:
          type: string
          description: Partner type
          nullable: true
    DeliveryconfigurationPartnerSubscriptionResponse:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          format: int32
          description: Partner subscription id
        PartnerId:
          type: integer
          format: int32
          description: Partner id
        Name:
          type: string
          description: Partner subscription name
        ServiceType:
          type: string
          description: Partner subscription service type
    DeliveryconfigurationPartnerSubscriptionSearchResponse:
      type: object
      additionalProperties: false
      properties:
        Data:
          type: array
          description: Data
          items:
            $ref: '#/components/schemas/DeliveryconfigurationPartnerSubscriptionResponse'
        Offset:
          type: integer
          format: int32
          description: Offset of items searched
        Limit:
          type: integer
          format: int32
          description: Limit of items searched
        TotalItems:
          type: integer
          format: int32
          description: Count of total items returned
    DeliveryconfigurationPool:
      type: object
      additionalProperties: false
      properties:
        partnerSubscriptionId:
          type: string
          nullable: true
          description: Partner subscription id
        partnerId:
          type: string
          nullable: true
          description: Partner id
        id:
          type: string
          nullable: true
          description: Pool id
        name:
          type: string
          nullable: true
          description: Name of pool
        tenant:
          type: string
          nullable: true
          description: Tenant
        timeZone:
          type: string
          nullable: true
          description: Time zone
        poolZone:
          type: string
          nullable: true
          description: Pool zone
        isActive:
          type: boolean
          description: Is active
        restaurants:
          type: array
          nullable: true
          description: Restaurants
          items:
            $ref: '#/components/schemas/DeliveryconfigurationRestaurantGlobalId'
        shifts:
          type: array
          nullable: true
          description: Shifts
          items:
            $ref: '#/components/schemas/DeliveryconfigurationShiftSpec'
    DeliveryconfigurationPoolConfigEntity:
      type: object
      additionalProperties: false
      properties:
        onlineThreshold:
          type: integer
          format: int32
          description: Online threshold
        offlineThreshold:
          type: integer
          format: int32
          description: Offline threshold
        id:
          type: integer
          format: int32
          description: Pool config id
        poolId:
          type: string
          nullable: false
          description: Pool id
    DeliveryconfigurationPoolEventsResponseInternal:
      type: object
      additionalProperties: false
      properties:
        data:
          type: array
          nullable: true
          description: Data
          items:
            $ref: '#/components/schemas/DeliveryconfigurationItem2'
        limit:
          type: integer
          format: int32
          description: Limit
        offset:
          type: integer
          format: int32
          description: Offset
        totalItems:
          type: integer
          format: int32
          description: Total items
    DeliveryconfigurationPoolMode:
      type: string
      description: Pool mode
      x-enumNames:
        - undefined
        - driverEtaBased
        - riskLevelBased
      enum:
        - undefined
        - driverETABased
        - riskLevelBased
    DeliveryconfigurationPoolSchedule:
      type: object
      additionalProperties: false
      properties:
        pool:
          nullable: true
          description: Delivery pool
          $ref: '#/components/schemas/DeliveryconfigurationRestaurantPool'
        startDateUtc:
          type: string
          format: date-time
          description: Start date utc
    DeliveryconfigurationPoolStateSummaryResponseInternal:
      type: object
      additionalProperties: false
      properties:
        eventCount:
          type: integer
          format: int32
          description: Event count
        lastOnline:
          type: string
          format: date-time
          nullable: true
          description: Last online
        lastOffline:
          type: string
          format: date-time
          nullable: true
          description: Last offline
        currentStatus:
          type: string
          nullable: true
          description: Current status
        bestGuessReceived:
          type: string
          format: date-time
          nullable: true
          description: Best guess received
        bestGuess:
          type: string
          format: duration
          nullable: true
          description: Best guess
        riskLevel:
          type: integer
          format: int32
          nullable: true
          description: Risk level
        poolMode:
          $ref: '#/components/schemas/DeliveryconfigurationPoolMode'
          description: Pool mode
        graphData:
          type: array
          nullable: true
          description: Graph data
          items:
            $ref: '#/components/schemas/DeliveryconfigurationGraphData'
    DeliveryconfigurationPoolSummaryResponseInternal:
      type: object
      description: Summary of pools
      additionalProperties: false
      properties:
        data:
          type: array
          description: Data
          nullable: true
          items:
            $ref: '#/components/schemas/DeliveryconfigurationPoolSummaryResponseItem'
        limit:
          type: integer
          description: Limit
          format: int32
        offset:
          type: integer
          description: Offset
          format: int32
        totalItems:
          type: integer
          description: Total items
          format: int32
    DeliveryconfigurationPoolSummaryResponseItem:
      type: object
      description: Summary of delivery pool
      properties:
        id:
          type: string
          nullable: true
          description: Pool id
        name:
          type: string
          nullable: true
          description: Name of pool
        partnerSubscriptionId:
          type: integer
          format: int32
          nullable: true
          description: Partner subscription id
        partnerSubscriptionName:
          type: string
          nullable: true
          description: Partner subscription name
        partnerId:
          type: integer
          format: int32
          nullable: true
          description: Partner id
        restaurants:
          type: array
          nullable: true
          description: Restaurant items
          items:
            $ref: '#/components/schemas/DeliveryconfigurationRestaurantResponseItem'
        isOffline:
          type: boolean
          description: Is offline
        pickupAvailability:
          type: string
          nullable: true
          description: Pickup availability
        nextAvailablePickupTimeUtc:
          type: string
          format: date-time
          nullable: true
          description: Next available pickup time utc
        partnerPickupWaitInSeconds:
          type: integer
          format: int32
          nullable: true
          description: Partner pickup wait in seconds
        activeShift:
          nullable: true
          description: Active shift item
          $ref: '#/components/schemas/DeliveryconfigurationShiftResponseItem'
        timeZone:
          type: string
          nullable: true
          description: Time zone
        poolZone:
          type: string
          nullable: true
          description: Pool zone
    DeliveryconfigurationPoolTime:
      type: object
      additionalProperties: false
      description: Time pools start and end
      properties:
        startTime:
          type: string
          nullable: true
          description: Start time
        endTime:
          type: string
          nullable: true
          description: End time
    DeliveryconfigurationPutPoolScheduleRequest:
      type: object
      additionalProperties: false
      properties:
        pool:
          nullable: true
          description: Pool
          $ref: '#/components/schemas/DeliveryconfigurationRestaurantPool'
        startDateUtc:
          type: string
          description: Start time in utc
          format: date-time
    DeliveryconfigurationPutRestaurantPoolScheduleRequest:
      type: object
      additionalProperties: false
      required:
        - data
      properties:
        data:
          type: array
          description: Updated pool schedule
          items:
            $ref: '#/components/schemas/DeliveryconfigurationPutPoolScheduleRequest'
    DeliveryconfigurationPutRestaurantsRequest:
      type: object
      additionalProperties: false
      properties:
        restaurants:
          type: array
          nullable: true
          description: Updated restaurants
          items:
            type: integer
            format: int32
    DeliveryconfigurationPutShiftsRequest:
      type: object
      additionalProperties: false
      properties:
        shifts:
          type: array
          nullable: true
          description: Updated shifts
          items:
            $ref: '#/components/schemas/DeliveryconfigurationShiftSpec'
    DeliveryconfigurationRelativePoolAvailability:
      type: object
      additionalProperties: false
      properties:
        bestGuess:
          type: string
          description: Best guess
          format: duration
          nullable: true
    DeliveryconfigurationRestaurantGlobalId:
      type: object
      description: Global id for restaurant
      additionalProperties: false
      properties:
        tenant:
          type: string
          description: tenant
          nullable: true
        id:
          type: integer
          description: Pool id
          format: int32
    DeliveryconfigurationRestaurantPool:
      type: object
      description: Restaurant pool information
      additionalProperties: false
      properties:
        id:
          type: string
          description: Pool id
          nullable: true
        name:
          type: string
          description: Name of pool
          nullable: true
        timeZone:
          type: string
          description: Time zone
          nullable: true
        isActive:
          type: boolean
          description: Is active
    DeliveryconfigurationRestaurantResponse:
      type: object
      additionalProperties: false
      description: Restaurant information
      properties:
        id:
          type: integer
          format: int32
          description: Restaurant id
        name:
          type: string
          nullable: true
          description: Name of pool
        url:
          type: string
          nullable: true
          description: Url of restaurant
        status:
          type: string
          nullable: true
          description: Status
        pool:
          nullable: true
          description: Pool
          $ref: '#/components/schemas/DeliveryconfigurationRestaurantPool'
        partnerSubscriptions:
          type: array
          description: Partner subscriptions
          nullable: true
          items:
            $ref: '#/components/schemas/DeliveryconfigurationPartnerSubscription'
    DeliveryconfigurationRestaurantResponseItem:
      type: object
      description: Restaurant information
      additionalProperties: false
      properties:
        id:
          type: integer
          format: int32
          description: Restaurant id
        name:
          type: string
          description: Name of pool
          nullable: true
        url:
          type: string
          description: Url of restaurant
          nullable: true
        status:
          type: string
          description: Status
          nullable: true
        pool:
          nullable: true
          description: Pool
          $ref: '#/components/schemas/DeliveryconfigurationRestaurantPool'
    DeliveryconfigurationRestaurantStateSummaryResponseInternal:
      type: object
      additionalProperties: false
      properties:
        eventCount:
          type: integer
          description: Event count
          format: int32
        bestGuessReceived:
          type: string
          description: Best guess received
          format: date-time
          nullable: true
        bestGuess:
          type: string
          description: Best guess
          format: duration
          nullable: true
        graphData:
          type: array
          description: Graph data
          nullable: true
          items:
            $ref: '#/components/schemas/DeliveryconfigurationGraphData'
    DeliveryconfigurationRestaurantsResponseInternal:
      type: object
      additionalProperties: false
      properties:
        restaurants:
          type: array
          description: Restaurants
          nullable: true
          items:
            $ref: '#/components/schemas/DeliveryconfigurationRestaurantResponseItem'
    DeliveryconfigurationRetrieveRestaurantsRequest:
      type: object
      additionalProperties: false
      properties:
        ids:
          type: array
          description: Restaurant ids
          nullable: true
          items:
            type: integer
            format: int32
    DeliveryconfigurationScheduleEntry:
      type: object
      additionalProperties: false
      properties:
        restaurantId:
          type: integer
          description: Restaurant id
          format: int32
        startDateUtc:
          type: string
          description: Start date utc
          format: date-time
        poolId:
          type: string
          description: Pool id
          nullable: true
    DeliveryconfigurationSearchPoolZoneResponse:
      type: object
      additionalProperties: false
      properties:
        items:
          type: array
          nullable: true
          description: Pool zones
          items:
            $ref: '#/components/schemas/DeliveryconfigurationSearchPoolZoneResponseItem'
    DeliveryconfigurationSearchPoolZoneResponseItem:
      type: object
      additionalProperties: false
      properties:
        poolZone:
          type: string
          description: Pool zone
          nullable: true
    DeliveryconfigurationSearchRestaurantsResponse:
      type: object
      additionalProperties: false
      properties:
        totalItems:
          type: integer
          format: int32
          description: Total items
        data:
          type: array
          description: Searched restaurants
          nullable: true
          items:
            $ref: '#/components/schemas/DeliveryconfigurationRestaurantResponse'
    DeliveryconfigurationShiftResponseItem:
      type: object
      description: Shift information
      additionalProperties: false
      properties:
        start:
          type: string
          description: Start
          format: date-time
        activeDrivers:
          type: number
          format: double
          description: Active drivers
        dropsPerDriverHour:
          type: number
          format: double
          description: Drops per driver hour
        dropsPerHour:
          type: number
          format: double
          description: Drops per hour
        dropDurationInMinutes:
          type: integer
          format: int32
          description: Drop duration in minutes
    DeliveryconfigurationShiftSpec:
      type: object
      additionalProperties: false
      properties:
        start:
          type: string
          format: date-time
          description: Start
    DeliveryconfigurationShiftsResponseInternal:
      type: object
      additionalProperties: false
      properties:
        shifts:
          type: array
          nullable: true
          description: Shifts
          items:
            $ref: '#/components/schemas/DeliveryconfigurationShiftResponseItem'
    DeliveryconfigurationThresholdConfigRequest:
      type: object
      additionalProperties: false
      properties:
        offlineThreshold:
          type: integer
          description: Offline threshold
          format: int32
        onlineThreshold:
          type: integer
          description: Online threshold
          format: int32
    DeliveryfeesRestaurantDeliveryFees:
      nullable: false
      properties:
        minimumOrderValue:
          description: The minimum order value (excluding fees) required, in the smallest unit of local currency (e.g. pence).
          format: integer
          type: number
        bands:
          items:
            properties:
              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
              fee:
                description: The delivery fee, in the smallest unit of local currency (e.g. pence).
                format: integer
                type: number
            type: object
          description: Collection of delivery fee bands
          type: array
        restaurantId:
          description: The identifier of the restaurant
          type: string
      example:
        minimumOrderValue: 1000
        bands:
          - minimumAmount: 1000
            fee: 250
          - minimumAmount: 2000
            fee: 0
        restaurantId: '5678'
      type: object
    DiscoveryDiscoveryByGtinResponse:
      allOf:
        - properties:
            partners:
              type: array
              description: An array of partners who stock a GTIN which is available.
              items:
                type: object
                properties:
                  restaurantId:
                    type: string
                    description: The id of the restaurant.
                    nullable: false
                  name:
                    type: string
                    description: The display name of the restaurant.
                    nullable: false
                  uniqueName:
                    type: string
                    description: The restaurant name in slug format.
                    nullable: true
                  gtin:
                    type: string
                    description: The Global Trade Item Number. Used to search for a specific item which a restaurant if offering for sale.
                    nullable: false
                  deliveryEtaMinutes:
                    type: object
                    description: Estimate for the restaurant delivery times.
                    nullable: true
                    properties:
                      approximate:
                        description: The approximate delivery time in minutes.
                        type: number
                      rangeLower:
                        type: number
                        description: The earliest delivery time in minutes.
                      rangeUpper:
                        type: number
                        description: The latest delivery time in minutes.
                  isCollection:
                    type: boolean
                    description: True if the restaurant offers collection.
                    nullable: false
                  isDelivery:
                    type: boolean
                    description: True if the restaurant offers delivery.
                    nullable: false
                  isOpenNowForCollection:
                    type: boolean
                    description: True if the restaurant is open for collection now.
                    nullable: false
                  isOpenNowForDelivery:
                    type: boolean
                    description: True if the restaurant is open for delivery now.
                    nullable: false
                  isOpenNowForPreorder:
                    type: boolean
                    description: True if the restaurant is open for pre-orders now.
                  isTemporarilyOffline:
                    type: boolean
                    description: True if the restaurant is offline temporarily.
                    nullable: false
                  isPremier:
                    type: boolean
                    description: True if the restaurant is a premier restaurant (otherwise known as a Local Legend in the UK).
                    nullable: false
                  isTestRestaurant:
                    type: boolean
                    description: True if the restaurant is for testing.
                    nullable: false
                  availability:
                    type: object
                    description: The availability details of an item by service type.
                    nullable: false
                    properties:
                      delivery:
                        $ref: '#/components/schemas/DiscoveryServiceAvailability'
                        nullable: true
                      collection:
                        $ref: '#/components/schemas/DiscoveryServiceAvailability'
                        nullable: true
                  deliveryFees:
                    type: object
                    description: Information related to delivery fees.
                    nullable: true
                    properties:
                      minimumOrderValue:
                        type: number
                        description: The minimum order value (excluding fees) required, in the smallest unit of local currency (e.g. pence).
                      bands:
                        type: array
                        description: Collection of delivery fee bands.
                        items:
                          type: object
                          properties:
                            minimumAmount:
                              type: number
                              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).
                            fee:
                              type: number
                              description: The delivery fee, in the smallest unit of local currency (e.g. pence).
        - $ref: '#/components/schemas/PagingPagedAfterOnlyCursorResponse'
      example:
        partners:
          - restaurantId: '298668'
            name: Sainsbury's - Bath
            uniqueName: sainsbury-supermarket-bath
            gtin: '12345678901234'
            deliveryEtaMinutes:
              rangeLower: 10
              rangeUpper: 25
            isCollection: false
            isDelivery: true
            isOpenNowForCollection: false
            isOpenNowForDelivery: true
            isOpenNowForPreorder: false
            isTemporarilyOffline: false
            isPremier: false
            isTestRestaurant: false
            availability:
              delivery:
                isOpen: false
                canPreOrder: true
                nextAvailability:
                  from: '2023-03-21T11:32:00'
                isTemporarilyOffline: false
              collection:
                isOpen: false
                canPreOrder: true
                nextAvailability:
                  from: '2023-03-21T12:00:00'
                isTemporarilyOffline: false
            deliveryFees:
              minimumOrderValue: 1000
              bands:
                - minimumAmount: 1000
                  fee: 250
                - minimumAmount: 3000
                  fee: 0
        paging:
          cursors:
            after: '1234567890'
    DiscoveryServiceAvailability:
      description: Availability information for a service.
      type: object
      required:
        - isOpen
        - canPreOrder
        - isTemporarilyOffline
      properties:
        isOpen:
          description: True if the restaurant is open.
          type: boolean
        canPreOrder:
          description: True if the restaurant is accepting pre-orders.
          type: boolean
        nextAvailability:
          description: Information about next availability.
          type: object
          nullable: true
          properties:
            from:
              $ref: '#/components/schemas/LocalDateTime'
        isTemporarilyOffline:
          description: True if the restaurant is temporarily offline.
          type: boolean
        etaMinutes:
          description: Estimate for the restaurant service completion times when ordered now.
          type: object
          nullable: true
          properties:
            approximate:
              description: The approximate service completion time in minutes.
              type: integer
            rangeLower:
              description: The lower bound for service completion time in minutes.
              type: integer
            rangeUpper:
              description: The upper bound for service completion time in minutes.
              type: integer
    DiscoveryServiceType:
      type: string
      enum:
        - any
        - delivery
        - collection
      default: any
    DiscoverySortBy:
      type: string
      enum:
        - bestMatch
        - reviewRating
        - distance
        - deliveryTime
        - minimumOrderValue
        - deliveryFee
      default: bestMatch
    DiscoveryBrandBrandRestaurant:
      type: object
      description: A restaurant associated with the brand.
      properties:
        id:
          type: string
          description: Unique restaurant ID.
          example: 123-ABC
        url:
          type: string
          format: uri
          description: URL to the restaurant menu page.
          example: https://www.lieferando.de/speisekarte/burger-king-berlin-grossbeerenstrasse
      required:
        - id
        - url
    DiscoveryBrandBrandRestaurantResponse:
      type: object
      description: Response containing a single 'best' restaurant for a given brand within a tenant and location.
      properties:
        restaurant:
          $ref: '#/components/schemas/DiscoveryBrandBrandRestaurant'
      required:
        - restaurant
      example:
        restaurant:
          id: 123-ABC
          url: https://www.lieferando.de/speisekarte/burger-king-berlin-grossbeerenstrasse?jet-source=content_page&jet-source-type=json-integration
    DiscoveryRestaurantsActiveBenefits:
      description: |
        Represents the benefits currently applicable to the restaurant.

        Known values:
          * `unlimitedFreeDelivery` - Indicates eligibility for unlimited free delivery.

        Unknown values should be ignored.
      type: array
      items:
        type: string
    DiscoveryRestaurantsAvailability:
      description: Availability information by service type.
      type: object
      properties:
        delivery:
          $ref: '#/components/schemas/DiscoveryRestaurantsServiceAvailability'
        collection:
          $ref: '#/components/schemas/DiscoveryRestaurantsServiceAvailability'
    DiscoveryRestaurantsDeliveryFees:
      description: Information related to delivery fees.
      type: object
      properties:
        restaurants:
          description: A dictionary of restaurant delivery fees.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/DeliveryfeesRestaurantDeliveryFees'
    DiscoveryRestaurantsEnrichedRestaurantItem:
      type: object
      properties:
        id:
          description: The id of the restaurant.
          type: string
        name:
          description: The display name of the restaurant.
          type: string
        uniqueName:
          description: The unique name of the restaurant, used to build the menu URL.
          type: string
        address:
          description: The address of the restaurant.
          type: object
          properties:
            city:
              type: string
              description: The city the restaurant is in.
            firstLine:
              type: string
              description: The first line of the restaurant's address.
            postalCode:
              type: string
              description: The postal code of the restaurant.
            location:
              $ref: '#/components/schemas/DiscoveryRestaurantsLocation'
        rating:
          description: Rating details for the restaurant.
          type: object
          properties:
            count:
              description: How many ratings have been placed.
              type: number
              minimum: 0
            starRating:
              description: The rating as a star score.
              type: number
              format: double
              minimum: 0
            userRating:
              description: The user rating score for the restaurant, null if they have not left a review.
              type: number
              format: double
              nullable: true
        isNew:
          description: True if the restaurant was recently added.
          type: boolean
        driveDistanceMeters:
          description: The distance to drive to the restaurant in meters, null if the distance has not been calculated.
          type: number
          nullable: true
        openingTimeLocal:
          $ref: '#/components/schemas/LocalDateTime'
        deliveryOpeningTimeLocal:
          $ref: '#/components/schemas/LocalDateTime'
        deliveryEtaMinutes:
          description: Estimate for the restaurant delivery times.
          type: object
          nullable: true
          properties:
            approximate:
              description: The approximate delivery time in minutes.
              type: number
              nullable: true
            rangeLower:
              description: The earliest delivery time in minutes.
              type: number
              nullable: true
            rangeUpper:
              description: The latest delivery time in minutes.
              type: number
              nullable: true
        isCollection:
          description: True if the restaurant offers collection.
          type: boolean
        isDelivery:
          description: True if the restaurant offers delivery.
          type: boolean
        isOpenNowForCollection:
          description: True if the restaurant is open for collection now.
          type: boolean
        isOpenNowForDelivery:
          description: True if the restaurant is open for delivery now.
          type: boolean
        isOpenNowForPreorder:
          description: True if the restaurant is open for pre-orders now.
          type: boolean
        isTemporarilyOffline:
          description: True if the restaurant is offline temporarily.
          type: boolean
        defaultDisplayRank:
          description: The default ranking of this restaurant in this specific result.
          type: number
          minimum: 0
        isTemporaryBoost:
          description: True if the restaurant rank has been temporarily improved.
          type: boolean
        isSponsored:
          description: True if the restaurant has been sponsored .
          type: boolean
        isPremier:
          description: True if the restaurant is a premier partner (otherwise known as a Local Legend in the UK).
          type: boolean
        logoUrl:
          description: URL of the restaurant's logo.
          type: string
        bannerUrl:
          description: '[Deprecated] To get header information for the partner (restaurant) switch your integration to v3 contracts and use `partnerHeaderInfo` instead.'
          deprecated: true
          type: string
        isTestRestaurant:
          description: True if the restaurant is for testing.
          type: boolean
        deals:
          description: The offers available for the restaurant.
          type: array
          items:
            type: object
            properties:
              description:
                description: Description of the offer. e.g. `Cheeky Tuesday - 20% off when you spend £15`
                type: string
              offerType:
                description: 'The type of offer, currently supported types are: `Percent`, `FreeItem`, `Bogof`, `StampCard`, `BogofMixMatch` and `Notification`.'
                type: string
        tags:
          description: The tags for the restaurant, more details can be found in `metaData.tagDetails`.
          type: array
          items:
            type: string
        cuisines:
          description: The cuisines for the restaurant.
          type: array
          items:
            type: object
            properties:
              name:
                description: The display name of the cuisine.
                type: string
              uniqueName:
                description: The unique name of the cuisine, used to look up more details from `metaData.cuisineDetails`.
                type: string
        lastUpdated:
          $ref: '#/components/schemas/LocalDateTime'
        availability:
          $ref: '#/components/schemas/DiscoveryRestaurantsAvailability'
        activeBenefits:
          $ref: '#/components/schemas/DiscoveryRestaurantsActiveBenefits'
    DiscoveryRestaurantsEnrichedRestaurantsResponse:
      type: object
      properties:
        metadata:
          description: Additional data about the search results
          type: object
          properties:
            canonicalName:
              description: The canonical name for the search location, can be used to build a URL for this location.
              type: string
            district:
              description: The outward code (for postcode based searches) or district (for latitude-longitude based searches) of the search location.
              type: string
            postalCode:
              description: The postcode (for postcode based searches) or district (for latitude-longitude based searches) of the search location.
              type: string
            area:
              description: The area (for postcode based searches) or district name (for latitude-longitude based searches) of the search location.
              type: string
            location:
              $ref: '#/components/schemas/DiscoveryRestaurantsLocation'
            cuisineDetails:
              description: A collection of cuisines that are relevant for this search.
              type: array
              items:
                type: object
                properties:
                  uniqueName:
                    description: The unique name of the cuisine, primarily used for including in the URL, filtering and locating cuisine images.
                    type: string
                  count:
                    description: The number of restaurants with this cuisine.
                    type: number
                    minimum: 0
                  name:
                    description: The display name of the cuisine.
                    type: string
            resultCount:
              description: The number of restaurants for this search.
              type: number
              minimum: 0
            tagDetails:
              description: A collection of tags that are relevant for this search result.
              type: array
              items:
                type: object
                properties:
                  priority:
                    description: The priority of the tag.
                    type: number
                  key:
                    description: The key of the tag.
                    type: string
                  displayName:
                    description: The display name of the tag.
                    type: string
            deliveryArea:
              description: The outward code (for postcode based searches) or district (for latitude-longitude based searches) of the search location.
              type: string
        restaurants:
          description: A ranked collection of restaurants.
          type: array
          items:
            $ref: '#/components/schemas/DiscoveryRestaurantsEnrichedRestaurantItem'
        deliveryFees:
          $ref: '#/components/schemas/DiscoveryRestaurantsDeliveryFees'
        promotedPlacement:
          $ref: '#/components/schemas/DiscoveryRestaurantsPromotedPlacement'
        filters:
          description: A dictionary of pre-calculated filters for this search.
          type: object
          additionalProperties:
            type: object
            properties:
              displayName:
                description: The display name for the filter.
                type: string
              imageName:
                description: The image name of the filter, which should be used when retrieving imagery for the filter.
                type: string
              group:
                description: Used to determine how to combine multiple selected filters. OR filters from the same group, AND from different groups. e.g. cuisine OR cuisine AND offer
                type: string
                nullable: true
              restaurantIds:
                description: The list of restaurant ids that match this filter.
                type: array
                items:
                  type: string
        layout:
          description: A dictionary of different potential layouts that can be used to display the search results.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/DiscoveryRestaurantsLayoutItem'
        enrichedLists:
          description: A dictionary to store extra details for enriched lists used in any layouts.
          type: object
          additionalProperties:
            type: object
            properties:
              subtitle:
                description: The subtitle for the enriched list.
                type: string
                nullable: true
              trackingId:
                description: The tracking id for the enriched list, used to identify what generated the enriched list.
                type: string
                nullable: true
              focusedProperties:
                description: A collection of properties that are relevant for this enriched list, for example ETAs, delivery cost. Can be used to present different restaurant data if required.
                type: array
                items:
                  type: string
                nullable: true
              linkId:
                description: An identifier that can be used to link to the source of an enriched list. e.g. a filter or restaurant's menu page
                type: string
                nullable: true
              linkType:
                description: The type of link id for this enriched list. `filter` means `linkId` will be the id of a filter, `restaurant` means that `linkId` will be a restaurant's `uniqueName`.
                type: string
                enum:
                  - filter
                  - restaurant
                nullable: true
      example:
        metadata:
          canonicalName: ec4-london
          district: EC4M
          postalCode: EC4M5AB
          area: London
          location:
            type: Point
            coordinates:
              - -0.096928
              - 51.512687
          cuisineDetails:
            - name: Chinese
              uniqueName: chinese
              total: 171
          resultCount: 1
          tagDetails:
            - displayName: Tried and Tasted
              key: tried-and-tasted
              priority: 300
          deliveryArea: EC4M
        restaurants:
          - id: '102215'
            name: TEST_DP_1
            uniqueName: test_dp-london-london
            address:
              city: London
              firstLine: London
              postalCode: EC4M 7RF
              location:
                type: Point
                coordinates:
                  - -0.103137
                  - 51.516454
            rating:
              count: 53
              starRating: 4.5
              userRating: null
            isNew: false
            driveDistanceMeters: 965.603
            openingTimeLocal: '2019-11-19T01:00:00'
            deliveryOpeningTimeLocal: '2019-11-18T01:00:00'
            deliveryEtaMinutes:
              approximate: null
              rangeLower: 10
              rangeUpper: 25
            isCollection: false
            isDelivery: true
            isOpenNowForCollection: false
            isOpenNowForDelivery: true
            isOpenNowForPreorder: false
            isTemporarilyOffline: false
            defaultDisplayRank: 0
            isTemporaryBoost: false
            isSponsored: false
            isPremier: false
            logoUrl: http://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/102215.gif
            isTestRestaurant: false
            deals:
              - description: 20% off when you spend £20
                offerType: Percent
            tags:
              - tried-and-tasted
            cuisines:
              - name: Chinese
                uniqueName: chinese
            availability:
              delivery:
                isOpen: false
                canPreOrder: true
                nextAvailability:
                  from: '2023-03-21T11:32:00'
                isTemporarilyOffline: false
              collection:
                isOpen: false
                canPreOrder: true
                nextAvailability:
                  from: '2023-03-21T12:00:00'
                isTemporarilyOffline: false
            activeBenefits:
              - unlimitedFreeDelivery
        deliveryFees:
          restaurants:
            '102215':
              restaurantId: '102215'
              minimumOrderValue: 1000
              bands:
                - minimumAmount: 1000
                  fee: 250
                - minimumAmount: 3000
                  fee: 0
        promotedPlacement:
          filteredSearchPromotedLimit: 5
          restaurants:
            '102215':
              restaurantId: '102215'
              defaultPromoted: true
          rankedIds:
            - 102215
        filters:
          chinese:
            displayName: Chinese
            imageName: chinese
            group: cuisine
            restaurantIds:
              - '102215'
          deals:
            displayName: Special Offers
            imageName: specials-offers
            group: offers
            restaurantIds:
              - '102215'
        layout:
          search-filters-1:
            type: list
            id: search-filters-1
            title: Filters
            contents:
              - type: filter
                id: chinese
                title: Chinese
              - type: filter
                id: deals
                title: Special Offers
          search-page:
            type: list
            id: search-page
            contents:
              - type: enrichedList
                id: superCarousel
                title: Check out these amazing restaurants
                contents:
                  - type: restaurant
                    id: '102215'
              - type: list
                id: open-restaurants
                title: '{count} open'
                contents:
                  - type: restaurant
                    id: '102215'
        enrichedLists:
          superCarousel:
            subTitle: No seriously, these are great
            trackingId: a0aca54f-24bb-4108-a2bf-d767b6ca6f2d
            focusedProperties:
              - deals
            linkId: deals
            linkType: filter
    DiscoveryRestaurantsLayoutItem:
      type: object
      properties:
        type:
          description: The type of layout item.
          type: string
          enum:
            - list
            - enrichedList
            - filter
            - restaurant
        id:
          description: The id of the layout item.
          type: string
        title:
          description: The title of the layout item.
          type: string
          nullable: true
        contents:
          description: The contents of the layout item.
          type: array
          items:
            $ref: '#/components/schemas/DiscoveryRestaurantsLayoutItem'
          nullable: true
    DiscoveryRestaurantsLocation:
      description: Location information in GeoJSON format.
      type: object
      nullable: true
      properties:
        type:
          description: The type of geometry.
          type: string
          enum:
            - Point
        coordinates:
          description: The coordinates of the location, the first element represents the longitude, the second the latitude.
          type: array
          items:
            format: double
            type: number
          minItems: 2
          maxItems: 2
    DiscoveryRestaurantsPromotedPlacement:
      description: Information related to promoted placement restaurants.
      type: object
      properties:
        filteredSearchPromotedLimit:
          description: How many restaurants were promoted by applying a filtered search.
          type: number
          minimum: 0
        rankedIds:
          description: Restaurants that can be promoted, in preferred order.
          type: array
          items:
            type: string
        restaurants:
          description: A dictionary of promoted restaurants.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/PromotedPlacementRestaurantPromotedPlacementInfo'
    DiscoveryRestaurantsServiceAvailability:
      description: Availability information for a service.
      type: object
      required:
        - isOpen
        - canPreOrder
        - isTemporarilyOffline
      properties:
        isOpen:
          description: True if the restaurant is open.
          type: boolean
        canPreOrder:
          description: True if the restaurant is accepting pre-orders.
          type: boolean
        nextAvailability:
          description: Information about next availability.
          type: object
          properties:
            from:
              $ref: '#/components/schemas/LocalDateTime'
        isTemporarilyOffline:
          description: True if the restaurant is temporarily offline.
          type: boolean
        etaMinutes:
          description: Estimate for the restaurant service completion times when ordered now.
          type: object
          properties:
            approximate:
              description: The approximate service completion time in minutes.
              type: integer
            rangeLower:
              description: The lower bound for service completion time in minutes.
              type: integer
            rangeUpper:
              description: The upper bound for service completion time in minutes.
              type: integer
    DiscoveryRestaurantsV3BannerItem:
      title: Banner Item
      type: object
      required:
        - source
        - type
        - title
        - theme
        - imageUrl
        - primaryAction
      properties:
        source:
          description: |
            The source of the banner. This is used by clients for tracking purposes.
            Known values:
              * `braze` - A braze campaign banner.
              * `displayAds` - A display ads campaign banner.
              * `config` - A configuration-driven banner which can be used as fallback if Braze fails.
          type: string
        type:
          description: |
            The type of the banner used for styling.
            Known values:
              * `slimBold` - Two lines of heading (title) + one line of subtext (message) or an action.
              * `slimCta` - One line of heading (title) + one action + optional one line of subtext (message).
              * `slimInfo` - One line of heading (title) + one / two lines of subtext (message).
              * `pastel` - Banner with larger image, taller card height & mandatory CTA button.
              * `tallAndWide` - Banner with wide image, taller card height & mandatory CTA button.
              * `shortAndWide` - Banner with wide image, shorter card height & mandatory CTA button.
          type: string
        title:
          description: The title for the banner.
          type: string
        message:
          description: The message for the banner.
          type: string
        theme:
          description: The theme style for the banner.
          type: string
        imageUrl:
          description: URL for the banner image.
          type: string
          format: uri
          deprecated: true
        imageUrlWide:
          description: Optional. URL for a wide-aspect banner image.
          type: string
          format: uri
          deprecated: true
        animationUrl:
          description: Optional. URL for the animated portrait asset.
          type: string
          format: uri
        animationUrlWide:
          description: Optional. URL for the animated landscape asset.
          type: string
          format: uri
        primaryAction:
          type: object
          $ref: '#/components/schemas/DiscoveryRestaurantsV3BannerItemAction'
        modal:
          description: Information about the modal for the banner.
          type: object
          required:
            - title
            - message
          properties:
            title:
              description: Title for the modal.
              type: string
            message:
              description: Message for the modal.
              type: string
            imageUrl:
              description: Image URL for the modal.
              type: string
              format: uri
            primaryAction:
              type: object
              $ref: '#/components/schemas/DiscoveryRestaurantsV3ModalItemAction'
            secondaryAction:
              type: object
              $ref: '#/components/schemas/DiscoveryRestaurantsV3ModalItemAction'
      x-examples:
        sliminfo_modal_no_secondary_cta:
          value:
            source: braze
            type: slimInfo
            title: Relax, delivery is on us
            message: Enjoy free pizza delivery and more… T&Cs apply
            theme: berry
            imageUrl: http://img.png
            primaryAction:
              text: Find out more
              targets:
                - type: modal
            modal:
              title: Dinner, delivered for free
              message: |-
                Want dinner without the hassle? You got it! Level up your evening with a tasty order from any pizza place, and we’ll treat you to free delivery* when you spend £15. It’s a win-win.

                *Participating stores only. Service charge applies. Ends 30 September. See just-eat.co.uk/info/Free-Delivery for full terms and site exclusions. T&Cs apply.
              imageUrl: http://img.png
              primaryAction:
                type: button
                text: Order Now
                targets:
                  - type: filter
                    value: free_delivery
        slimcta_no_modal:
          value:
            source: braze
            type: slimCta
            title: ¡Sin pedido no hay partido! ⚽
            message: Tu comida favorita al mejor precio
            theme: turmeric
            imageUrl: http://img.png
            primaryAction:
              text: Ver ofertas
              targets:
                - type: filter
                  value: with_discounts
        slimbold_no_modal_no_message_with_cta:
          value:
            source: braze
            type: slimBold
            title: 50% de dto. en farmacia
            theme: cupcake
            imageUrl: http://img.png
            primaryAction:
              text: Ver ofertas
              targets:
                - type: filter
                  value: SERP_CampaignId_12345
    DiscoveryRestaurantsV3BannerItemAction:
      title: Banner Item Action
      description: Action to be triggered.
      type: object
      required:
        - targets
      properties:
        text:
          description: The text to be displayed with the action.
          type: string
        targets:
          description: A list of targets for the action.
          type: array
          items:
            type: object
            required:
              - type
            properties:
              type:
                description: |
                  The type of action.
                  Known values:
                    * `modal` - Action to open the modal component of the banner. 
                    * `url` - Action to redirect users to any external URL to SERP (or menu).
                    * `filter` - Action to open search and apply a filter selection to it.
                    * `partnerMenu` - Action to open partner menu.
                    * `vertical` - Action to open search and apply a vertical selection to it.
                    * `copyCode` - Action to copy text to clipboard (e.g. a voucher code).
                type: string
              value:
                description: |
                  The value to be used with the action type specified.
                  Property requirement:
                    * `modal` - Unused.
                    * `url` - Mandatory.
                    * `filter` - Mandatory.
                    * `partnerMenu` - Mandatory.
                    * `vertical` - Mandatory.
                    * `copyCode` - Mandatory.
                type: string
        trackingInfo:
          type: object
          $ref: '#/components/schemas/DiscoveryRestaurantsV3BannerItemActionTrackingInfo'
    DiscoveryRestaurantsV3BannerItemActionTrackingInfo:
      title: Banner Item Action Tracking Information
      description: Tracking information for client applications.
      type: object
      properties:
        vertical:
          description: |
            The vertical used for the action.
          type: string
        filters:
          description: A list of filters used for the action.
          type: array
          items:
            type: string
        campaignName:
          description: |
            The campaign name used for the action.
          type: string
    DiscoveryRestaurantsV3CatalogueItem:
      title: Catalogue Item
      type: object
      required:
        - name
        - imageUrl
        - basePrice
        - partnerId
        - itemId
        - variationId
      properties:
        name:
          description: The display name of the item.
          type: string
        imageUrl:
          description: The url for the item's image.
          type: string
          format: uri
        basePrice:
          description: The price of the item in the smallest denomination.
          type: integer
          minimum: 0
        offers:
          description: Dictionary of offers available for the item. Omitted for Text Search catalogue items.
          type: object
          additionalProperties:
            x-additionalPropertiesName: offerId
            type: object
            required:
              - description
            properties:
              price:
                description: The discounted price of the item in the smallest denomination.
                type: integer
                minimum: 0
              description:
                description: The description of the offer.
                type: string
        partnerId:
          description: The identifier of the partner that stocks this item.
          type: string
        itemId:
          description: The identifier of the product item.
          type: string
        variationId:
          description: The identifier of the product variation.
          type: string
        deposit:
          description: Optional deposit information associated with the item.
          type: object
          properties:
            amount:
              description: The deposit amount in the smallest denomination.
              type: integer
              minimum: 0
            type:
              description: Whether the deposit is inclusive or exclusive of the item price.
              type: string
              enum:
                - inclusive
                - exclusive
        servings:
          description: The serving size information for the item.
          type: object
          required:
            - min
            - max
          properties:
            min:
              description: The minimum number of servings.
              type: integer
              minimum: 1
            max:
              description: The maximum number of servings.
              type: integer
              minimum: 1
        energyContent:
          description: Energy content values for the item, which may vary based on modifiers.
          type: array
          items:
            type: object
            required:
              - min
              - max
              - unit
            properties:
              min:
                description: The minimum energy value.
                type: integer
                minimum: 0
              max:
                description: The maximum energy value.
                type: integer
                minimum: 0
              unit:
                description: The unit of energy measurement (e.g. kJ).
                type: string
    DiscoveryRestaurantsV3EnrichedRestaurantItem:
      title: Enriched Restaurant
      type: object
      required:
        - id
        - name
        - uniqueName
        - partnerHeaderInfo
        - address
        - rating
        - isNew
        - openingTimeLocal
        - deliveryOpeningTimeLocal
        - isCollection
        - isDelivery
        - isOpenNowForCollection
        - isOpenNowForDelivery
        - isOpenNowForPreorder
        - isTemporarilyOffline
        - defaultDisplayRank
        - isTemporaryBoost
        - isPremier
        - isTestRestaurant
        - deals
        - tags
        - cuisines
        - availability
      properties:
        id:
          description: The id of the restaurant.
          type: string
        name:
          description: The display name of the restaurant.
          type: string
        uniqueName:
          description: The unique name of the restaurant, used to build the menu URL.
          type: string
        brandName:
          description: The brand of the partner.
          type: string
        address:
          description: The address of the restaurant.
          type: object
          properties:
            city:
              description: The city the restaurant is in.
              type: string
            firstLine:
              description: The first line of the restaurant's address.
              type: string
            postalCode:
              description: The postal code of the restaurant.
              type: string
            location:
              description: The location of the restaurant.
              $ref: '#/components/schemas/DiscoveryRestaurantsV3Location'
        rating:
          description: Rating details for the restaurant.
          type: object
          required:
            - count
            - starRating
          properties:
            count:
              description: How many ratings have been placed.
              type: number
              minimum: 0
            starRating:
              description: The rating as a star score.
              type: number
              minimum: 0
            userRating:
              description: The user rating score for the restaurant, if they have left a review.
              type: number
              minimum: 0
        isNew:
          description: True if the restaurant was recently added.
          type: boolean
        driveDistanceMeters:
          description: The distance to drive to the restaurant in meters, only included if the distance has been calculated.
          type: number
          minimum: 0
        openingTimeLocal:
          $ref: '#/components/schemas/LocalDateTime'
        deliveryOpeningTimeLocal:
          $ref: '#/components/schemas/LocalDateTime'
        deliveryEtaMinutes:
          description: Estimate for the restaurant delivery times.
          type: object
          properties:
            approximate:
              description: The approximate delivery time in minutes.
              type: number
            rangeLower:
              description: The earliest delivery time in minutes.
              type: number
            rangeUpper:
              description: The latest delivery time in minutes.
              type: number
        isCollection:
          description: True if the restaurant offers collection.
          type: boolean
        isDelivery:
          description: True if the restaurant offers delivery.
          type: boolean
        isOpenNowForCollection:
          description: True if the restaurant is open for collection now.
          type: boolean
        isOpenNowForDelivery:
          description: True if the restaurant is open for delivery now.
          type: boolean
        isOpenNowForPreorder:
          description: True if the restaurant is open for pre-orders now.
          type: boolean
        isTemporarilyOffline:
          description: True if the restaurant is offline temporarily.
          type: boolean
        defaultDisplayRank:
          description: The default ranking of this restaurant in this specific result.
          type: number
          minimum: 0
        isTemporaryBoost:
          description: True if the restaurant rank has been temporarily improved.
          type: boolean
        isPremier:
          description: True if the restaurant is a premier partner (otherwise known as a Local Legend in the UK).
          type: boolean
        logoUrl:
          description: URL of the restaurant's logo.
          type: string
        bannerUrl:
          description: '[Deprecated] Duplicates `partnerHeaderInfo.headerImages[0].urlTemplate`. Use `partnerHeaderInfo.headerImages` instead.'
          deprecated: true
          type: string
        partnerHeaderInfo:
          description: Header information for the partner (restaurant) including images and branding.
          type: object
          properties:
            headerImages:
              description: Array of header images for the partner.
              type: array
              items:
                type: object
                properties:
                  urlTemplate:
                    type: string
                    description: URL template that can be used to access the partner's (restaurant's) header image. The {transformations} placeholder can be replaced with additional Cloudinary transformations (e.g. height, width). For more details see https://cloudinary.com/documentation/image_transformations
                  altText:
                    type: string
                    description: Alternative text for the header image for accessibility purposes
                required:
                  - urlTemplate
              minItems: 1
          required:
            - headerImages
        isTestRestaurant:
          description: True if the restaurant is for testing.
          type: boolean
        deals:
          description: '[Deprecated] The offers available for the restaurant. Use offers at the root level instead of this property.'
          deprecated: true
          type: array
          items:
            type: object
            required:
              - description
              - offerType
            properties:
              description:
                description: Description of the offer. e.g. Cheeky Tuesday - 20% off when you spend £15
                type: string
              offerType:
                description: 'The type of offer, currently supported types are: `Percent`, `FreeItem`, `Bogof`, `StampCard`, `BogofMixMatch` and `Notification`.'
                type: string
        tags:
          description: The tags for the restaurant, more details can be found in `metaData.tagDetails`.
          type: array
          items:
            type: string
        cuisines:
          description: The cuisines for the restaurant.
          type: array
          items:
            type: object
            required:
              - name
              - uniqueName
            properties:
              name:
                description: The display name of the cuisine.
                type: string
              uniqueName:
                description: The unique name of the cuisine, used to look up more details from `metaData.cuisineDetails`.
                type: string
        availability:
          $ref: '#/components/schemas/DiscoveryRestaurantsAvailability'
        activeBenefits:
          $ref: '#/components/schemas/DiscoveryRestaurantsActiveBenefits'
    DiscoveryRestaurantsV3EnrichedRestaurantsResponse:
      type: object
      required:
        - metaData
        - restaurants
        - filters
        - defaultLayout
        - enrichedLists
        - banners
      properties:
        metaData:
          description: Additional data about the search results.
          type: object
          required:
            - cuisineDetails
            - resultCount
            - tagDetails
            - state
          properties:
            canonicalName:
              description: The canonical name for the search location, can be used to build a URL for this general location.
              type: string
            district:
              description: The outward code (for postcode based searches) or district (for latitude-longitude based searches) of the search location.
              type: string
            postalCode:
              description: The postcode (for postcode based searches) or district (for latitude-longitude based searches) of the search location.
              type: string
            area:
              description: The area (for postcode based searches) or district name (for latitude-longitude based searches) of the search location.
              type: string
            location:
              $ref: '#/components/schemas/DiscoveryRestaurantsV3Location'
            cuisineDetails:
              description: A collection of cuisines that are relevant for this search.
              type: array
              items:
                type: object
                properties:
                  name:
                    description: The display name of the cuisine.
                    type: string
                  uniqueName:
                    description: The unique name of the cuisine, primarily used for including in the URL, filtering and locating cuisine images.
                    type: string
                  count:
                    description: The number of restaurants with this cuisine.
                    type: integer
            resultCount:
              description: The number of restaurants for this search.
              type: integer
            tagDetails:
              description: A collection of tags that are relevant for this search result.
              type: array
              items:
                type: object
                required:
                  - displayName
                  - key
                  - priority
                properties:
                  displayName:
                    description: The display name of the tag.
                    type: string
                  key:
                    description: The key of the tag.
                    type: string
                  priority:
                    description: The priority of the tag.
                    type: integer
            deliveryArea:
              description: The outward code (for postcode based searches) or district (for latitude-longitude based searches) of the search location.
              type: string
            baseCustomerSegment:
              description: |
                A number representing the requesting customer's segment.
                Known values:
                  * 0 - Prospect
                  * 1 - New
                  * 2 - Early
                  * 3 - Engaged
                  * 4 - Reactivated
                  * 5 - Lapsing
                  * 6 - Dormant
                  * 7 - Churned
              type: number
            currency:
              description: Three-letter currency code for the entire Search response, as defined by the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard (e.g., USD, EUR, GBP)
              type: string
              example: EUR
            state:
              description: An object representing the request state, in terms of filter, vertical, sorting selection and text search query.
              type: object
              required:
                - sortBy
              properties:
                filters:
                  description: An array of filters that have been applied to the response.
                  type: array
                  items:
                    type: string
                    description: A filter ID that has been applied to the response.
                vertical:
                  type: string
                  description: A vertical ID that has been applied to the response.
                sortBy:
                  $ref: '#/components/schemas/DiscoverySortBy'
                  description: The ID of the sort type that has been applied to the response. If no valid sort type has been supplied in the request, the best match sorting type will always be used and returned in this field.
                searchTerm:
                  type: string
                  description: The search term that has been applied to the response.
        restaurants:
          description: A ranked collection of restaurants.
          type: array
          items:
            $ref: '#/components/schemas/DiscoveryRestaurantsV3EnrichedRestaurantItem'
        deliveryFees:
          description: Information related to delivery fees.
          type: object
          required:
            - restaurants
          properties:
            restaurants:
              description: A dictionary of restaurant delivery fees.
              type: object
              additionalProperties:
                x-additionalPropertiesName: restaurant id
                type: object
                properties:
                  restaurantId:
                    description: The identifier of the restaurant.
                    type: string
                  minimumOrderValue:
                    description: The minimum order value (excluding fees) required, in the smallest unit of the currency specified in the root `metadata.currency` property. (e.g. for GBP this will be pence).
                    type: number
                  bands:
                    description: Collection of delivery fee bands.
                    type: array
                    items:
                      type: object
                      properties:
                        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 the currency specified in the root `metadata.currency` property. (e.g. for GBP this will be pence).
                          type: number
                        fee:
                          description: The delivery fee, in the smallest unit of the currency specified in the root `metadata.currency` property. (e.g. for GBP this will be pence).
                          type: number
        promotedPlacement:
          description: Information related to promoted placement restaurants.
          type: object
          required:
            - filteredSearchPromotedLimit
            - rankedIds
            - restaurants
          properties:
            filteredSearchPromotedLimit:
              description: How many restaurants were promoted by applying a filtered search.
              type: number
              minimum: 0
            rankedIds:
              description: Restaurants that can be promoted, in preferred order.
              type: array
              items:
                type: string
            restaurants:
              description: A dictionary of promoted restaurants.
              type: object
              additionalProperties:
                x-additionalPropertiesName: restaurant id
                type: object
                required:
                  - restaurantId
                  - defaultPromoted
                properties:
                  restaurantId:
                    description: Id of the restaurant.
                    type: string
                  defaultPromoted:
                    description: Should be promoted by default.
                    type: boolean
        filters:
          description: A dictionary of pre-calculated filters for this search.
          type: object
          additionalProperties:
            x-additionalPropertiesName: filter id
            type: object
            required:
              - displayName
              - restaurantIds
              - imageName
            properties:
              displayName:
                description: The display name for the filter.
                type: string
              imageName:
                description: The image name of the filter, which should be used when retrieving imagery for the filter.
                type: string
              group:
                description: Used to determine how to combine multiple selected filters. OR filters from the same group, AND from different groups. e.g. cuisine OR cuisine AND offer.
                type: string
              restaurantIds:
                description: The list of restaurant ids that match this filter.
                type: array
                items:
                  type: string
              trackingType:
                description: An opaque value used for analytics.
                type: string
        defaultLayout:
          description: The recommended filters and verticals to display for this search.
          type: object
          required:
            - refineFilters
            - verticals
            - sortOptions
          properties:
            refineFilters:
              description: An ordered list of filter ids to be included as refine filters.
              type: array
              items:
                type: string
            sortOptions:
              description: An ordered list of sorting options.
              type: array
              items:
                type: object
                required:
                  - displayName
                  - id
                properties:
                  displayName:
                    description: The display name of the sorting option.
                    type: string
                  id:
                    description: The id of the sorting option.
                    $ref: '#/components/schemas/DiscoverySortBy'
                  trackingId:
                    description: The (optional) tracking id of the sorting option.
                    type: string
            verticals:
              description: An ordered list of verticals for this search.
              type: array
              items:
                type: object
                required:
                  - type
                  - id
                  - title
                  - contents
                  - applicableFilters
                properties:
                  type:
                    description: The type of layout item.
                    type: string
                    enum:
                      - vertical
                  id:
                    description: The id of the vertical.
                    type: string
                  title:
                    description: The title of the vertical.
                    type: string
                  contents:
                    description: The initial, unfiltered, best match layout for this vertical. Unknown items should be ignored.
                    type: array
                    items:
                      anyOf:
                        - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutListItem'
                        - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutEnrichedListItem'
                        - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutCarouselItem'
                        - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutWebViewItem'
                        - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutRestaurantItem'
                        - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutExperimentExposureItem'
                  applicableFilters:
                    description: An ordered list of filter ids that are specific to the vertical.
                    type: array
                    items:
                      type: string
                  hidden:
                    description: A flag to indicate that the vertical should not be included in any navigation
                    type: boolean
                  heroImageUrl:
                    description: URL template that can be used to access the vertical's hero image. The {transformations} placeholder can be replaced with additional Cloudinary transformations (e.g. height, width). For more details see https://cloudinary.com/documentation/image_transformations
                    type: string
                    format: uri
                  subType:
                    description: The subtype of the vertical. Unknown subtypes should be ignored.
                    type: string
                    enum:
                      - landing
                      - verticalLanding
                      - webview
                      - discoveryPage
                  ref:
                    description: A reference to the webview template URL. Present when subType is "webview".
                    type: string
                    format: uri
                  header:
                    description: |
                      An optional header rendered at the top of the vertical. Present for campaign landing verticals (subType `discoveryPage`).
                    type: object
                    required:
                      - type
                      - id
                      - ref
                      - data
                    properties:
                      type:
                        description: The type of the header. Always "webview".
                        type: string
                        enum:
                          - webview
                      id:
                        description: The ID of the webview used for the header.
                        type: string
                      ref:
                        description: A reference to the underlying content source.
                        type: string
                      data:
                        description: The payload consumed by the header webview at `ref`.
                        type: object
                        additionalProperties: true
                      backgroundColour:
                        description: The background colour for the header, expressed as a hex colour code.
                        type: string
                        example: '#f0c24d'
        enrichedLists:
          description: A dictionary to store extra details for enriched lists used in any layouts.
          type: object
          additionalProperties:
            x-additionalPropertiesName: enriched list id
            type: object
            properties:
              subtitle:
                description: The subtitle for the enriched list.
                type: string
              trackingId:
                description: The tracking id for the enriched list, used to identify what generated the enriched list.
                type: string
        catalogueItems:
          description: A dictionary to store extra details for catalogue items used in any layouts.
          type: object
          additionalProperties:
            x-additionalPropertiesName: catalogueItemId
            $ref: '#/components/schemas/DiscoveryRestaurantsV3CatalogueItem'
        banners:
          description: A dictionary to store extra details for banners used in any layouts.
          type: object
          additionalProperties:
            x-additionalPropertiesName: Banner id
            $ref: '#/components/schemas/DiscoveryRestaurantsV3BannerItem'
        offers:
          description: Information related to restaurant offers.
          type: object
          required:
            - restaurants
          properties:
            restaurants:
              description: A dictionary of restaurant offers.
              type: object
              additionalProperties:
                x-additionalPropertiesName: restaurant id
                type: object
                properties:
                  featured:
                    description: An ordered list of offers representing the first offer of each `offerType`.
                    type: array
                    items:
                      type: object
                      required:
                        - offerType
                      properties:
                        description:
                          description: Description of the offer. e.g. `Cheeky Tuesday - 20% off when you spend £15`
                          type: string
                        offerType:
                          description: The type of offer. Currently supported types are `Percent`, `FreeItem`, `Bogof`, `StampCard`, `BogofMixMatch` and `Notification`.
                          type: string
                        exclusive:
                          description: If the offer is exclusive to the requested customer.
                          type: boolean
                  reward:
                    description: A localised reward tag for the restaurant. Omitted when no reward tag is available.
                    type: object
                    required:
                      - description
                      - rewardType
                    properties:
                      description:
                        description: Fully localised reward text that clients must render verbatim.
                        type: string
                      rewardType:
                        description: The type of reward.
                        type: string
                        enum:
                          - ReorderRewards
                          - StampCard
        sponsored:
          type: object
          description: Sponsored campaign data, keyed by vertical ID.
          additionalProperties:
            x-additionalPropertiesName: vertical id
            type: object
            properties:
              lists:
                type: object
                description: Sponsored campaign IDs, keyed by restaurant ID for this vertical.
                additionalProperties:
                  x-additionalPropertiesName: restaurant id
                  type: string
              carousels:
                type: object
                description: Sponsored campaign data, keyed by carousel ID in this vertical.
                additionalProperties:
                  x-additionalPropertiesName: carousel id
                  type: object
                  description: Sponsored campaign IDs, keyed by restaurant ID for this vertical and carousel.
                  additionalProperties:
                    x-additionalPropertiesName: restaurant id
                    type: string
              listAuctionIds:
                type: object
                description: Contains the mapping from restaurant ID to auction ID.
                additionalProperties:
                  x-additionalPropertiesName: restaurant id
                  description: This is the resolve bid ID from Top sort, keyed by restaurant ID for this vertical and list. This identifies a partner's participation in a given auction.
                  type: string
              carouselAuctionIds:
                type: object
                description: Sponsored campaign data, keyed by carousel ID in this vertical.
                additionalProperties:
                  x-additionalPropertiesName: carousel id
                  type: object
                  additionalProperties:
                    description: This is the resolve bid ID from Top sort, keyed by restaurant ID for this vertical and carousel. This identifies a partner's participation in a given auction.
                    x-additionalPropertiesName: restaurant id
                    type: string
        auctions:
          description: A dictionary of sponsored verticals and related tracking information.
          type: object
          additionalProperties:
            x-additionalPropertiesName: verticalId
            type: object
            description: A dictionary of restaurants and their related auction id.
            additionalProperties:
              x-additionalPropertiesName: restaurantId
              type: string
        favourites:
          description: Information about the user's favourites.
          type: object
          properties:
            restaurants:
              description: An array of restaurant IDs that the user has marked as favourites. This will be an empty array if the user has no favourites or is not authenticated. This property will be omitted if favourites are unavailable.
              type: array
              items:
                type: string
            hasAnyPartnerFavourites:
              description: Indicates whether the user has any partner favourites saved globally, regardless of current search context. Omitted if favourites are unavailable or user is not authenticated.
              type: boolean
        componentThemes:
          description: A dictionary of theme IDs and related styling detail.
          type: object
          additionalProperties:
            x-additionalPropertiesName: themeId
            type: object
            description: Contains 'light' and 'dark' variants for theme.
            properties:
              light:
                $ref: '#/components/schemas/DiscoveryRestaurantsV3ThemeVariant'
              dark:
                $ref: '#/components/schemas/DiscoveryRestaurantsV3ThemeVariant'
      example:
        metaData:
          canonicalName: bs37-bristol
          district: BS37
          postalCode: BS376NG
          area: Bristol
          location:
            type: Point
            coordinates:
              - -2.358783
              - 51.530041
          cuisineDetails:
            - name: Pizza
              uniqueName: pizza
              count: 5
            - name: Collect stamps
              uniqueName: stampcard-restaurants
              count: 3
            - name: Chicken
              uniqueName: chicken
              count: 2
            - name: Burgers
              uniqueName: burgers
              count: 2
            - name: Low Delivery Fee
              uniqueName: low-delivery-fee
              count: 1
          resultCount: 9
          tagDetails:
            - displayName: Tried and Tasted
              key: tried-and-tasted
              priority: 300
          deliveryArea: BS37
          baseCustomerSegment: 0
          currency: GBP
          state:
            filters:
              - burgers
              - kebabs
            vertical: groceries
            sortBy: bestMatch
            searchTerm: fish and chips
        restaurants:
          - id: '112549'
            name: Tasty Burger
            uniqueName: tasty-burger-bristol
            brandName: Tasty B
            address:
              city: Bristol
              firstLine: 137 Station Road
              postalCode: BS15 4XX
              location:
                type: Point
                coordinates:
                  - -2.492622
                  - 51.47462
            rating:
              count: 340
              starRating: 4
            isNew: false
            driveDistanceMeters: 11104
            openingTimeLocal: '2023-05-25T15:10:00'
            deliveryOpeningTimeLocal: '2023-05-24T16:10:00'
            deliveryEtaMinutes:
              rangeLower: 30
              rangeUpper: 45
            isCollection: true
            isDelivery: true
            isOpenNowForCollection: true
            isOpenNowForDelivery: true
            isOpenNowForPreorder: false
            isTemporarilyOffline: false
            defaultDisplayRank: 1
            isTemporaryBoost: false
            isPremier: false
            logoUrl: http://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/112549.gif
            bannerUrl: https://just-eat-staging-eu-res.cloudinary.com/image/upload/{transformations}/v1/uk/restaurants/112549
            partnerHeaderInfo:
              headerImages:
                - urlTemplate: https://just-eat-staging-eu-res.cloudinary.com/image/upload/{transformations}/v1/uk/restaurants/112549
                  altText: 20% Off
            isTestRestaurant: false
            deals:
              - description: Save with an exclusive meal deal
                offerType: Notification
            tags:
              - tried-and-tasted
            cuisines:
              - name: Burgers
                uniqueName: burgers
              - name: Chicken
                uniqueName: chicken
              - name: Collect stamps
                uniqueName: stampcard-restaurants
            availability:
              delivery:
                isOpen: false
                canPreOrder: true
                nextAvailability:
                  from: '2023-03-21T11:32:00'
                isTemporarilyOffline: false
              collection:
                isOpen: false
                canPreOrder: true
                nextAvailability:
                  from: '2023-03-21T12:00:00'
                isTemporarilyOffline: false
            activeBenefits:
              - unlimitedFreeDelivery
          - id: '170205'
            name: Best Grill
            uniqueName: best-grill-bristol
            address:
              city: Bristol
              firstLine: |-
                33 Cranleigh Court Road
                Yate
              postalCode: BS37 5DQ
              location:
                type: Point
                coordinates:
                  - -2.424934
                  - 51.541969
            rating:
              count: 61
              starRating: 4.1
            isNew: false
            driveDistanceMeters: 4828
            openingTimeLocal: '2023-05-24T17:20:00'
            deliveryOpeningTimeLocal: '2023-05-24T17:45:00'
            deliveryEtaMinutes:
              rangeLower: 35
              rangeUpper: 50
            isCollection: true
            isDelivery: true
            isOpenNowForCollection: false
            isOpenNowForDelivery: false
            isOpenNowForPreorder: true
            isTemporarilyOffline: false
            defaultDisplayRank: 4
            isTemporaryBoost: false
            isPremier: false
            bannerUrl: https://just-eat-staging-eu-res.cloudinary.com/image/upload/{transformations}/v1/uk/restaurants/170205
            partnerHeaderInfo:
              headerImages:
                - urlTemplate: https://just-eat-staging-eu-res.cloudinary.com/image/upload/{transformations}/v1/uk/restaurants/170205
            isTestRestaurant: false
            deals: []
            tags:
              - collection
              - free_delivery
              - with_discounts
              - fsa
              - low-delivery-fee
            cuisines:
              - name: Pizza
                uniqueName: pizza
              - name: Burgers
                uniqueName: burgers
              - name: Low Delivery Fee
                uniqueName: low-delivery-fee
            availability:
              delivery:
                isOpen: false
                canPreOrder: true
                nextAvailability:
                  from: '2023-03-21T11:32:00'
                isTemporarilyOffline: false
              collection:
                isOpen: false
                canPreOrder: true
                nextAvailability:
                  from: '2023-03-21T12:00:00'
                isTemporarilyOffline: false
        deliveryFees:
          restaurants:
            '112549':
              restaurantId: '112549'
              minimumOrderValue: 2000
              bands:
                - minimumAmount: 2000
                  fee: 200
            '170205':
              restaurantId: '170205'
              minimumOrderValue: 1500
              bands:
                - minimumAmount: 1500
                  fee: 200
        promotedPlacement:
          filteredSearchPromotedLimit: 2
          rankedIds: []
          restaurants: {}
        filters:
          pizza:
            displayName: Pizza
            group: cuisine
            imageName: pizza
            restaurantIds:
              - '170205'
            trackingType: cuisine
          chicken:
            displayName: Chicken
            group: cuisine
            imageName: chicken
            restaurantIds:
              - '112549'
            trackingType: cuisine
          burgers:
            displayName: Burgers
            group: cuisine
            imageName: burgers
            restaurantIds:
              - '112549'
              - '170205'
            trackingType: cuisine
          stampcard-restaurants:
            displayName: Collect stamps
            group: cuisine
            imageName: collect-stamps
            restaurantIds:
              - '112549'
            trackingType: refine
          low-delivery-fee:
            displayName: Low Delivery Fee
            group: cuisine
            imageName: low-delivery-fee
            restaurantIds:
              - '170205'
            trackingType: refine
          halal:
            displayName: Halal
            group: halal
            imageName: halal
            restaurantIds: []
            trackingType: refine
          collection:
            displayName: Collection
            imageName: collection
            restaurantIds:
              - '112549'
              - '170205'
            trackingType: refine
          four_star:
            displayName: 4+ stars
            imageName: 4-stars
            restaurantIds: []
            trackingType: refine
          free_delivery:
            displayName: Free Delivery
            imageName: free-delivery
            restaurantIds:
              - '170205'
            trackingType: refine
          with_discounts:
            displayName: Special offers
            imageName: special-offers
            restaurantIds:
              - '112549'
              - '170205'
            trackingType: refine
          open_now:
            displayName: Open Now
            imageName: open-now
            restaurantIds:
              - '112549'
            trackingType: refine
          fsa:
            displayName: Hygiene Rating 3+ / Pass
            imageName: hygiene-rating
            restaurantIds:
              - '112549'
              - '170205'
            trackingType: refine
        defaultLayout:
          refineFilters:
            - with_discounts
            - free_delivery
            - four_star
            - open_now
            - collection
            - halal
            - fsa
          sortOptions:
            - displayName: Best match
              id: bestMatch
              trackingId: best_match
            - displayName: Customer rating
              id: reviewRating
              trackingId: rating
            - displayName: Nearest first
              id: distance
              trackingId: distance
          verticals:
            - type: vertical
              id: restaurant-vertical
              title: Restaurants
              applicableFilters:
                - burgers
                - chicken
                - stampcard-restaurants
                - low-delivery-fee
              contents:
                - type: enrichedList
                  id: BrandsLocalised
                  title: Popular Brands
                  contents:
                    - type: restaurant
                      id: '112549'
                - type: restaurant
                  id: '112550'
                  title: Co-op - Nearby
                  contents:
                    - type: catalogueItem
                      id: '111892'
                      offerId: '12345'
                    - type: catalogueItem
                      id: '111893'
                - type: list
                  id: open-restaurants
                  title: Open now
                  contents:
                    - type: restaurant
                      id: '112549'
                - type: list
                  id: preorder-restaurants
                  title: Order for later
                  contents:
                    - type: restaurant
                      id: '170205'
                  focusedProperties:
                    - preorder
                - type: webview
                  id: trending-searches
                  ref: https://example.com/webviews/trending-searches.html
                  data:
                    container:
                      content:
                        title: Trending searches near you
                    pill0:
                      content:
                        text: Pizza
                      actions:
                        - type: url
                          value: https://www.just-eat.co.uk/area/bs1-bristol?q=Fish+and+Chips&preferExistingLocation=true&serviceType=any
                - type: webview
                  subType: module
                  id: carousel-component-treat-yourself-uk-bristol
                  ref: https://example.com/search-webviews/static/merch-module.html
                  trackingId: 019ce46a-a45d-7531-9d52-f9ccc699243b
                  data:
                    layout:
                      type: merchList
                      id: carousel-component-treat-yourself-uk-bristol
                      title: Treat Yourself
                      titleLine2: again
                      subtitle: Dining out, delivered
                      theme: turmeric
                      image:
                        narrowUrl: https://just-eat-prod-eu-res.cloudinary.com/image/upload/v1778581488/Experiments/missionuk%20assets/img-sushi-yellow.png
                        wideUrl: https://just-eat-prod-eu-res.cloudinary.com/image/upload/v1778581487/Experiments/missionuk%20assets/img-lrg-sushi-yellow.png
                      contents:
                        - type: partnerCard
                          id: '888777'
                          subType: tile
            - type: vertical
              id: groceries-vertical
              title: Groceries
              applicableFilters: []
              contents: []
            - type: vertical
              id: shops-vertical
              title: Shops
              applicableFilters: []
              contents: []
            - type: vertical
              id: landingVertical
              title: Landing Example Vertical
              applicableFilters: []
              contents:
                - type: list
                  id: open-landingVertical
                  title: Example title
                  contents:
                    - type: restaurant
                      id: '112549'
              hidden: false
              heroImageUrl: https://res.cloudinary.com/tkwy-prod-eu/image/upload/%7Btransformations%7D/v1743575277/example.jpg
              subType: landing
            - type: vertical
              id: webviewVertical
              title: Webview Example Vertical
              applicableFilters: []
              contents: []
              subType: webview
              ref: https://www.just-eat.co.uk/search-webviews/static/mission-offers-public.html
            - type: vertical
              subType: discoveryPage
              id: 019e26d6-7bca-74f0-acfa-4b40d56c9e3c
              title: Order from 40 places
              applicableFilters: []
              contents:
                - type: list
                  id: 019e26d6-7bca-74f0-acfa-4b40d56c9e3c-open
                  title: Order from 40 places
                  contents:
                    - type: restaurant
                      id: '112549'
              hidden: true
              header:
                type: webview
                id: 019e26d6-7bca-74f0-acfa-4b40d56c9e3c
                ref: https://www.just-eat.co.uk/search-webviews/static/web-to-app-public.html
                data:
                  container:
                    content:
                      image: https://just-eat-prod-eu-res.cloudinary.com/image/upload/v1779288800/Experiments/missionuk%20assets/img-seq-carousel-poke.png
                      image_wide: https://just-eat-prod-eu-res.cloudinary.com/image/upload/v1770899170/uk/dishes/commercial/img-lrg-poke.png
                      background: '#f0c24d'
                      title: 'App exclusive: Save £30'
                      hero_text: £10
                    contentLanguage: en
                    marketLanguage: en
                    countryCode: GB
                  subtitle:
                    content:
                      part1_text: £10 off your first three orders. £15 min. spend. New customers only.
                      part1_type: normal
                    contentLanguage: en
                    marketLanguage: en
                    countryCode: GB
                backgroundColour: '#f0c24d'
        enrichedLists: {}
        catalogueItems:
          '111892':
            name: Milk
            imageUrl: https://res.cloudinary.com/tkwy-prod-eu/image/upload/%7Btransformations%7D/v1743575277/example.jpg
            basePrice: 100
            partnerId: '112550'
            itemId: item-111892
            variationId: var-111892
            deposit:
              amount: 19
              type: inclusive
            servings:
              min: 5
              max: 10
            energyContent:
              - unit: kcal
                min: 1000
                max: 1500
              - unit: kJ
                min: 4184
                max: 6276
            offers:
              '12345':
                price: 50
                description: 50% off
              '12346':
                price: 70
                description: 30p off
              '12347':
                description: BOGOF Milk madness
          '111893':
            name: Cheese
            imageUrl: https://res.cloudinary.com/tkwy-prod-eu/image/upload/%7Btransformations%7D/v1743575277/example.jpg
            basePrice: 200
            partnerId: '112550'
            itemId: item-111893
            variationId: var-111893
        banners:
          display-ad-banner:
            source: displayAds
            type: pastel
            title: Ben & Jerrys
            theme: cupcake
            imageUrl: https://res.cloudinary.com/tkwy-prod-eu/image/upload/%7Btransformations%7D/v1743575277/example.jpg
            primaryAction:
              text: Display ads action text
              targets:
                - type: vertical
                  value: all
              trackingInfo:
                vertical: all
        offers:
          restaurants:
            '112549':
              featured:
                - description: Save 10% • Spend £30
                  offerType: Percent
                  exclusive: false
              reward:
                description: £5.00 off
                rewardType: ReorderRewards
        sponsored:
          all:
            lists:
              '112549': 38730586-fd73-484c-a512-dfe4a679b97d
            carousels:
              BrandsLocalised:
                '112549': 4aa01253-2101-4b4e-a3dd-39f0f008097e
            listAuctionIds:
              '112549': cb344bc6-4e0d-4862-9177-b80ede631102
            carouselAuctionIds:
              BrandsLocalised:
                '112549': 160dd91e-872b-4350-a1d0-5f153cf2a23d
        auctions:
          landingVertical:
            restaurantId: auctionId
        favourites:
          restaurants:
            - '12345'
            - '67890'
            - '11223'
          hasAnyPartnerFavourites: true
        componentThemes:
          berry:
            light:
              primary: '#fadbdf'
              secondary: '#242e30'
              accent: '#fff'
              bgColor: '#98696f'
              textColor: '#fff'
              buttonColor: '#fff'
            dark:
              primary: '#98696f'
              secondary: '#242e30'
              accent: '#fff'
              bgColor: '#98696f'
              textColor: '#fff'
              buttonColor: '#fff'
          cupcake:
            light:
              primary: '#98696f'
              secondary: '#242e30'
              accent: '#fff'
              borderColor: '#e0ecee'
            dark:
              primary: '#98696f'
              secondary: '#242e30'
              accent: '#fff'
              borderColor: '#e0ecee'
    DiscoveryRestaurantsV3LayoutBannerItem:
      title: Banner
      type: object
      required:
        - type
        - id
      properties:
        type:
          description: The type of layout item.
          type: string
          enum:
            - banner
        id:
          description: The id of the carousel banner.
          type: string
    DiscoveryRestaurantsV3LayoutCarouselItem:
      title: Carousel
      type: object
      required:
        - type
        - subType
        - id
        - contents
      properties:
        type:
          description: The type of layout item.
          type: string
          enum:
            - carousel
        subType:
          description: |
            The subtype of carousel. Unknown subtypes should be ignored.
            Known values:
              * `banner` - A banner styled carousel.
          type: string
        id:
          description: The id of the carousel.
          type: string
        title:
          description: The title of the carousel.
          type: string
        contents:
          description: The contents of the carousel. Unknown items should be ignored.
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutBannerItem'
    DiscoveryRestaurantsV3LayoutCatalogueItem:
      title: Catalogue Item
      type: object
      required:
        - type
        - id
      properties:
        type:
          description: The type of layout item.
          type: string
          enum:
            - catalogueItem
        id:
          description: The id of the carousel catalogue item.
          type: string
        offerId:
          description: The offer id of the carousel catalogue item.
          type: string
    DiscoveryRestaurantsV3LayoutEnrichedListItem:
      title: Enriched List
      type: object
      required:
        - type
        - id
        - contents
      properties:
        type:
          description: The type of layout item.
          type: string
          enum:
            - enrichedList
        id:
          description: The id of the enriched list.
          type: string
        title:
          description: The title of the enriched list.
          type: string
        contents:
          description: The contents of the enriched list. Unknown items should be ignored.
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutRestaurantItem'
        focusedProperties:
          description: A collection of properties that are relevant for this enriched list, for example ETAs, delivery cost. Can be used to present different restaurant data if required.
          type: array
          items:
            type: string
    DiscoveryRestaurantsV3LayoutExperimentExposureItem:
      title: ExperimentExposure
      type: object
      required:
        - type
        - id
      properties:
        type:
          description: The type of layout item.
          type: string
          enum:
            - exposure
        id:
          description: The identifier of the layout item, for example, the experiment key.
          type: string
    DiscoveryRestaurantsV3LayoutListItem:
      title: List
      type: object
      required:
        - type
        - id
        - contents
      properties:
        type:
          description: The type of layout item.
          type: string
          enum:
            - list
        id:
          description: The id of the list.
          type: string
        title:
          description: The title of the list.
          type: string
        contents:
          description: The contents of the list. Unknown items should be ignored.
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutRestaurantItem'
              - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutEnrichedListItem'
        focusedProperties:
          description: A collection of properties that are relevant for this list, for example pre-order, closed, groceries. Can be used to present the list differently or present different restaurant data if required.
          type: array
          items:
            type: string
    DiscoveryRestaurantsV3LayoutMerchModuleItem:
      title: Merchandising Module
      type: object
      description: |
        A merchandising module — a self-service-configured layout item rendered through
        a webview at `ref`.
      required:
        - type
        - subType
        - id
        - ref
        - data
      properties:
        type:
          description: |
            The type of layout item.
            Known values:
              * `webview` - Rendered through a webview at `ref`.
          type: string
          enum:
            - webview
        subType:
          description: Discriminator value identifying this as a merchandising module.
          type: string
          enum:
            - module
        id:
          description: The identifier of the merchandising module instance.
          type: string
        ref:
          description: A reference to the underlying content source (internal key or absolute URL).
          type: string
        trackingId:
          description: The tracking id for the webview, used to identify what generated the webview.
          type: string
        data:
          description: The payload consumed by the merchandising module webview at `ref`.
          type: object
          additionalProperties: true
    DiscoveryRestaurantsV3LayoutPromotionItem:
      title: Promotion
      type: object
      description: |
        A layout item used to surface a reusable block of promotional content rendered
        through a webview (e.g. sequential offers takeover, mission offers, voucher
        program takeovers). The payload is a dictionary of components keyed by component
        id, consumed by the webview template at `ref`.
      required:
        - type
        - id
        - ref
      properties:
        type:
          description: The type of layout item.
          type: string
          enum:
            - webview
        subType:
          description: |
            Discriminator value identifying this as a promotional webview. Optional —
            existing responses may omit it for backwards compatibility.
          type: string
          enum:
            - promotion
        id:
          description: The identifier of the item.
          type: string
        ref:
          description: A reference to the underlying content source (internal key or absolute URL).
          type: string
        trackingId:
          description: The tracking id for the webview, used to identify what generated the webview.
          type: string
        data:
          description: A dictionary of components for this item keyed by component id.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/DiscoveryRestaurantsV3WebviewComponent'
        voucherProgramId:
          description: Optional. The identifier of the voucher program if this web view is associated with a voucher program.
          type: string
        voucherProgramSequence:
          description: Optional. The sequence number of the voucher program if this web view is associated with a voucher program. This can be used to determine the order of web views within a voucher program.
          type: integer
    DiscoveryRestaurantsV3LayoutRestaurantItem:
      title: Restaurant
      type: object
      required:
        - type
        - id
      properties:
        type:
          description: The type of layout item.
          type: string
          enum:
            - restaurant
        id:
          description: The id of the restaurant.
          type: string
        title:
          description: An optional piece of text to display instead of the restaurant name.
        contents:
          description: A list of items for the restaurant. Unknown items should be ignored.
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutCatalogueItem'
    DiscoveryRestaurantsV3LayoutWebViewItem:
      title: WebView
      type: object
      description: A layout item used to surface a reusable block of dynamic content.
      required:
        - type
      properties:
        type:
          description: The type of layout item.
          type: string
          enum:
            - webview
      oneOf:
        - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutMerchModuleItem'
        - $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutPromotionItem'
      discriminator:
        propertyName: subType
        mapping:
          module: '#/components/schemas/DiscoveryRestaurantsV3LayoutMerchModuleItem'
          promotion: '#/components/schemas/DiscoveryRestaurantsV3LayoutPromotionItem'
    DiscoveryRestaurantsV3Location:
      title: Location
      description: Location information in GeoJSON format.
      type: object
      required:
        - type
        - coordinates
      properties:
        type:
          description: The type of geometry.
          type: string
          enum:
            - Point
        coordinates:
          description: The coordinates of the location, the first element represents the longitude, the second the latitude.
          type: array
          items:
            type: number
          minItems: 2
          maxItems: 2
    DiscoveryRestaurantsV3ModalItemAction:
      title: Modal Item Action
      description: Action to be triggered within the modal.
      type: object
      required:
        - type
        - text
        - targets
      properties:
        type:
          description: |
            The type of action item.
            Known values:
              * `button` - Button styled action. 
              * `link` - Link styled action.
          type: string
        text:
          description: The text to be displayed with the action.
          type: string
        targets:
          description: A list of targets for the action.
          type: array
          items:
            type: object
            required:
              - type
              - value
            properties:
              type:
                description: |
                  The type of action.
                  Known values:
                    * `url` - Action to redirect users to any external URL to SERP (or menu).
                    * `filter` - Action to open search and apply a filter selection to it.
                    * `partnerMenu` - Action to open partner menu.
                    * `vertical` - Action to open search and apply a vertical selection to it.
                    * `copyCode` - Action to copy text to clipboard (e.g. a voucher code).
                type: string
              value:
                description: |
                  The value to be used with the action type specified.
                  Property requirement:
                    * `url` - Mandatory.
                    * `filter` - Mandatory.
                    * `partnerMenu` - Mandatory.
                    * `vertical` - Mandatory.
                    * `copyCode` - Mandatory.
                type: string
        trackingInfo:
          type: object
          $ref: '#/components/schemas/DiscoveryRestaurantsV3BannerItemActionTrackingInfo'
    DiscoveryRestaurantsV3RecommendResponse:
      title: Recommend Response
      type: object
      required:
        - metaData
        - restaurants
        - defaultLayout
        - enrichedLists
      properties:
        metaData:
          description: Additional data about the recommendation results.
          type: object
          required:
            - resultCount
          properties:
            resultCount:
              description: The number of recommended restaurants returned.
              type: integer
        restaurants:
          description: Recommended partners, enriched. An empty array is a valid response when no recommendations are available (e.g. when no partner IDs are provided).
          type: array
          items:
            $ref: '#/components/schemas/DiscoveryRestaurantsV3EnrichedRestaurantItem'
        defaultLayout:
          description: The layout for the recommendations page. Contains a single vertical with one enriched list carousel.
          type: object
          required:
            - refineFilters
            - verticals
          properties:
            refineFilters:
              description: Always empty for recommendations — no refine filters are returned.
              type: array
              items:
                type: string
            sortOptions:
              description: Not populated for recommendations.
              type: array
              items:
                type: object
                required:
                  - displayName
                  - id
                properties:
                  displayName:
                    description: The display name of the sorting option.
                    type: string
                  id:
                    description: The id of the sorting option.
                    $ref: '#/components/schemas/DiscoverySortBy'
            verticals:
              description: Contains a single vertical with one enriched list carousel ("Find similar places").
              type: array
              items:
                type: object
                required:
                  - type
                  - id
                  - title
                  - contents
                  - applicableFilters
                properties:
                  type:
                    description: The type of layout item.
                    type: string
                    enum:
                      - vertical
                  id:
                    description: The id of the vertical.
                    type: string
                  title:
                    description: The title of the vertical.
                    type: string
                  contents:
                    description: The contents of the vertical. Contains the recommendation carousel.
                    type: array
                    items:
                      $ref: '#/components/schemas/DiscoveryRestaurantsV3LayoutEnrichedListItem'
                  applicableFilters:
                    description: Always empty for recommendations.
                    type: array
                    items:
                      type: string
        enrichedLists:
          description: Keyed by carousel ID. Contains optional subtitle and tracking ID metadata for the recommendation carousel.
          type: object
          additionalProperties:
            x-additionalPropertiesName: enriched list id
            type: object
            properties:
              subtitle:
                description: The subtitle for the enriched list.
                type: string
              trackingId:
                description: The tracking id for the enriched list, used to identify what generated the enriched list.
                type: string
      example:
        metaData:
          resultCount: 2
        restaurants:
          - id: '382083'
            name: Tasty Burger
            uniqueName: tasty-burger-bristol
            partnerHeaderInfo:
              headerImages:
                - urlTemplate: https://just-eat-prod-eu-res.cloudinary.com/image/upload/{transformations}/v1/uk/restaurants/382083
            address:
              city: Bristol
              firstLine: 137 Station Road
              postalCode: BS15 4XX
              location:
                type: Point
                coordinates:
                  - -2.492622
                  - 51.47462
            rating:
              count: 340
              starRating: 4
            isNew: false
            driveDistanceMeters: 1104
            openingTimeLocal: '2025-08-15T15:10:00'
            deliveryOpeningTimeLocal: '2025-08-15T16:10:00'
            deliveryEtaMinutes:
              rangeLower: 20
              rangeUpper: 35
            isCollection: true
            isDelivery: true
            isOpenNowForCollection: true
            isOpenNowForDelivery: true
            isOpenNowForPreorder: false
            isTemporarilyOffline: false
            defaultDisplayRank: 1
            isTemporaryBoost: false
            isPremier: false
            isTestRestaurant: false
            deals: []
            tags: []
            cuisines:
              - name: Burgers
                uniqueName: burgers
            availability:
              delivery:
                isOpen: true
                canPreOrder: false
                isTemporarilyOffline: false
              collection:
                isOpen: false
                canPreOrder: true
                nextAvailability:
                  from: '2025-08-15T17:00:00'
                isTemporarilyOffline: false
        defaultLayout:
          refineFilters: []
          verticals:
            - type: vertical
              id: main
              title: Recommendations
              applicableFilters: []
              contents:
                - type: enrichedList
                  id: find-similar-places
                  title: Find similar places
                  contents:
                    - type: restaurant
                      id: '382083'
                    - type: restaurant
                      id: '494578'
        enrichedLists:
          find-similar-places:
            trackingId: find-similar-places
    DiscoveryRestaurantsV3ThemeVariant:
      title: Theme variant
      type: object
      description: Contains key-value pairs describing styling implementation detail for the variant of the theme.
      required:
        - primary
        - secondary
        - accent
      properties:
        primary:
          type: string
          description: The primary hex colour a theme should provide for styling implementation detail.
        secondary:
          type: string
          description: The secondary hex colour a theme should provide for styling implementation detail.
        accent:
          type: string
          description: The accent hex colour a theme should provide for styling implementation detail.
      additionalProperties:
        type: string
        description: A key-value pair highlighting a hex colour for a specific styling implementation detail.
    DiscoveryRestaurantsV3WebviewAction:
      title: Webview Action
      type: object
      required:
        - type
      properties:
        type:
          description: The kind of action.
          type: string
          enum:
            - url
            - filter
            - partnerMenu
            - vertical
        value:
          description: A value associated with the action (for example a URL or identifier).
          type: string
    DiscoveryRestaurantsV3WebviewComponent:
      title: Webview Component
      type: object
      description: A component within this item.
      properties:
        content:
          description: Key/value pairs describing this component (for example icon, text, title).
          type: object
          additionalProperties:
            type: string
        actions:
          description: Actions available for this component.
          type: array
          items:
            $ref: '#/components/schemas/DiscoveryRestaurantsV3WebviewAction'
    DkSmileyRatingRestaurantSmileyRatingsInspection:
      properties:
        rate:
          type: integer
          description: Smiley Rating of this inspection (4 - lower, 1 - higher). It can be nullable if no inspection was done in the restaurant.
          minimum: 1
          maximum: 4
          nullable: true
        inspectionDate:
          nullable: true
          description: Date of the inspection (dd-mm-yyyy). It can be nullable if no inspection was done in the restaurant.
          type: string
    DkSmileyRatingRestaurantSmileyRatingsResponse:
      properties:
        url:
          nullable: false
          description: URL for complete info of this restaurant at https://www.findsmiley.dk
          type: string
        restaurantSmileyId:
          nullable: false
          description: Restaurant Smiley Id
          type: string
        isElite:
          nullable: false
          description: Flag that ensures a restaurant is rated as Elite
          type: boolean
        inspections:
          description: Object with the last four inspections from most recent to older
          properties:
            third:
              allOf:
                - $ref: '#/components/schemas/DkSmileyRatingRestaurantSmileyRatingsInspection'
              description: Third most recent inspection
              nullable: false
              type: object
            second:
              allOf:
                - $ref: '#/components/schemas/DkSmileyRatingRestaurantSmileyRatingsInspection'
              description: Second most recent inspection
              nullable: false
              type: object
            first:
              allOf:
                - $ref: '#/components/schemas/DkSmileyRatingRestaurantSmileyRatingsInspection'
              description: First most recent inspection
              nullable: false
              type: object
            fourth:
              allOf:
                - $ref: '#/components/schemas/DkSmileyRatingRestaurantSmileyRatingsInspection'
              description: Fourth most recent inspection
              nullable: false
              type: object
          type: object
      additionalProperties: false
      example:
        url: https://www.findsmiley.dk/111111
        restaurantSmileyId: '111111'
        isElite: false
        inspections:
          third:
            rate: 2
            inspectionDate: 02-01-2021
          second:
            rate: 1
            inspectionDate: 02-01-2021
          first:
            rate: 1
            inspectionDate: 02-01-2021
          fourth:
            rate: null
            inspectionDate: null
      type: object
    DynamicContentServiceOrchestratedContentOrchestratedContentResponse:
      x-status: Stable
      required:
        - id
        - trackingId
        - slotId
        - templateId
        - metaType
        - meta
        - fields
      description: A piece of content that is made by processing data from different sources, such as other APIs, and then selecting the correct content to show the relevant user experience.
      properties:
        id:
          description: Unique identifier of the orchestrated content item. Likely, but not guaranteed, to be a UUID.
          type: string
          example: 00000000-0000-0000-0000-000000000000
        trackingId:
          description: Tracking identifier used for analytics and attribution of the orchestrated content item.
          type: string
          example: 11111111-1111-1111-1111-111111111111
        templateId:
          description: The target ID / name of the template that should be rendered, describes what shape the `fields` object is.
          enum:
            - popupV1
            - popupV2
            - webView
          type: string
          example: popupV2
        slotId:
          description: Identifier for the placement slot where this content should be rendered.
          enum:
            - popupV1
            - popupV2
            - compactPartialV1
            - bannerV1
          type: string
          example: popupV2
        metaType:
          description: Describes what shape the `meta` object is.
          enum:
            - voucherProgram
            - unknown
          type: string
          example: unknown
        meta:
          description: A polymorphic object. The properties in this object depend on the `metaType` property.
          oneOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentMetaVoucherProgram'
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentMetaUnknown'
        fields:
          description: A polymorphic object. The properties in this object depend on the `templateId` property.
          oneOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV1'
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV2'
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsLayoutWebViewItem'
      type: object
      example:
        id: 00000000-0000-0000-0000-000000000000
        trackingId: 11111111-1111-1111-1111-111111111111
        templateId: popupV2
        slotId: popupV2
        metaType: unknown
        meta: {}
        fields:
          states:
            expanded:
              headerImage:
                url: https://res.cloudinary.com/image.png
                altText: test
              headerImageWide:
                url: https://res.cloudinary.com/image.png
                altText: test
              title: 80% off your next order
              body: Voucher applied at checkout
              primaryAction:
                text: Apply Voucher
                action:
                  value:
                    voucherProgramId: 22222222-2222-2222-2222-222222222222
                  type: claimVoucherV1
                  onSuccessAction:
                    value:
                      contentId: 33333333-3333-3333-3333-333333333333
                    type: requestContentV1
                    onSuccessAction: null
              secondaryAction:
                text: Close
                action:
                  value:
                    state: minimised
                  type: transition
                  onSuccessAction: null
              popupDismissable: false
            minimised:
              title: 80% off
              subtitle: Voucher applied at checkout
              image:
                url: https://res.cloudinary.com/image.png
                altText: Noodles
          initialState: expanded
          theme: turmeric
    DynamicContentServiceOrchestratedContentOrchestratedContext:
      description: Consumer context object providing optional location and partner filtering parameters for content discovery.
      type: object
      properties:
        partnerIds:
          nullable: true
          description: Optional list of partner identifiers used to filter content by partner association.
          type: array
          items:
            type: string
        latLong:
          nullable: true
          description: Optional latitude and longitude coordinates used for location-based content filtering, provided in the format lat,long.
          type: string
          example: 51.509865,-0.118092
    DynamicContentServiceOrchestratedContentOrchestratedDiscoveryRequest:
      description: Request body for discovering orchestrated content. All properties are optional filters; an empty object is valid.
      type: object
      properties:
        templateId:
          nullable: true
          description: Optional filter to return only content matching the specified template type.
          enum:
            - popupV1
            - popupV2
            - webView
          type: string
          example: popupV2
        slotId:
          nullable: true
          description: Optional filter to return only content matching the specified slot type.
          enum:
            - popupV1
            - popupV2
            - compactPartialV1
            - bannerV1
          type: string
          example: popupV2
        context:
          nullable: true
          description: Optional consumer context object used for location-based and partner-based content filtering.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentOrchestratedContext'
    DynamicContentServiceOrchestratedContentOrchestratedDiscoveryResponse:
      x-status: Stable
      required:
        - data
      description: Response envelope returned by the v2 orchestrated content discovery endpoint.
      properties:
        data:
          nullable: false
          description: The discovered orchestrated content items.
          type: array
          items:
            $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentOrchestratedContentResponse'
      type: object
    DynamicContentServiceOrchestratedContentOrchestratedDiscoveryV2Request:
      description: Request body for discovering orchestrated content. All properties are optional filters; an empty object is valid.
      type: object
      properties:
        templateId:
          nullable: true
          description: Optional filter to return only content matching the specified template type.
          enum:
            - popupV1
            - popupV2
            - webView
          type: string
          example: popupV2
        slotId:
          nullable: true
          description: Optional filter to return only content matching the specified slot type.
          enum:
            - popupV1
            - popupV2
            - compactPartialV1
            - bannerV1
          type: string
          example: popupV2
        context:
          nullable: true
          description: Optional consumer context object used for location-based and partner-based content filtering.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentOrchestratedContext'
        limit:
          type: integer
          minimum: 1
          maximum: 10
          default: 1
          description: Maximum number of content items to return.
        offset:
          type: integer
          minimum: 0
          maximum: 9
          default: 0
          description: Number of pages to skip. For example, offset=1 with limit=5 skips the first 5 items.
    DynamicContentServiceOrchestratedContentFieldsBannerV1:
      title: BannerV1
      type: object
      description: Data for the Banner webview type. Displays a full-width promotional banner with hero imagery, styled subtitle text and a call-to-action.
      required:
        - container
        - subtitle
      properties:
        container:
          nullable: false
          type: object
          description: The container holding the banner imagery, promotional text and user actions.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsWebViewContainer'
        subtitle:
          nullable: false
          type: object
          description: A styled subtitle composed from sequential text parts displayed below the banner.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsWebViewSubtitle'
    DynamicContentServiceOrchestratedContentFieldsCompactPartialContainer:
      type: object
      description: The container section of a compact partial webview data block, holding the content language, primary content and a list of user actions.
      required:
        - contentLanguage
        - content
        - actions
      properties:
        contentLanguage:
          nullable: false
          description: The BCP 47 language tag indicating the language of the container content.
          type: string
          example: en
        content:
          nullable: false
          type: object
          description: The primary content block of the container, including background colour, hero text and promotional code.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsCompactPartialContent'
        actions:
          nullable: false
          description: A list of actions available to the user within this container.
          type: array
          items:
            $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsWebViewAction'
    DynamicContentServiceOrchestratedContentFieldsCompactPartialContent:
      type: object
      description: The primary content block of a compact partial container, including background colour, hero text and a promotional code.
      required:
        - background
        - hero_text
        - code
      properties:
        background:
          nullable: false
          description: Background colour for the content block, expressed as a hex colour code.
          type: string
          example: '#f4d35e'
        hero_text:
          nullable: false
          description: Primary hero text displayed prominently within the content block.
          type: string
          example: 8 off
        code:
          nullable: false
          description: The promotional code associated with the offer.
          type: string
          example: SAVE8
    DynamicContentServiceOrchestratedContentFieldsCompactPartialSubtitle:
      type: object
      description: Subtitle section of a compact partial webview data block. Contains an array of styled text parts used to compose a subtitle string.
      properties:
        content:
          nullable: true
          description: The subtitle content containing an array of styled text parts.
          type: object
          required:
            - parts
          properties:
            parts:
              nullable: false
              description: An ordered list of styled text parts that compose the subtitle.
              type: array
              items:
                $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsCompactPartialSubtitlePart'
    DynamicContentServiceOrchestratedContentFieldsCompactPartialSubtitlePart:
      type: object
      description: A single styled text part within a compact partial subtitle.
      required:
        - text
        - type
      properties:
        text:
          nullable: false
          description: The text content of this subtitle part.
          type: string
          example: 'Your '
        type:
          nullable: false
          description: The styling type applied to this text part.
          type: string
          enum:
            - normal
            - bold
          example: normal
    DynamicContentServiceOrchestratedContentFieldsCompactPartialV1:
      title: CompactPartialV1
      type: object
      description: Data for the Compact Partial webview type. Displays a compact, partially visible banner card with imagery, styled subtitle text and a call-to-action.
      required:
        - container
        - subtitle
      properties:
        container:
          nullable: false
          type: object
          description: The container holding the card imagery, promotional text and user actions.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsCompactPartialContainer'
        subtitle:
          nullable: false
          type: object
          description: A styled subtitle composed from sequential text parts displayed below the card.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsCompactPartialSubtitle'
    DynamicContentServiceOrchestratedContentFieldsLayoutWebViewItem:
      title: WebView
      type: object
      description: A layout item used to surface a reusable block of dynamic content. Currently supports the Sequential Offer Banner and Banner Partial Square webview types.
      required:
        - ref
        - data
      properties:
        ref:
          description: A reference to the underlying content source, typically an absolute URL to the webview template.
          type: string
        data:
          description: The data object injected into the webview template. The structure varies depending on which webview type is being rendered.
          oneOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsBannerV1'
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsCompactPartialV1'
    DynamicContentServiceOrchestratedContentFieldsPopupV1:
      title: PopupV1
      type: object
      description: When the `templateId` is `popupV1`, this object will be available.
      nullable: false
      required:
        - headerImage
        - headerImageWide
        - title
        - body
        - primaryAction
        - secondaryAction
        - theme
        - popupDismissable
      properties:
        headerImage:
          description: Image that is displayed at the top of the pop-up. Likely 16:9.
          type: object
          $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV1HeaderImage'
        headerImageWide:
          description: Image that is displayed at the top of the pop-up. Better for web desktop. Likely 21:9.
          type: object
          $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV1HeaderImage'
        title:
          nullable: false
          description: Main heading text displayed prominently at the top of the pop-up content area.
          type: string
          example: £8 off on your next order
        body:
          nullable: true
          description: Main text of the pop-up. This will include Unix line breaks (\n) which the FE needs to handle.
          type: string
          example: Expires 20/8 ⋅ Min €15 ⋅ Delivery only ⋅ Selected restaurants\nVoucher applied at checkout
        primaryAction:
          nullable: false
          type: object
          description: Action the Customer can perform when they click on the main CTA.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV1Action'
        secondaryAction:
          nullable: true
          type: object
          description: Action the Customer can perform when they click on the secondary CTA. Could be null (don't show the CTA).
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV1Action'
        theme:
          nullable: false
          description: Defines the colours of the pop-up including the background colour, buttons and text.
          enum:
            - default
            - orangeSubtle
            - cupcake
            - cupcakeSubtle
            - berry
            - berrySubtle
            - turmeric
            - turmericSubtle
            - aubergine
            - aubergineSubtle
            - latte
            - latteSubtle
          type: string
        popupDismissable:
          nullable: false
          description: If tapping on background shade of the pop-up should cause it to be dismissed.
          type: boolean
    DynamicContentServiceOrchestratedContentFieldsPopupV1Action:
      type: object
      description: Action the Customer can perform when they click on the main CTA. Could be null (don't show the CTA).
      nullable: true
      required:
        - text
        - action
      properties:
        text:
          nullable: false
          description: Text that's rendered in the CTA.
          type: string
          example: Apply voucher
        action:
          nullable: false
          description: Defines a programmatic action that the FE is expected to run.
          type: object
          $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsActionV1'
    DynamicContentServiceOrchestratedContentFieldsPopupV1HeaderImage:
      type: object
      nullable: false
      description: Image that is displayed at the top of the pop-up.
      required:
        - url
        - altText
      properties:
        url:
          nullable: false
          description: URL to the image.
          type: string
          example: https://just-eat-prod-eu-res.cloudinary.com/image/upload/c_fill,h_180,w_255/f_auto/q_auto/v1/uk/filter-images/restaurants
        altText:
          nullable: false
          description: For accessibility.
          type: string
          example: Image of a burger with chips
    DynamicContentServiceOrchestratedContentFieldsPopupV2:
      title: PopupV2
      type: object
      description: When the `templateId` is `popupV2`, this object will be available.
      nullable: false
      required:
        - states
        - initialState
        - theme
      properties:
        states:
          nullable: false
          description: Describes the content for each display state of the pop-up.
          type: object
          required:
            - expanded
            - minimised
          properties:
            expanded:
              nullable: false
              description: Content for the expanded (full) state of the pop-up.
              allOf:
                - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV2Expanded'
            minimised:
              nullable: true
              description: Content for the minimised state of the pop-up. If null, the pop-up cannot be minimised and `initialState` must be `expanded`.
              allOf:
                - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV2Minimised'
        initialState:
          nullable: false
          description: The state the pop-up should display on initial load.
          type: string
          enum:
            - expanded
            - minimised
          example: expanded
        theme:
          nullable: false
          description: Defines the colours of the pop-up including the background colour, buttons and text. Applied to all states.
          type: string
          enum:
            - default
            - orangeSubtle
            - cupcake
            - cupcakeSubtle
            - berry
            - berrySubtle
            - turmeric
            - turmericSubtle
            - aubergine
            - aubergineSubtle
            - latte
            - latteSubtle
    DynamicContentServiceOrchestratedContentFieldsPopupV2Action:
      type: object
      description: Action the Customer can perform when they click on a CTA. Could be null (don't show the CTA).
      nullable: true
      required:
        - text
        - action
      properties:
        text:
          nullable: false
          description: Text that's rendered in the CTA.
          type: string
          example: Apply voucher
        action:
          nullable: false
          description: Defines a programmatic action that the FE is expected to run.
          type: object
          $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsActionV2'
    DynamicContentServiceOrchestratedContentFieldsPopupV2Expanded:
      title: PopupV2Expanded
      type: object
      description: The expanded state of a `popupV2` content item. Equivalent to the `popupV1` fields, without `theme` (which is lifted to the parent) and with support for the `transition` action type.
      nullable: false
      required:
        - headerImage
        - headerImageWide
        - title
        - body
        - primaryAction
        - secondaryAction
        - popupDismissable
      properties:
        headerImage:
          description: Image that is displayed at the top of the pop-up. Likely 16:9.
          type: object
          $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV1HeaderImage'
        headerImageWide:
          description: Image that is displayed at the top of the pop-up. Better for web desktop. Likely 21:9.
          type: object
          $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV1HeaderImage'
        title:
          nullable: false
          description: Main heading text displayed prominently at the top of the pop-up content area.
          type: string
          example: £8 off on your next order
        body:
          nullable: true
          description: Main text of the pop-up. This will include Unix line breaks (\n) which the FE needs to handle.
          type: string
          example: Expires 20/8 ⋅ Min €15 ⋅ Delivery only ⋅ Selected restaurants\nVoucher applied at checkout
        primaryAction:
          nullable: false
          type: object
          description: Action the Customer can perform when they click on the main CTA.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV2Action'
        secondaryAction:
          nullable: true
          type: object
          description: Action the Customer can perform when they click on the secondary CTA. Could be null (don't show the CTA).
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV2Action'
        popupDismissable:
          nullable: false
          description: If tapping on the background shade of the pop-up should cause it to be dismissed.
          type: boolean
    DynamicContentServiceOrchestratedContentFieldsPopupV2Minimised:
      title: PopupV2Minimised
      type: object
      description: The minimised state of a `popupV2` content item.
      nullable: false
      required:
        - title
        - subtitle
        - image
      properties:
        title:
          nullable: false
          description: First line of text displayed in the minimised pop-up.
          type: string
          example: 50% off
        subtitle:
          nullable: false
          description: Second line of text displayed in the minimised pop-up.
          type: string
          example: Your next order
        image:
          nullable: false
          description: Image displayed in the minimised pop-up.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsPopupV1HeaderImage'
    DynamicContentServiceOrchestratedContentFieldsWebViewAction:
      type: object
      description: An action that can be triggered by the user interacting with a webview content block.
      required:
        - type
        - value
      properties:
        type:
          nullable: false
          description: The type of action to perform, such as navigating to a URL.
          type: string
          example: url
        value:
          nullable: false
          description: The target value for the action, such as a URL to navigate to.
          type: string
          example: https://www.just-eat.co.uk/area/se19-london
    DynamicContentServiceOrchestratedContentFieldsWebViewContainer:
      type: object
      description: The container section of a webview data block holding the primary content and a list of user actions.
      required:
        - content
        - actions
      properties:
        content:
          nullable: false
          type: object
          description: The primary content block of the container, including imagery, text and call-to-action.
          allOf:
            - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsWebViewContent'
        actions:
          nullable: false
          description: A list of actions available to the user within this container.
          type: array
          items:
            $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsWebViewAction'
    DynamicContentServiceOrchestratedContentFieldsWebViewContent:
      type: object
      description: The primary content block of a webview container, including imagery, text and call-to-action. Additional dynamic properties following a sequential naming pattern may be present for multi-step content.
      required:
        - image
        - background
        - title
        - cta
        - hero_text
      properties:
        image:
          nullable: false
          description: URL of the image displayed within the content block.
          type: string
          example: https://just-eat-prod-eu-res.cloudinary.com/image/upload/example.png
        background:
          nullable: false
          description: Background colour for the content block, expressed as a hex colour code.
          type: string
          example: '#f8e7b3'
        title:
          nullable: false
          description: Heading text displayed within the content block.
          type: string
          example: Exclusive Offer
        cta:
          nullable: false
          description: Call-to-action button text displayed within the content block.
          type: string
          example: Order Now
        hero_text:
          nullable: false
          description: Primary hero text displayed prominently within the content block.
          type: string
          example: 20%
      additionalProperties: true
    DynamicContentServiceOrchestratedContentFieldsWebViewSubtitle:
      type: object
      description: Subtitle section of a webview data block. Contains a dynamic dictionary of text parts used to compose a styled subtitle string, where keys follow a sequential naming pattern.
      properties:
        content:
          nullable: true
          description: A dictionary of text and type pairs used to compose a styled subtitle. Keys use sequential numbering with text and type suffixes.
          type: object
          additionalProperties:
            type: string
          example:
            part1_text: 'Get '
            part1_type: normal
            part2_text: '20% off '
            part2_type: bold
            part3_text: ' your next order'
            part3_type: normal
    DynamicContentServiceOrchestratedContentFieldsActionsActionV1:
      type: object
      description: Defines a programmatic action that the FE is expected to run.
      nullable: false
      required:
        - type
        - onSuccessAction
      discriminator:
        propertyName: type
        mapping:
          authenticateV1: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesValueNull'
          claimVoucherV1: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesClaimVoucherV1'
          close: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesValueNull'
          unknown: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesValueNull'
          universalLink: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesUniversalLink'
          requestContentV1: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesRequestContentV1'
        oneOf:
          - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesValueNull'
          - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesClaimVoucherV1'
          - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesUniversalLink'
          - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesRequestContentV1'
      properties:
        type:
          nullable: false
          description: The FE runs logic against this key.
          enum:
            - authenticateV1
            - claimVoucherV1
            - close
            - unknown
            - universalLink
            - requestContentV1
          type: string
        onSuccessAction:
          nullable: true
          description: |
            A sub-action which defines what should happen if this action is successfully ran.

            The FE should recursively run these sub-actions.
          type: object
          $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsActionV1'
    DynamicContentServiceOrchestratedContentFieldsActionsActionV2:
      type: object
      description: Defines a programmatic action that the FE is expected to run.
      nullable: false
      required:
        - type
        - onSuccessAction
      discriminator:
        propertyName: type
        mapping:
          authenticateV1: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesValueNull'
          claimVoucherV1: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesClaimVoucherV1'
          close: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesValueNull'
          unknown: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesValueNull'
          universalLink: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesUniversalLink'
          requestContentV1: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesRequestContentV1'
          transition: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesTransition'
        oneOf:
          - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesValueNull'
          - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesClaimVoucherV1'
          - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesUniversalLink'
          - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesRequestContentV1'
          - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsValuesTransition'
      properties:
        type:
          nullable: false
          description: The FE runs logic against this key.
          enum:
            - authenticateV1
            - claimVoucherV1
            - close
            - unknown
            - universalLink
            - requestContentV1
            - transition
          type: string
        onSuccessAction:
          nullable: true
          description: |
            A sub-action which defines what should happen if this action is successfully ran.

            The FE should recursively run these sub-actions.
          type: object
          $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsActionV2'
    DynamicContentServiceOrchestratedContentFieldsActionsValuesClaimVoucherV1:
      allOf:
        - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsActionV1'
      required:
        - value
      type: object
      properties:
        value:
          nullable: false
          type: object
          required:
            - voucherProgramId
          properties:
            voucherProgramId:
              nullable: false
              description: The FE is expected to claim against this ID.
              type: string
              example: 00000000-0000-0000-0000-000000000000
    DynamicContentServiceOrchestratedContentFieldsActionsValuesRequestContentV1:
      allOf:
        - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsActionV1'
      required:
        - value
      type: object
      properties:
        value:
          nullable: false
          type: object
          required:
            - contentId
          properties:
            contentId:
              nullable: false
              description: The FE should make a new request to DCS using this ID.
              type: string
              example: 00000000-0000-0000-0000-000000000000
    DynamicContentServiceOrchestratedContentFieldsActionsValuesTransition:
      allOf:
        - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsActionV2'
      required:
        - value
      type: object
      properties:
        value:
          nullable: false
          description: The pop-up state to transition to.
          type: object
          required:
            - state
          properties:
            state:
              type: string
              enum:
                - expanded
                - minimised
                - closed
              example: minimised
    DynamicContentServiceOrchestratedContentFieldsActionsValuesUniversalLink:
      allOf:
        - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsActionV1'
      required:
        - value
      type: object
      properties:
        value:
          nullable: false
          type: object
          required:
            - url
          properties:
            url:
              nullable: false
              description: Could be an internal or external URL.
              type: string
              example: https://www.just-eat.co.uk/area/ec2v7bq-barbican
    DynamicContentServiceOrchestratedContentFieldsActionsValuesValueNull:
      allOf:
        - $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsActionsActionV1'
      required:
        - value
      type: object
      properties:
        value:
          nullable: true
          type: object
    DynamicContentServiceOrchestratedContentMetaUnknown:
      type: object
      description: When the `metaType` is `"unknown"` then this empty object will be returned. Used when tracking data is emitted directly by the backend rather than being carried in the meta payload.
      nullable: false
    DynamicContentServiceOrchestratedContentMetaVoucherProgram:
      type: object
      description: Information about which Voucher Program is being presented and which experience is being shown to the Customer.
      nullable: false
      required:
        - voucherProgramId
        - state
      properties:
        voucherProgramId:
          nullable: false
          description: |
            Tells the FE what the underlying Voucher Program is behind this piece of Orchestrated Content in case this needs to be tracked.

            Likely, but not guaranteed, to be a UUID.
          type: string
          example: 00000000-0000-0000-0000-000000000000
        state:
          nullable: false
          description: Tells the FE which experience is being shown in relation to Vouchers.
          enum:
            - pending
            - redeem
            - programExpired
            - voucherExpired
            - userNotEligible
            - voucherRedeemed
            - programQuotaReached
            - unauthorised
            - error
          type: string
    EarningscoreCycleEarningsResponse:
      type: object
      required:
        - currencyCode
        - period
        - summary
        - breakdown
        - weekSummary
      properties:
        currencyCode:
          type: string
          description: ISO 4217 currency code for all monetary amounts in the response.
          example: PLN
        period:
          type: object
          description: The cycle window the earnings are aggregated over.
          required:
            - startDate
            - endDate
          properties:
            startDate:
              type: string
              format: date-time
              description: Start of the cycle in UTC.
              example: '2026-01-01T00:00:00.000Z'
            endDate:
              type: string
              format: date-time
              description: End of the cycle in UTC.
              example: '2026-01-14T00:00:00.000Z'
        summary:
          type: object
          required:
            - totalEarnings
            - totalDeliveries
          properties:
            totalEarnings:
              type: integer
              format: int32
              description: Total earnings for the cycle, in minor currency units.
              example: 125050
            totalDeliveries:
              type: integer
              format: int32
              description: Total number of deliveries in the cycle.
              example: 84
        breakdown:
          type: object
          required:
            - transitPay
            - bonuses
            - statedTip
            - otherReimbursements
            - total
          properties:
            transitPay:
              type: integer
              format: int32
              description: Transit pay component, in minor currency units.
            bonuses:
              type: integer
              format: int32
              description: Bonuses component, in minor currency units.
            statedTip:
              type: integer
              format: int32
              description: Stated tips component, in minor currency units.
            otherReimbursements:
              type: integer
              format: int32
              description: Other reimbursements component, in minor currency units.
            total:
              type: integer
              format: int32
              description: Sum of all breakdown components, in minor currency units.
        weekSummary:
          type: array
          description: Per-week earnings within the cycle.
          items:
            type: object
            required:
              - date
              - deliveries
              - earnings
            properties:
              date:
                type: string
                format: date-time
                description: Start of the week in UTC.
                example: '2026-01-01T00:00:00.000Z'
              deliveries:
                type: integer
                format: int32
                description: Number of deliveries in the week.
              earnings:
                type: integer
                format: int32
                description: Earnings for the week, in minor currency units.
    EarningscoreDailyEarningsResponse:
      type: object
      required:
        - currencyCode
        - date
        - summary
        - breakdown
        - orders
      properties:
        currencyCode:
          type: string
          description: ISO 4217 currency code for all monetary amounts in the response.
          example: PLN
        date:
          type: string
          format: date-time
          description: The day the earnings are aggregated over, in UTC.
          example: '2026-01-01T00:00:00.000Z'
        summary:
          type: object
          required:
            - totalEarnings
            - totalDeliveries
          properties:
            totalEarnings:
              type: integer
              format: int32
              description: Total earnings for the day, in minor currency units.
              example: 8450
            totalDeliveries:
              type: integer
              format: int32
              description: Total number of deliveries in the day.
              example: 6
        breakdown:
          type: object
          required:
            - transitPay
            - bonuses
            - statedTip
            - otherReimbursements
            - total
          properties:
            transitPay:
              type: integer
              format: int32
              description: Transit pay component, in minor currency units.
            bonuses:
              type: integer
              format: int32
              description: Bonuses component, in minor currency units.
            statedTip:
              type: integer
              format: int32
              description: Stated tips component, in minor currency units.
            otherReimbursements:
              type: integer
              format: int32
              description: Other reimbursements component, in minor currency units.
            total:
              type: integer
              format: int32
              description: Sum of all breakdown components, in minor currency units.
        orders:
          type: array
          description: Per-order earnings for the day.
          items:
            type: object
            required:
              - id
              - status
              - totalEarnings
              - activeTime
              - breakdown
            properties:
              id:
                type: string
                description: Internal order identifier.
              orderNumber:
                type: string
                nullable: true
                description: Human-readable order number, prefixed with '#'.
                example: '#12345'
              status:
                type: string
                description: Order status.
              restaurantName:
                type: string
                nullable: true
                description: Name of the pickup restaurant.
              address:
                type: string
                nullable: true
                description: Pickup address.
              totalEarnings:
                type: integer
                format: int32
                description: Total earnings for the order, in minor currency units.
              offerAcceptedAt:
                type: string
                format: date-time
                nullable: true
                description: When the offer was accepted, in UTC.
                example: '2026-01-01T10:15:00.000Z'
              offerDeliveredAt:
                type: string
                format: date-time
                nullable: true
                description: When the order was delivered, in UTC.
                example: '2026-01-01T10:45:00.000Z'
              offerCancelledAt:
                type: string
                format: date-time
                nullable: true
                description: When the offer was cancelled, in UTC.
              pickup:
                type: string
                nullable: true
                description: Combined pickup label of the restaurant name and address.
              activeTime:
                type: integer
                format: int32
                description: Active time on the order, in seconds.
              totalDistance:
                type: integer
                format: int32
                nullable: true
                description: Total distance travelled for the order, in metres.
              breakdown:
                type: object
                required:
                  - transitPay
                  - transitPayTopUp
                  - wageTopUp
                  - bonuses
                  - statedTip
                  - otherReimbursements
                  - total
                properties:
                  transitPay:
                    type: integer
                    format: int32
                    description: Transit pay component, in minor currency units.
                  transitPayTopUp:
                    type: integer
                    format: int32
                    description: Transit pay top-up component, in minor currency units.
                  wageTopUp:
                    type: integer
                    format: int32
                    description: Wage top-up component, in minor currency units.
                  bonuses:
                    type: integer
                    format: int32
                    description: Bonuses component, in minor currency units.
                  statedTip:
                    type: integer
                    format: int32
                    description: Stated tips component, in minor currency units.
                  otherReimbursements:
                    type: integer
                    format: int32
                    description: Other reimbursements component, in minor currency units.
                  total:
                    type: integer
                    format: int32
                    description: Sum of all order breakdown components, in minor currency units.
    ExclusionsCreateExclusionResponse:
      type: object
      description: The exclusion created or updated
      title: Exclusion
      properties:
        type:
          description: Type of exclusion
          type: string
        state:
          $ref: '#/components/schemas/ExclusionsSelfExclusionState'
        expiryDate:
          description: Date and time the exclusion expires (UTC).
          format: date-time
          type: string
      example:
        type: alcohol
        state: temporaryExclusion
        expiryDate: '2024-06-08T01:00:00Z'
    ExclusionsGetExclusionsResponse:
      type: object
      properties:
        exclusions:
          description: List of self exclusions
          type: array
          items:
            required:
              - type
              - state
            type: object
            properties:
              type:
                description: Type of exclusion.
                type: string
              state:
                $ref: '#/components/schemas/ExclusionsSelfExclusionState'
              expiryDate:
                description: Date and time that the exclusion expires (UTC).
                format: date-time
                type: string
      description: Provides the list of exclusions.
      example:
        exclusions:
          - type: alcohol
            state: temporaryExclusion
            expiryDate: '2024-06-08T01:00:00Z'
          - type: tobacco
            state: permanentExclusion
            expiryDate: '2024-06-08T01:00:00Z'
    ExclusionsManageExclusionRequest:
      type: object
      properties:
        state:
          $ref: '#/components/schemas/ExclusionsSelfExclusionState'
        consumerId:
          description: The consumer id.
          type: string
      example:
        state: permanentExclusion
        consumerId: '123456789'
    ExclusionsSelfExclusionRequest:
      type: object
      properties:
        state:
          $ref: '#/components/schemas/ExclusionsSelfExclusionState'
      example:
        state: permanentExclusion
    ExclusionsSelfExclusionState:
      enum:
        - temporaryExclusion
        - permanentExclusion
        - inclusionRequested
        - exclusionPeriodExpired
      type: string
      description: SelfExclusion states. ExclusionPeriodExpired is only supported in the GET endpoint
    ExtensibleObject:
      additionalProperties: true
      type: object
    Feeconfigservice4XxErrorResponse:
      description: A HTTP 4xx error response
      properties:
        title:
          description: A short description of the error.
          type: string
        status:
          description: The HTTP status code of the response.
          type: integer
          format: int32
        errors:
          description: A list of errors.
          type: object
          properties:
            param:
              type: array
              items:
                type: string
      type: object
      example:
        title: One or more validation errors occurred.
        status: 400
        errors:
          param:
            - Tenant is invalid
    FeeconfigserviceGetSmallOrderFeeResponse:
      properties:
        enabled:
          type: boolean
          nullable: false
          description: Specify if the small order fee is enabled for the specific partner
      type: object
      example:
        enabled: true
    FeeconfigserviceSmallOrderFeeToUpdate:
      type: object
      description: Small Order Fee object to update for the partner
      properties:
        enabled:
          type: boolean
          description: Enable or disable small order fee
      example:
        enabled: false
    FeedbackexplorerAssistant:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the assistant
        name:
          type: string
          description: Name of the assistant
        initialMessage:
          type: string
          description: Initial message or prompt for the assistant
        userContext:
          type: string
          description: Context or background information for the user
        initialSpawnDate:
          type: string
          format: date-time
          description: Date and time when the assistant should start spawning conversations
        autoSpawn:
          type: boolean
          description: Whether the assistant automatically spawns conversations
        spawnInterval:
          type: integer
          description: Interval in days for spawning new conversations
        gracePeriod:
          type: integer
          description: Grace period in days before the assistant starts spawning new conversations
        slackChannel:
          type: string
          description: Slack channel to publish conversations in
        conversationCount:
          type: integer
          description: Total number of conversations associated with the assistant
        createdAt:
          type: string
          format: date-time
          description: Date and time when the assistant was created
        updatedAt:
          type: string
          format: date-time
          description: Date and time when the assistant was last updated
    FeedbackexplorerAssistantSettings:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the OpenAI assistant
        instructions:
          type: string
          description: Instructions or guidelines for the OpenAI assistant
        temperature:
          type: number
          description: Controls randomness in the assistant's responses
        top_p:
          type: number
          description: Controls diversity in the assistant's responses
    FeedbackexplorerAutospawn:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the auto spawn record
        assistantId:
          type: string
          description: Unique identifier for the associated assistant
        userHash:
          type: string
          description: Hash of the user associated with the auto spawn record
        nextSpawn:
          type: string
          format: date-time
          description: Date and time when the next spawn is scheduled
        createdAt:
          type: string
          format: date-time
          description: Date and time when the auto spawn record was created
    FeedbackexplorerAutospawnPagedResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/FeedbackexplorerAutospawn'
        page:
          type: integer
          description: Current page number
        limit:
          type: integer
          description: Number of records per page
        total:
          type: integer
          description: Total number of records across all pages
    FeedbackexplorerConversation:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the conversation
        assistantId:
          type: string
          description: Unique identifier for the associated assistant
        threadId:
          type: string
          description: Unique identifier for the conversation thread
        userHash:
          type: string
          description: Hash of the user associated with the conversation
        isTest:
          type: boolean
          description: Indicates if the conversation is a test conversation
        status:
          type: integer
          description: Status of the conversation
        createdAt:
          type: string
          format: date-time
          description: Date and time when the conversation was created
        updatedAt:
          type: string
          format: date-time
          description: Date and time when the conversation was last updated
    FeedbackexplorerCreateAssistantRequest:
      type: object
      required:
        - name
        - initialMessage
        - userContext
      properties:
        name:
          type: string
          description: Name of the assistant
        initialMessage:
          type: string
          description: Initial message or prompt for the assistant
        userContext:
          type: string
          description: Context or background information for the user
    FeedbackexplorerCreateConversationRequest:
      type: object
      required:
        - assistantId
        - userHash
        - isTest
      properties:
        assistantId:
          type: string
          description: Unique identifier of the associated assistant
        userHash:
          type: string
          description: Hash of the user associated with the conversation
        metadata:
          type: array
          description: Metadata associated with the conversation
          items:
            $ref: '#/components/schemas/FeedbackexplorerMetadata'
        isTest:
          type: boolean
          description: Indicates if the conversation is a test conversation
    FeedbackexplorerFilter:
      type: object
      properties:
        name:
          type: string
          description: Name of the filter
        values:
          type: array
          description: List of values for the filter
          items:
            type: string
    FeedbackexplorerFiltersRequest:
      type: object
      properties:
        filters:
          type: object
          description: Filters to apply to the feedback data
          additionalProperties:
            type: string
    FeedbackexplorerMessage:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the message
        conversationId:
          type: string
          description: Identifier for the conversation this message belongs to
        message:
          type: string
          description: Content of the message
        isCustomer:
          type: boolean
          description: Indicates if the message is from the end-user
        createdAt:
          type: string
          format: date-time
          description: Date and time when the message was created
    FeedbackexplorerMetadata:
      type: object
      properties:
        key:
          type: string
          description: Unique key for the metadata
        value:
          type: string
          description: Value associated with the metadata key
    FeedbackexplorerRemindRequest:
      type: object
      required:
        - remindDays
      properties:
        remindDays:
          type: integer
          description: Number of days after which to send a reminder
    FeedbackexplorerSendMessageRequest:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: The content of the message for the conversation
    FeedbackexplorerSentimentResponse:
      type: object
      properties:
        sentiment:
          type: object
          description: Sentiment analysis data
    FeedbackexplorerShouldSpawnResponse:
      type: object
      properties:
        shouldSpawn:
          type: boolean
          description: Indicates whether a new conversation should be spawned
    FeedbackexplorerSuccessResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the operation was successful
    FeedbackexplorerTag:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the tag
        conversationId:
          type: string
          description: Identifier for the conversation this tag belongs to
        tag:
          type: string
          description: The tag text
        isPositive:
          type: boolean
          description: Indicates if the tag is positive
        createdAt:
          type: string
          format: date-time
          description: Date and time when the tag was created
    FeedbackexplorerTagsResponse:
      type: object
      properties:
        positiveTags:
          type: array
          description: List of positive tags associated with the conversation
          items:
            $ref: '#/components/schemas/FeedbackexplorerTag'
        negativeTags:
          type: array
          description: List of negative tags associated with the conversation
          items:
            $ref: '#/components/schemas/FeedbackexplorerTag'
    FeedbackexplorerUpdateAssistantRequest:
      type: object
      properties:
        name:
          type: string
          description: Name of the assistant
        initialMessage:
          type: string
          description: Initial message to start the conversation
        userContext:
          type: string
          description: Context or background information for the user
        initialSpawnDate:
          type: string
          format: date-time
          description: Date and time when the assistant should start spawning conversations
        autoSpawn:
          type: boolean
          description: Whether the assistant automatically spawns conversations
        spawnInterval:
          type: integer
          description: Interval in days for spawning new conversations
        gracePeriod:
          type: integer
          description: Grace period in days before the assistant starts spawning new conversations
        slackChannel:
          type: string
          description: Slack channel to publish conversations in
    FeedbackexplorerUpdateAssistantSettingsRequest:
      type: object
      properties:
        assistant:
          type: object
          description: The assistant settings to be updated
          properties:
            instructions:
              type: string
              description: Instructions or guidelines for the OpenAI assistant
            temperature:
              type: number
              description: Controls randomness in the assistant's responses
            top_p:
              type: number
              description: Controls diversity in the assistant's responses
    FeedbackexplorerUpdateConversationRequest:
      type: object
      properties:
        status:
          type: integer
          description: Status of the conversation
        userHash:
          type: string
          description: Hash of the user associated with the conversation
        isTest:
          type: boolean
          description: Indicates if the conversation is a test conversation
    FinancecoreorchestratorInvoiceListItem:
      description: A single invoice in the partner invoice list
      type: object
      properties:
        id:
          description: The public invoice id
          type: string
        date:
          description: The invoice date in the tenant's local timezone
          format: date
          type: string
        periodStart:
          description: The start date of the invoice period
          format: date
          type: string
        periodEnd:
          description: The end date of the invoice period
          format: date
          type: string
        amount:
          description: Gross amount in minor units, for example cents
          format: int64
          type: integer
        currency:
          description: ISO 4217 currency code for the tenant
          type: string
        status:
          description: The invoice payment status
          type: string
          enum:
            - outstanding
            - settled
            - writtenoff
    FinancecoreorchestratorInvoiceListResult:
      description: A paginated list of partner invoices
      type: object
      properties:
        items:
          description: The invoices on the current page
          type: array
          items:
            $ref: '#/components/schemas/FinancecoreorchestratorInvoiceListItem'
        hasMore:
          description: True when further pages are available
          type: boolean
        nextPage:
          description: The next page number when more results are available; null otherwise
          format: int32
          type: integer
          nullable: true
      example:
        items:
          - id: INV-2026-001
            date: '2026-02-01'
            periodStart: '2026-01-01'
            periodEnd: '2026-01-31'
            amount: 123456
            currency: EUR
            status: settled
          - id: INV-2026-002
            date: '2026-01-15'
            periodStart: '2025-12-01'
            periodEnd: '2025-12-31'
            amount: 245678
            currency: EUR
            status: outstanding
        hasMore: true
        nextPage: 2
    FinancecoreorchestratorTurnoverResult:
      description: Total turnover for a partner over a period
      type: object
      properties:
        totalTurnover:
          description: The total turnover (product value + service charge + delivery service)
          type: number
          format: decimal
        currency:
          description: ISO 4217 currency code for the tenant
          type: string
        periodStart:
          description: The start date of the turnover period
          format: date
          type: string
        periodEnd:
          description: The end date of the turnover period
          format: date
          type: string
      example:
        totalTurnover: 72.5
        currency: EUR
        periodStart: '2026-07-01'
        periodEnd: '2026-07-20'
    FinancialmanagementGracePeriodEndResponse:
      type: integer
      format: int64
      nullable: true
      description: Unix epoch timestamp in milliseconds when the courier's grace period ends. Returns null when no grace period applies or has not been set.
      example: 1704067200000
    FoodSafetyAdditive:
      additionalProperties: false
      type: object
      description: List of Additives
      example:
        code: '10.2'
      properties:
        code:
          nullable: false
          description: Additive code of Takeaway Standard from TMS
          type: string
    FoodSafetyAllergen:
      additionalProperties: false
      type: object
      description: List of  Allergens
      example:
        code: A
      properties:
        code:
          nullable: false
          description: Allergen code of Takeaway Standard from TMS
          type: string
    FoodSafetyIngredients:
      additionalProperties: false
      type: object
      description: List of ingredients
      example:
        name: wasser
      properties:
        name:
          nullable: false
          description: Name of ingredient
          type: string
    FoodSafetyManufacturer:
      description: Object for manufacturer data
      type: object
      properties:
        streetAddress:
          nullable: true
          description: Street Address
          type: string
        brand:
          nullable: true
          description: Brand name
          type: string
        city:
          nullable: true
          description: The City
          type: string
        origin:
          nullable: true
          description: Country
          type: string
        manufacturer:
          nullable: true
          description: Manufacturer name
          type: string
        postalCode:
          nullable: true
          description: Postal Code
          type: string
      example:
        streetAddress: Bergense Steenweg 1424
        brand: Coca-Cola Zero
        city: Anderlecht
        origin: Deutschland
        manufacturer: Coca-Cola Erfrischungsgetränke AG, Postfach 67 01 56, 10207 Berlin
        postalCode: '1070'
    FoodSafetyNutritional:
      type: object
      properties:
        fattyAcidTotal:
          description: Fatty Acid value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
        calories:
          description: Calories value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
        energy:
          description: Energy value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
        caffeine:
          description: Caffeine milligram value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
        fat:
          description: Fat value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
        sugar:
          description: Sugar value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
        carbohydrate:
          description: Carbohydrate value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
        alcohol:
          description: Alcohol by volume value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
        sodium:
          description: Sodium value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
        protein:
          description: Protein value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
        salt:
          description: Salt value for product
          properties:
            unit:
              nullable: false
              description: Unit of the item
              type: string
            value:
              nullable: true
              description: Value of the item
              type: number
      example:
        fattyAcidTotal:
          unit: mg
          value: 100
        calories:
          unit: kcal
          value: 42
        energy:
          unit: kJ
          value: 175.5
        caffeine:
          unit: mg
          value: 10
        fat:
          unit: mg
          value: 16000
        sugar:
          unit: mg
          value: 9100
        carbohydrate:
          unit: mg
          value: 22000
        alcohol:
          unit: '%'
          value: 7.5
        sodium:
          unit: mg
          value: 10
        protein:
          unit: mg
          value: 4000.01
        salt:
          unit: mg
          value: 20
    FoodSafetyPagedFoodSafetyResponse:
      allOf:
        - $ref: '#/components/schemas/PagingPagedAfterOnlyCursorResponse'
        - properties:
            data:
              maxItems: 500
              type: array
              minItems: 0
              items:
                $ref: '#/components/schemas/FoodSafetyProductFoodSafety'
              description: List of Products with food safety data.
          type: object
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw==
        data:
          - additives:
              - code: '10.2'
            storage:
              stgInstruction: Example
            type: product
            nutritional:
              fattyAcidTotal:
                unit: mg
                value: 100
              calories:
                unit: kcal
                value: 42
              energy:
                unit: kJ
                value: 175.5
              caffeine:
                unit: mg
                value: 10
              fat:
                unit: mg
                value: 16000
              sugar:
                unit: mg
                value: 9100
              carbohydrate:
                unit: mg
                value: 22000
              alcohol:
                unit: '%'
                value: 7.5
              sodium:
                unit: mg
                value: 10
              protein:
                unit: mg
                value: 4000.01
              salt:
                unit: mg
                value: 20
            allergens:
              - code: A
            id: RRR3PRE
            manufacturer:
              streetAddress: Bergense Steenweg 1424
              brand: Coca-Cola Zero
              city: Anderlecht
              origin: Deutschland
              manufacturer: Coca-Cola Erfrischungsgetränke AG, Postfach 67 01 56, 10207 Berlin
              postalCode: '1070'
            ingredients:
              - wasser
    FoodSafetyProductFoodSafety:
      additionalProperties: false
      properties:
        additives:
          maxItems: 26
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/FoodSafetyAdditive'
          description: List of additives
          nullable: false
        storage:
          allOf:
            - $ref: '#/components/schemas/FoodSafetyStorage'
          description: Object for storage data
          nullable: false
          type: object
        type:
          nullable: false
          description: Product or Addon
          type: string
        nutritional:
          allOf:
            - $ref: '#/components/schemas/FoodSafetyNutritional'
          description: Object for nutritional data
          nullable: false
          type: object
        allergens:
          maxItems: 29
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/FoodSafetyAllergen'
          description: List of allergens
          nullable: false
        id:
          nullable: false
          description: Encrypted Product/Addon Id
          type: string
        manufacturer:
          $ref: '#/components/schemas/FoodSafetyManufacturer'
          nullable: false
        ingredients:
          maxItems: 80
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/FoodSafetyIngredients'
          description: List of ingredients
          nullable: false
      type: object
    FoodSafetyStorage:
      type: object
      properties:
        stgInstruction:
          nullable: true
          description: Storage/Usage instructions
          type: string
      example:
        stgInstruction: Example
    FraudpreventionRiskAssessmentErrorResponse:
      description: An error HTTP risk assessment response
      properties:
        traceId:
          nullable: false
          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
        faultId:
          nullable: false
          description: A value that helps identify this response back to logs, so we can easily find this specific fault.
          type: string
        errors:
          nullable: false
          items:
            required:
              - description
              - code
            additionalProperties: false
            type: object
            properties:
              description:
                nullable: false
                description: Specific details about the error that may assist you in resolving the issue.
                type: string
              code:
                nullable: false
                description: A value that identifies the type of error returned
                type: string
            nullable: false
          description: List of errors that may assist you in resolving the issues.
          type: array
      type: object
    FraudpreventionRiskAssessmentRequest:
      description: Details needed for an intent risk assessment
      type: object
    FraudpreventionRiskAssessmentResponse:
      description: A successful HTTP risk assessment response
      properties:
        assessment_id:
          nullable: false
          description: A unique value which identifies the risk assessment
          type: string
        recommendation:
          nullable: false
          description: A value containing the risk assessment results
          enum:
            - allow
            - review
            - block
          type: string
        reason:
          nullable: false
          description: A value explaining the risk assessment result
          type: string
      type: object
    GenaisearchCoreSearchRequest:
      additionalProperties: false
      type: object
      properties:
        latLng:
          type: string
          description: Latitude and longitude, comma separated, for example `51.5074,-0.1278`
        locale:
          type: string
          description: Locale for localized results, for example `en-GB`
        extractedParameters:
          type: object
          additionalProperties: false
          description: Pre-extracted query parameters used to perform the search without LLM extraction
          properties:
            partnerIds:
              type: array
              items:
                type: string
              nullable: true
              description: Partner Ids, if mentioned in the query
            partnerNames:
              type: array
              items:
                type: string
              nullable: true
              description: Partner names, if mentioned in the query
            attributes:
              type: array
              nullable: true
              description: Search attributes extracted from the query, represented as camel case enum values.
              items:
                type: string
                enum:
                  - nearMe
                  - speedyDelivery
                  - cheapest
                  - vegan
                  - nutFree
                  - glutenFree
                  - plantBased
                  - spicy
                  - sweet
                  - refreshing
                  - authentic
                  - specialOffers
                  - deals
                  - savings
                  - halal
                  - vegetarian
                  - lowCalorie
                  - freeDelivery
                  - lowDeliveryFee
                  - noMinimumOrderValue
                  - lowMinimumOrderValue
                  - other
            mentionedCategories:
              type: array
              nullable: true
              description: Categories explicitly mentioned by the user. Values must use the camel case Partner Listing API category identifiers that correspond to the localized category names for the requested locale.
              items:
                type: string
                enum:
                  - african
                  - alcohol
                  - american
                  - asian
                  - bagels
                  - bakery
                  - bangladeshi
                  - biryani
                  - brazilianFood
                  - breakfast
                  - british
                  - brunch
                  - bubbleTea
                  - burgers
                  - burritos
                  - cafe
                  - cakes
                  - cantonese
                  - caribbean
                  - carvery
                  - chicken
                  - chinese
                  - coffee
                  - collectStamps
                  - colombian
                  - convenience
                  - curry
                  - deals
                  - desserts
                  - drinks
                  - electronics
                  - english
                  - fastFood
                  - fishAndChips
                  - freebies
                  - french
                  - greek
                  - grill
                  - groceries
                  - halal
                  - healthy
                  - hotDogs
                  - indian
                  - italian
                  - jamaican
                  - japanese
                  - jerk
                  - kebab
                  - korean
                  - latinAmerican
                  - localLegends
                  - lowDeliveryFee
                  - lunch
                  - mediterranean
                  - mexican
                  - middleEastern
                  - milkshakes
                  - nigerian
                  - noodles
                  - oriental
                  - pasta
                  - periPeri
                  - pies
                  - pizza
                  - poke
                  - pubFood
                  - roastDinners
                  - sandwiches
                  - seafood
                  - shops
                  - southIndian
                  - sriLankan
                  - steak
                  - sushi
                  - texMex
                  - thai
                  - turkish
                  - vegan
                  - vegetarian
                  - waffles
            generatedCategories:
              type: array
              nullable: true
              description: Additional categories inferred for the query. Values must use the camel case Partner Listing API category identifiers that correspond to the localized category names for the requested locale.
              items:
                type: string
                enum:
                  - african
                  - alcohol
                  - american
                  - asian
                  - bagels
                  - bakery
                  - bangladeshi
                  - biryani
                  - brazilianFood
                  - breakfast
                  - british
                  - brunch
                  - bubbleTea
                  - burgers
                  - burritos
                  - cafe
                  - cakes
                  - cantonese
                  - caribbean
                  - carvery
                  - chicken
                  - chinese
                  - coffee
                  - collectStamps
                  - colombian
                  - convenience
                  - curry
                  - deals
                  - desserts
                  - drinks
                  - electronics
                  - english
                  - fastFood
                  - fishAndChips
                  - freebies
                  - french
                  - greek
                  - grill
                  - groceries
                  - halal
                  - healthy
                  - hotDogs
                  - indian
                  - italian
                  - jamaican
                  - japanese
                  - jerk
                  - kebab
                  - korean
                  - latinAmerican
                  - localLegends
                  - lowDeliveryFee
                  - lunch
                  - mediterranean
                  - mexican
                  - middleEastern
                  - milkshakes
                  - nigerian
                  - noodles
                  - oriental
                  - pasta
                  - periPeri
                  - pies
                  - pizza
                  - poke
                  - pubFood
                  - roastDinners
                  - sandwiches
                  - seafood
                  - shops
                  - southIndian
                  - sriLankan
                  - steak
                  - sushi
                  - texMex
                  - thai
                  - turkish
                  - vegan
                  - vegetarian
                  - waffles
            products:
              type: array
              nullable: true
              description: Requested products with optional matching hints and price limits
              items:
                type: object
                additionalProperties: false
                properties:
                  name:
                    type: string
                    nullable: true
                    description: Extracted product name
                  synonyms:
                    type: array
                    nullable: true
                    description: Alternative product names
                    items:
                      type: string
                  variations:
                    type: array
                    nullable: true
                    description: Natural product variations
                    items:
                      type: string
                  maxPrice:
                    type: number
                    format: double
                    nullable: true
                    description: Maximum price for this specific product, if any. The API may also accept this field as `priceLimit`.
                  boosts:
                    type: array
                    nullable: true
                    description: Terms that should increase match relevance
                    items:
                      type: string
                  exclusions:
                    type: array
                    nullable: true
                    description: Terms that should be excluded from matching
                    items:
                      type: string
            budget:
              type: number
              format: double
              nullable: true
              description: Overall customer budget, if any
        searchQuery:
          type: string
          description: Original user query. Optional and defaults to an empty string.
      required:
        - latLng
        - locale
        - extractedParameters
    GenaisearchSearchResultPartner:
      additionalProperties: false
      type: object
      properties:
        restaurantId:
          type: string
          description: Unique identifier for the restaurant
        restaurantName:
          type: string
          nullable: true
          description: Restaurant display name
        uniqueName:
          type: string
          nullable: true
          description: Restaurant unique name
        logoUrl:
          type: string
          nullable: true
          description: URL to the restaurant logo
        bannerUrl:
          type: string
          nullable: true
          description: URL to the restaurant banner image
        isOpenForDelivery:
          type: boolean
          nullable: true
          description: Indicates whether the restaurant is open for delivery
        isOpenForPreOrder:
          type: boolean
          nullable: true
          description: Indicates whether the restaurant is open for preorder
        starRating:
          type: number
          format: double
          nullable: true
          description: Restaurant star rating
        hasOffers:
          type: boolean
          nullable: true
          description: Indicates whether the restaurant currently has offers
        deliveryEtaMinutes:
          type: object
          nullable: true
          additionalProperties: false
          description: Estimated delivery time details in minutes
          properties:
            approximate:
              type: integer
              description: Approximate delivery time in minutes
            rangeLower:
              type: integer
              description: Lower bound of the delivery estimate in minutes
            rangeUpper:
              type: integer
              description: Upper bound of the delivery estimate in minutes
          required:
            - approximate
            - rangeLower
            - rangeUpper
        minimumDeliveryValue:
          type: number
          format: double
          nullable: true
          description: Minimum basket value for delivery
        deliveryFee:
          type: number
          format: double
          nullable: true
          description: Delivery fee in major currency units
        cuisines:
          type: array
          nullable: true
          description: Cuisines associated with the restaurant
          items:
            type: object
            additionalProperties: false
            properties:
              title:
                type: string
                description: Cuisine title
              id:
                type: string
                description: Cuisine identifier
            required:
              - title
              - id
        partnerHitScore:
          type: number
          format: double
          nullable: true
          description: Relevance score for the restaurant match
        products:
          type: array
          description: Matching products found for the restaurant
          items:
            type: object
            additionalProperties: false
            properties:
              productId:
                type: string
                description: Unique identifier for the product
              variationId:
                type: string
                nullable: true
                description: Unique identifier for the product variation
              fullName:
                type: string
                description: Full name of the product
              productPrice:
                type: object
                nullable: true
                additionalProperties: false
                description: Detailed product price
                properties:
                  basePrice:
                    type: integer
                    description: The value of this product's base price in the minor unit of the currency.
                  depositAmount:
                    type: integer
                    nullable: true
                    description: The amount that can be received by a customer for depositing the item's packaging.
                  depositType:
                    type: string
                    nullable: true
                    description: The type of deposit price to indicate if it's inclusive or exclusive of the base price.
                required:
                  - basePrice
              imageUrl:
                type: string
                nullable: true
                description: URL to the product image
              productCategory:
                type: array
                nullable: true
                description: Product category path or category names
                items:
                  type: string
              productHitScore:
                type: number
                format: double
                nullable: true
                description: Relevance score for the product match
              popularity:
                type: number
                format: double
                nullable: true
                description: Popularity score for the product
            required:
              - productId
              - fullName
      required:
        - restaurantId
        - products
    GenaisearchSearchUpdate:
      additionalProperties: false
      type: object
      properties:
        text:
          type: string
          description: Description or message for the update
        result:
          description: Actual search result
          type: object
          nullable: true
          properties:
            restaurants:
              type: array
              items:
                type: object
                properties:
                  restaurantId:
                    type: string
                    description: Unique identifier for the restaurant
                  products:
                    type: array
                    items:
                      type: object
                      properties:
                        productId:
                          type: string
                          description: Unique identifier for the product
                        price:
                          type: integer
                          description: Price of the product
                        fullName:
                          type: string
                          description: Full name of the product
                        imageUrl:
                          type: string
                          nullable: true
                          description: URL to the product image
                        productPrice:
                          type: object
                          description: The detailed price of the product
                          properties:
                            basePrice:
                              type: integer
                              description: The value of this product's base price in the minor unit of the currency.
                            depositAmount:
                              type: integer
                              nullable: true
                              description: The amount that can be received by a customer for depositing the item's packaging, in the minor unit of the currency.
                            depositType:
                              type: string
                              nullable: true
                              description: The type of deposit price to indicate if it's inclusive or exclusive of the base price.
                        numberOfServings:
                          type: object
                          nullable: true
                          description: The number of servings in the product
                          properties:
                            min:
                              type: integer
                              nullable: true
                              description: The minimum number of servings
                            max:
                              type: integer
                              nullable: true
                              description: The maximum number of servings
                        energyContent:
                          type: array
                          nullable: true
                          description: The energy content of the product
                          items:
                            type: object
                            properties:
                              unit:
                                type: string
                                nullable: true
                                description: Unit of measurement for the energy content
                              min:
                                type: integer
                                nullable: true
                                description: The minimum energy value
                              max:
                                type: integer
                                nullable: true
                                description: The maximum energy value
                      required:
                        - productId
                        - price
                        - fullName
                  isPromoted:
                    type: boolean
                    nullable: true
                    description: Indicates if the restaurant is promoted
                  sponsoredCampaignId:
                    type: string
                    nullable: true
                    description: Unique identifier for the sponsored campaign
                required:
                  - restaurantId
                  - products
            currencyCode:
              description: The currency, in ISO 4217 format, used for all prices in the response.
              type: string
          required:
            - restaurants
            - currencyCode
      required:
        - text
    GiftcardsGiftCardsErrorResponse:
      description: An error response for gift cards
      properties:
        codeText:
          type: string
          description: The description of the error
        code:
          format: int32
          type: integer
          description: The error code
      type: object
    GiftcardsSearchByPanResponse:
      properties:
        amount:
          format: int32
          type: integer
          description: The amount
        pan:
          type: string
          description: The pan
        redemptionHistory:
          items:
            properties:
              statusDetails:
                type: string
                description: The status
              redeemedOn:
                format: date-time
                type: string
                description: When the gift card was redeemed
              consumerId:
                type: string
                description: The consumer Id
              transactionId:
                type: string
                description: The transaction Id
              status:
                enum:
                  - Redeemed
                  - Failed
                type: string
                description: The status of the gift card
            type: object
          type: array
      type: object
      description: A set of search results
    GlobalorderartifactsserviceDownloadInvoiceRequest:
      description: Request body for downloading an invoice
      type: object
      required:
        - orderId
      properties:
        orderId:
          type: string
          description: The unique identifier of the order whose invoice should be downloaded
          example: qq2hwprhjky8otbuo9xvwg
        operationType:
          type: string
          description: The operation type of the invoice to retrieve. Currently only `created` is supported. Defaults to `created` if not provided.
          enum:
            - created
          default: created
          example: created
    GlobalorderartifactsserviceDownloadInvoiceResponse:
      description: Response containing a pre-signed URL to download the invoice PDF
      type: object
      required:
        - url
      properties:
        url:
          type: string
          format: uri
          description: A temporary pre-signed S3 URL to download the invoice PDF
          example: https://s3.eu-west-1.amazonaws.com/bucket/invoices/DE-CS-2026-300059497.pdf?X-Amz-Signature=...
    GrocerylegaldocumentspdfpipelineErrorResponse:
      description: An error response from the grocery legal documents PDF upload.
      type: object
      properties:
        title:
          type: string
          description: A summary of the error.
          example: Unauthorized
        code:
          type: string
          description: A machine-readable error code.
          example: INVALID_TOKEN
        detail:
          type: string
          description: A human-readable explanation of the error.
          example: Invalid or missing bearer token
        requestId:
          type: string
          description: A unique identifier for the request.
          example: 550e8400-e29b-41d4-a716-446655440001
        validationErrors:
          type: array
          description: A list of validation errors. Present on 400 error response.
          items:
            type: object
            properties:
              code:
                type: string
                description: A machine-readable validation error code.
                example: INVALID_FORMAT
              description:
                type: string
                description: A human-readable explanation of the validation error.
                example: File must be application/pdf
              element:
                type: string
                description: The field or element that caused the validation error.
                example: $.file
    GroceryqueriesCancellationApproveCancellationQuery:
      properties:
        notes:
          description: Some notes in regards of cancellation
          type: string
      type: object
      example:
        notes: Customer called us to cancel the order
    GroceryqueriesCancellationCreateCancellationQuery:
      properties:
        reasonCode:
          description: The reason why cancellation was created
          type: string
          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
        comments:
          description: Comments on why the order was cancelled
          type: string
      type: object
      example:
        reasonCode: rest_cancelled_customer_requested
        comments: There was a problem with the customer
    GroceryqueriesCancellationCreateCancellationQueryResponse:
      properties:
        orderId:
          description: Id of the order to be cancelled
          type: string
        reasonCode:
          description: Reason for cancellation
          type: string
          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
        comments:
          description: Additional comments regarding cancellation
          type: string
        state:
          description: State of the cancellation query
          type: string
          enum:
            - New
            - Offered
            - Declined
            - Approved
        createdAt:
          description: Date of cancellation query creation in ISO 8601 format.
          type: string
          format: date-time
        policyResult:
          description: Result of policies evaluation
          type: object
          properties:
            outcome:
              description: Outcome of policies evaluation
              type: object
              properties:
                fee:
                  description: Fee associated with cancellation query
                  type: object
                  properties:
                    amount:
                      description: Amount
                      type: number
                decision:
                  description: Final decision
                  type: string
                  enum:
                    - Offered
                    - Declined
            eligibility:
              description: Collection of evaluated eligibility policies
              type: array
              items:
                description: Policy details
                type: object
                properties:
                  code:
                    description: Name of the policy
                    type: string
                  passed:
                    description: Flag to indicate whether the policy was successful or not
                    type: boolean
                  overridable:
                    description: Flag to indicate whether the policy can be overridden or not
                    type: boolean
        resolution:
          description: Overall result of cancellation query
          type: object
          properties:
            by:
              description: Who initiated the query (restaurant, customer etc.)
              type: string
            userName:
              description: Name of query initiator
              type: string
            at:
              description: When was the query resolved in ISO 8601 format.
              type: string
              format: date-time
            notes:
              description: Additional notes
              type: string
      example:
        orderId: 123qwe
        reasonCode: rest_cancelled_other
        comments: example comments
        state: Offered
        createdAt: '2022-09-09T12:55:56.0149188Z'
        policyResult:
          outcome:
            fee:
              amount: 0
            decision: Offered
          eligibility:
            - code: BlockCashOrders
              passed: true
              overridable: false
        resolution:
          by: person
          userName: joe bloggs
          at: '2022-09-09T12:55:56.0149188Z'
          notes: Cancelled because didn't need
    HelixexperienceapiA2ARequest:
      type: object
      description: |
        A JSON-RPC 2.0 request following the [A2A protocol](https://a2a-protocol.org/).
        The full schema is defined by the upstream A2A specification; this is a minimal
        envelope for documentation purposes.
      required:
        - jsonrpc
        - method
        - params
      properties:
        jsonrpc:
          type: string
          description: JSON-RPC protocol version. Must be `"2.0"`.
          enum:
            - '2.0'
        id:
          description: Request identifier. Echoed back in every response event.
          oneOf:
            - type: string
            - type: integer
        method:
          type: string
          description: |
            A2A method to invoke. This endpoint currently accepts `message/send` and
            `message/stream`; other A2A methods are rejected by the service. See the
            [A2A protocol](https://a2a-protocol.org/) for the full method list.
        params:
          type: object
          description: Method parameters as defined by the A2A protocol (e.g. `MessageSendParams`).
          additionalProperties: true
      additionalProperties: true
    HelixexperienceapiAguiRunAgentInput:
      type: object
      description: |
        AG-UI [`RunAgentInput`](https://docs.ag-ui.com/) payload. The full schema is
        defined by the upstream AG-UI protocol; this is a minimal envelope for
        documentation purposes.
      required:
        - threadId
        - runId
        - messages
      properties:
        threadId:
          type: string
          description: Conversation thread identifier. Forwarded to the agent as `contextId`.
        runId:
          type: string
          description: Unique identifier for this run.
        messages:
          type: array
          description: Conversation history. The last message is the new user turn.
          items:
            type: object
            additionalProperties: true
        tools:
          type: array
          description: Tools available to the agent for this run.
          items:
            type: object
            additionalProperties: true
        context:
          type: array
          description: Additional context entries supplied by the client.
          items:
            type: object
            additionalProperties: true
        forwardedProps:
          type: object
          description: Free-form properties forwarded to the agent as metadata.
          additionalProperties: true
        state:
          type: object
          description: Client-side state passed through to the agent.
          additionalProperties: true
      additionalProperties: true
    HolidaySurveysAddPartnerHolidaySurveyResponse:
      properties:
        partnerResponse:
          nullable: false
          description: The answer for the holiday survey. Responses mean yes to close, no to stay open, noAnswer if they dismiss the survey
          type: string
          enum:
            - 'yes'
            - 'no'
            - noAnswer
      required:
        - partnerResponse
    HolidaySurveysHolidaySurvey:
      properties:
        actionDate:
          nullable: false
          description: Date at which the national holiday happens
          type: string
          format: date-time
        id:
          nullable: false
          description: Unique identifier for the survey
          type: string
        name:
          nullable: false
          description: The name of the survey
          type: string
        surveyQuestions:
          nullable: false
          description: The survey questions & their relevant language translations
          type: array
          items:
            $ref: '#/components/schemas/HolidaySurveysHolidaySurveyQuestion'
      additionalProperties: false
    HolidaySurveysHolidaySurveyQuestion:
      properties:
        name:
          nullable: false
          description: Survey name that will display as the title on restaurant devices
          type: string
        question:
          nullable: false
          description: Survey question translated into the language codes language
          type: string
        languageCode:
          nullable: false
          description: Code representing what language the survey is asked in
          type: string
      example:
        name: Almost Christmas Day
        question: Will your restaurant or store be closed on the 25 December 2024?
        languageCode: en
    HolidaySurveysHolidaySurveysResponse:
      properties:
        holidaySurveys:
          nullable: false
          description: The holiday surveys that are active for a restaurant partner
          type: array
          items:
            $ref: '#/components/schemas/HolidaySurveysHolidaySurvey'
    HygieneResponsesRestaurantHygiene:
      type: object
      properties:
        imageUrl:
          type: string
          description: The image that reflects the current hygiene rating.
        alternativeText:
          type: string
          description: The text that reflects the current hygiene rating to support the rendering of the image.
          nullable: true
        moreInfoUrl:
          type: string
          description: A URL to navigate the customer to the local hygiene authority to get more information.
        status:
          type: string
          enum:
            - Rated
            - Pending
          description: |
            The summary describing where the restaurant is in regards to getting a hygiene status. The supported values are:
              * `Rated` - Indicates the restaurant has a rating.
              * `Pending` - Indicates the restaurant has recently had an inspection and a rating will be available soon.
        lastInspectionDate:
          type: string
          format: date-time
          description: The date of the latest inspection occurred for the restaurant.
        rating:
          type: string
          description: The raw rating value from the local authority.
        previousInspections:
          type: array
          description: The past inspections that the restaurant has gone through. This is currently only available for Denmark.
          items:
            type: object
            description: An inspection result.
            properties:
              imageUrl:
                type: string
                description: The image that reflects the hygiene rating received for the inspection.
              alternativeText:
                type: string
                description: The text that reflects the hygiene rating received for the inspection to support the rendering of the image.
                nullable: true
              rating:
                type: string
                description: The raw rating value received from the local authority.
              inspectionDate:
                type: string
                format: date-time
                description: The date of the inspection.
            required:
              - imageUrl
              - alternativeText
              - rating
              - inspectionDate
      required:
        - imageUrl
        - alternativeText
        - moreInfoUrl
        - status
        - lastInspectionDate
        - rating
    HygieneRatingRequestsHygieneRatingRequest:
      type: object
      properties:
        hygieneAuthorityId:
          nullable: false
          description: The id of the hygiene authority for the partner.
          type: string
    HygieneRatingResponsesDkHygieneRatingResponse:
      type: object
      properties:
        hygieneAuthorityId:
          nullable: false
          description: The partner's id at the external hygiene authority.
          type: string
        hygieneAuthorityUrl:
          nullable: true
          description: The url that includes the official rating information.
          type: string
        hygieneRatingScheme:
          nullable: false
          description: Name of the official scheme which operates the hygiene ratings.
          type: string
          enum:
            - smiley
            - fhrs
        inspections:
          nullable: true
          type: array
          description: The last inspections from most recent to older. Most recent reflects the current rating.
          items:
            type: object
            properties:
              rating:
                nullable: false
                type: integer
                description: Rating of the inspection.
              inspectionDate:
                nullable: false
                description: Date of the inspection.
                type: string
                format: date-time
          example:
            - rating: 1
              inspectionDate: '2025-07-10T00:00:00Z'
            - rating: 2
              inspectionDate: '2024-07-10T00:00:00Z'
            - rating: 3
              inspectionDate: '2023-07-10T00:00:00Z'
    HygieneRatingResponsesUkHygieneRatingResponse:
      type: object
      properties:
        hygieneAuthorityId:
          nullable: false
          description: The partner's id at the external hygiene authority.
          type: string
        hygieneAuthorityUrl:
          nullable: false
          description: The url that includes the official rating information.
          type: string
        hygieneRatingScheme:
          nullable: false
          description: Name of the official scheme which operates the hygiene ratings.
          enum:
            - smiley
            - fhrs
          type: string
        inspections:
          nullable: true
          type: array
          description: The last inspections from most recent to older. Most recent reflects the current rating.
          items:
            type: object
            properties:
              rating:
                nullable: false
                type: integer
                description: Rating of the inspection.
              inspectionDate:
                nullable: false
                description: Date of the inspection.
                type: string
                format: date-time
              ratingKey:
                nullable: false
                description: An identifier that represents the specific hygiene rating within its scheme and locale.
                type: string
          example:
            - rating: 5
              inspectionDate: '2025-07-10T00:00:00Z'
              ratingKey: fhrs_5_en-gb
    IdentityserviceConsumerResponse:
      type: object
      required:
        - id
      properties:
        id:
          description: The unique identifier for the consumer
          type: string
        emailAddress:
          description: The email address of the consumer
          type: string
          nullable: true
        firstName:
          description: The first name of the consumer
          type: string
          nullable: true
        surname:
          description: The surname of the consumer
          type: string
          nullable: true
        postcode:
          description: The postcode of the consumer
          type: string
          nullable: true
        city:
          description: The city of the consumer
          type: string
          nullable: true
        phoneNumber:
          description: The phone number of the consumer
          type: string
          nullable: true
        accountType:
          description: The account type of the consumer. 0 = registered, 1 = guest
          type: integer
          nullable: true
          example: 0
        fullName:
          description: The full name of the consumer
          type: string
          nullable: true
        company:
          description: The company name associated with the consumer
          type: string
          nullable: true
        customerLanguage:
          description: The preferred language of the consumer
          type: string
          nullable: true
        newsletter:
          description: Whether the consumer is subscribed to the newsletter
          type: boolean
          nullable: true
    IdentityserviceForgetConsumerRequest:
      description: The request body for initiating a consumer forget (RTBF) request
      type: object
      required:
        - email
      properties:
        email:
          description: The consumer email address to be forgotten
          type: string
          format: email
          minLength: 1
          example: consumer@example.com
    IdentityserviceForgetConsumerResponse:
      description: The accepted response for a consumer forget (RTBF) request
      type: object
      required:
        - correlationId
      properties:
        correlationId:
          description: Correlation identifier for tracking the forget (RTBF) request
          type: string
          format: uuid
          example: 8f73e2f3-a781-4a61-80a9-b12fd51fdb08
    IdentityservicePagingResponse:
      type: object
      required:
        - limit
        - offset
      properties:
        limit:
          description: The maximum number of records per page
          type: integer
        offset:
          description: The number of records skipped from the beginning
          type: integer
    IdentityserviceSearchConsumersRequest:
      description: The search criteria for querying consumers. At least one of email address or phone number must be provided
      type: object
      anyOf:
        - required:
            - emailAddress
        - required:
            - phoneNumber
      properties:
        emailAddress:
          description: The email address to search by
          type: string
          minLength: 1
          example: consumer@example.com
        phoneNumber:
          description: The phone number to search by
          type: string
          minLength: 1
          example: '+441234567890'
    IdentityserviceSearchConsumersResponse:
      description: A paginated search response containing consumer results
      type: object
      required:
        - data
        - paging
      properties:
        data:
          description: The collection of consumer search results
          type: array
          items:
            $ref: '#/components/schemas/IdentityserviceConsumerResponse'
        paging:
          description: The pagination information for the current result set
          $ref: '#/components/schemas/IdentityservicePagingResponse'
    IdverificationapiRequestsAgeVerificationConsentGivenRequest:
      type: object
      required:
        - basketId
        - timestamp
      properties:
        basketId:
          type: string
          description: The ID of the basket for which the consent for Age Verification was given.
        timestamp:
          description: Timestamp of the consent in UTC.
          type: string
          format: date-time
      example:
        basketId: EDAwNTY4ZGEtYjk4NC99OD-v1
        timestamp: '2024-03-06T13:09:33.339Z'
    IdverificationapiRequestsExchangeAgeVerificationCodeRequest:
      type: object
      required:
        - code
        - redirectUri
      properties:
        code:
          type: string
          description: The age verification code to exchange
        redirectUri:
          description: The redirectUri to use as part of the exchange flow.
          type: string
      example:
        code: EDAwNTY4ZGEtYjk4NCas9OD
        redirectUri: http://localhost
    IdverificationapiResponsesGetVerificationStatusResponse:
      type: object
      properties:
        verified:
          type: boolean
          description: If the user has passed age verification
      example:
        verified: true
    IdverificationapiResponsesGetVerificationUrlResponse:
      type: object
      properties:
        verificationUrl:
          type: string
          description: The verification url used to initiate age verification
      example:
        verificationUrl: https://criipto-verify-prod.criipto.id/oauth2/authorize?scope=openid&client_id=urn:criipto:dev&response_type=id_token&response_mode=fragment&nonce=ecnon-38e8a79b-23c5-421d-a0c1-356a7bd2adec
    Index:
      $ref: '#/components/schemas'
    IroncladWebhookPayload:
      type: object
      description: Ironclad webhook event envelope. Every event shares this outer structure regardless of event type.
      required:
        - companyID
        - payload
        - timestamp
        - webhookID
      properties:
        companyID:
          type: string
          description: The Ironclad company ID that emitted the event.
          example: 5f8d0e1b2c3a4b5c6d7e8f9a
        webhookID:
          type: string
          description: Unique identifier for this webhook delivery attempt.
          example: wh_01H9XYZ
        timestamp:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when the event was emitted.
          example: '2024-01-15T10:30:00.000Z'
        payload:
          type: object
          description: Event-specific payload. The shape varies by event type; all include an 'event' discriminator field.
          additionalProperties: true
    ItemRecommendationsItemRecommendationsRequest:
      type: object
      required:
        - partners
      properties:
        partners:
          description: A list of partners to get item recommendations for.
          type: array
          items:
            type: object
            required:
              - id
            properties:
              id:
                description: The unique identifier for the partner.
                type: string
    ItemRecommendationsItemRecommendationsResponse:
      type: object
      description: The response containing partner item recommendations.
      required:
        - recommendations
        - currency
      properties:
        currency:
          description: The currency of the item's monetary values.
          type: string
        recommendations:
          description: A collection of the requested partners referring to recommended catalogue items.
          type: array
          items:
            type: object
            required:
              - partner
              - items
            properties:
              partner:
                description: Contains partner information.
                type: object
                required:
                  - id
                properties:
                  id:
                    description: The unique identifier for the partner.
                    type: string
              items:
                description: A collection of recommended items for an partner.
                type: array
                items:
                  type: object
                  required:
                    - id
                  properties:
                    id:
                      description: The unique identifier for the catalogue item.
                      type: string
                    name:
                      description: The display name of the catalogue item.
                      type: string
                    imageUrl:
                      description: A URL for the item image.
                      type: string
                    basePrice:
                      description: The base price of the catalogue item in the minor currency unit (e.g., cents).
                      type: integer
                    offers:
                      type: array
                      items:
                        type: object
                        description: The available offers for the item.
                        required:
                          - id
                          - description
                        properties:
                          id:
                            type: string
                            description: The unique identifier for the offer.
                          price:
                            type: integer
                            description: The offer price of the catalogue item in the minor currency unit (e.g., cents).
                          description:
                            type: string
                            description: Detail of the offer scheme (e.g, 20% off).
    IvrManager400ErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: Human-readable error message
          example: Flow update failed
    IvrManager403ErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: Human-readable error message
          example: Not authorized
    IvrManager404ErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: Human-readable error message
          example: Flow not found
    IvrManager409ErrorResponse:
      type: object
      additionalProperties: false
      required:
        - message
      properties:
        message:
          type: string
          description: Human-readable error message explaining why the conflict occurred
          example: Audio file is associated with one or more flows and cannot be deleted.
    IvrManager422ErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: Human-readable error message
          example: Page number cannot be negative
    IvrManager500ErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: Human-readable error message
          example: An unexpected internal server error has occurred.
    IvrManager503ErrorResponse:
      type: object
      additionalProperties: false
      required:
        - message
      properties:
        message:
          type: string
          description: Human-readable message explaining why the service is unavailable
          example: Audio storage is not available in this environment.
    IvrManagerAiAssistantFeatureSettingsResponse:
      type: object
      properties:
        isEnabled:
          type: boolean
          description: Whether the AI assistant feature is enabled
        splitPercent:
          type: integer
          pattern: ^-?(?:0|[1-9]\d*)$
          format: int32
          description: Percentage split for A/B testing
      example:
        isEnabled: true
        splitPercent: 50
    IvrManagerAudioFileManagementResponse:
      allOf:
        - $ref: '#/components/schemas/IvrManagerAudioFileResponse'
        - type: object
          required:
            - isInUse
          properties:
            isInUse:
              type: boolean
              description: '`true` if the file is referenced by at least one flow (active audio file or scheduled flow audio file). In-use files cannot be deleted.'
              example: false
    IvrManagerAudioFileResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the audio file
        name:
          type: string
          description: Name of the audio file
        description:
          type: string
          description: Description of the audio file
        url:
          type: string
          description: URL to access the audio file
      example:
        id: 8d7e5679-8536-41ef-955c-f18fc2f91bf8
        name: Website is unavailable
        description: Website temporarily unavailable due to technical issues
        url: https://storage.example.com/audio/UK_Emergency_4.mp3
    IvrManagerAuditAction:
      type: string
      enum:
        - create
        - update
        - delete
      description: Type of action performed on an entity
    IvrManagerAuditLogDetailResponse:
      type: object
      properties:
        actioned_by_email:
          type: string
          description: Email of the user who performed the action
        action:
          $ref: '#/components/schemas/IvrManagerAuditAction'
        entity_type:
          type: string
          description: Type of entity that was modified
        timestamp:
          type: string
          description: Timestamp when the action occurred
        country_code:
          type: string
          description: Country code associated with the action
        flow_name:
          type: string
          description: Name of the flow that was modified
        timezone:
          type: string
          description: Timezone of the action
        flow_category:
          type: string
          nullable: true
          description: Category of the flow
        old_snapshot:
          type: string
          nullable: true
          description: JSON snapshot of the entity before the change
        new_snapshot:
          type: string
          nullable: true
          description: JSON snapshot of the entity after the change
      example:
        actioned_by_email: admin@example.com
        action: update
        entity_type: Schedule
        timestamp: '2026-01-15T10:30:00Z'
        country_code: NL
        flow_name: Customer Service
        timezone: Europe/Paris
        flow_category: Customer Services
        old_snapshot: '{ "id": "41a5e7e3-6779-4e65-97a4-7b7443f026b7", "name": "High number of calls", "flowId": "070b6327-230e-44df-bc06-8c86a4b257ed", "audioFileId": "c250bf75-91a5-4316-90d1-a49b5c6cff73", "shouldTerminateCall": false, "startTime": "2026-03-19T00:00:00", "endTime": "2026-03-26T00:00:00", "audioFileData": "" }'
        new_snapshot: '{ "id": "41a5e7e3-6779-4e65-97a4-7b7443f026b7", "name": "High number of calls", "flowId": "070b6327-230e-44df-bc06-8c86a4b257ed", "audioFileId": "c250bf75-91a5-4316-90d1-a49b5c6cff73", "shouldTerminateCall": false, "startTime": "2026-03-19T00:00:00", "endTime": "2026-03-27T00:00:00", "audioFileData": "" }'
    IvrManagerAuditLogFilterResponse:
      type: object
      properties:
        flows:
          type: object
          additionalProperties:
            type: string
          description: Map of flow IDs to flow names
        country_codes:
          type: array
          items:
            type: string
          description: List of available country codes
      example:
        flows:
          3fa85f64-5717-4562-b3fc-2c963f66afa6: Customer Service
          4gb96g75-6828-5673-c4gd-3d974g77bgb7: Finance
          5hc07h86-7939-6784-d5he-4e085h88chc8: Own Delivery
        country_codes:
          - NL
          - UK
    IvrManagerAuditLogResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the audit log entry
        timestamp:
          type: string
          format: date-time
          description: Timestamp when the action occurred
        flow_id:
          type: string
          format: uuid
          description: ID of the flow that was modified
        country_code:
          type: string
          description: Country code associated with the action
        flow_name:
          type: string
          description: Name of the flow
        actioned_by_email:
          type: string
          description: Email of the user who performed the action
        entity_type:
          type: string
          description: Type of entity that was modified
        action:
          $ref: '#/components/schemas/IvrManagerAuditAction'
        flow_category:
          type: string
          nullable: true
          description: Category of the flow
      example:
        id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        timestamp: '2026-01-15T10:30:00Z'
        flow_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        country_code: NL
        flow_name: Customer Service
        actioned_by_email: admin@example.com
        entity_type: Schedule
        action: create
        flow_category: Customer Services
    IvrManagerCreateScheduleRequest:
      type: object
      required:
        - name
        - audio_file_id
        - should_terminate_call
        - start_time
        - end_time
      properties:
        name:
          type: string
          description: Name of the schedule
        audio_file_id:
          type: string
          format: uuid
          description: ID of the audio file to play
        should_terminate_call:
          type: boolean
          description: Whether to terminate the call after playing the audio
        start_time:
          type: string
          description: Start time for the schedule
        end_time:
          type: string
          description: End time for the schedule
      example:
        name: High number of calls.
        audio_file_id: 8d7e5679-8536-41ef-955c-f18fc2f91bf8
        should_terminate_call: false
        start_time: '2026-12-24T00:00:00'
        end_time: '2026-12-26T23:59:59'
    IvrManagerCreateScheduleResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the created schedule
      example:
        id: 7c9e6679-7425-40de-944b-e07fc1f90ae7
    IvrManagerFeatureResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the feature
        featureName:
          type: string
          description: Name of the AIVA feature
      example:
        id: 2127a3a6-0230-4512-8984-6513ce78247d
        featureName: ai-voice-ivr-call-distribution
    IvrManagerFeatureSettings:
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether the feature is enabled
        aivaPercentage:
          type: integer
          pattern: ^-?(?:0|[1-9]\d*)$
          format: int32
          description: Percentage of calls to route to AIVA
        rules:
          type: array
          items:
            $ref: '#/components/schemas/IvrManagerScheduleRule'
          description: Schedule rules for when the feature is active
      example:
        enabled: true
        aivaPercentage: 100
        rules:
          - dayOfWeek: 1
            active: true
            startTime: '09:00'
            endTime: '17:00'
            endNextDay: false
          - dayOfWeek: 2
            active: true
            startTime: '09:00'
            endTime: '17:00'
            endNextDay: false
          - dayOfWeek: 3
            active: true
            startTime: '09:00'
            endTime: '17:00'
            endNextDay: false
          - dayOfWeek: 4
            active: true
            startTime: '09:00'
            endTime: '17:00'
            endNextDay: false
          - dayOfWeek: 5
            active: true
            startTime: '09:00'
            endTime: '17:00'
            endNextDay: false
          - dayOfWeek: 6
            active: false
            startTime: '00:00'
            endTime: '00:00'
            endNextDay: false
          - dayOfWeek: 7
            active: false
            startTime: '00:00'
            endTime: '00:00'
            endNextDay: true
    IvrManagerFlowDetailResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the flow
        name:
          type: string
          description: Name of the flow
        active_audio_file_id:
          type: string
          format: uuid
          nullable: true
          description: ID of the currently active audio file
        audio_file_name:
          type: string
          description: Name of the active audio file
        audio_file_description:
          type: string
          description: Description of the active audio file
        should_terminate_call:
          type: boolean
          description: Whether the call should be terminated after playing the audio
        country_code:
          type: string
          description: Country code for the flow
        file_url:
          type: string
          description: URL to access the active audio file
        category:
          type: string
          nullable: true
          description: Category of the flow
        timezone:
          type: string
          description: Timezone for the flow
      example:
        id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        name: Grocery
        active_audio_file_id: null
        audio_file_name: ''
        audio_file_description: ''
        should_terminate_call: false
        country_code: UK
        file_url: ''
        category: Customer Services
        timezone: Europe/London
    IvrManagerFlowResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the flow
        name:
          type: string
          description: Name of the flow
        active_audio_file_id:
          type: string
          format: uuid
          nullable: true
          description: ID of the currently active audio file
        should_terminate_call:
          type: boolean
          description: Whether the call should be terminated after playing the audio
        country_code:
          type: string
          description: Country code for the flow
        category:
          type: string
          nullable: true
          description: Category of the flow
      example:
        id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        name: Restaurant
        active_audio_file_id: 8d7e5679-8536-41ef-955c-f18fc2f91bf8
        should_terminate_call: false
        country_code: UK
        category: Customer Services
    IvrManagerGenerateAudioRequest:
      type: object
      additionalProperties: false
      required:
        - text
        - languageCode
      properties:
        text:
          type: string
          description: The message to synthesise into speech
          minLength: 1
          maxLength: 1000
          example: Thank you for calling. We are currently experiencing a high volume of calls.
        languageCode:
          type: string
          description: BCP-47 language code — must be one of the values from `GET /ai-voice-generator/languages`
          example: en-GB
        voiceId:
          type: string
          description: Optional ElevenLabs voice ID. When provided, overrides the default voice configured in `AppSettings`. Retrieve available IDs from `GET /ai-voice-generator/voices`.
          example: 21m00Tcm4TlvDq8ikWAM
    IvrManagerLanguage:
      type: object
      additionalProperties: false
      required:
        - code
        - label
      properties:
        code:
          type: string
          description: BCP-47 language code
          example: en-GB
        label:
          type: string
          description: Human-readable language name for display in a picker
          example: English (UK)
    IvrManagerLanguageListResponse:
      type: object
      additionalProperties: false
      required:
        - languages
      properties:
        languages:
          type: array
          description: Languages available for text-to-speech generation
          items:
            $ref: '#/components/schemas/IvrManagerLanguage'
      example:
        languages:
          - code: en-GB
            label: English (UK)
          - code: de-DE
            label: German (Germany)
          - code: nl-NL
            label: Dutch (Netherlands)
    IvrManagerPagedAuditLogResponse:
      type: object
      properties:
        content:
          type: array
          items:
            $ref: '#/components/schemas/IvrManagerAuditLogResponse'
          description: Array of audit log entries for the current page
        totalElements:
          type: integer
          pattern: ^-?(?:0|[1-9]\d*)$
          format: int64
          description: Total number of audit log entries matching the filter
        totalPages:
          type: integer
          pattern: ^-?(?:0|[1-9]\d*)$
          format: int32
          description: Total number of pages
        size:
          type: integer
          pattern: ^-?(?:0|[1-9]\d*)$
          format: int32
          description: Number of items per page
        numberOfElements:
          type: integer
          pattern: ^-?(?:0|[1-9]\d*)$
          format: int32
          description: Number of items in the current page
      example:
        content:
          - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
            timestamp: '2026-01-15T10:30:00Z'
            flow_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
            country_code: NL
            flow_name: Customer Service
            actioned_by_email: admin@example.com
            entity_type: Schedule
            action: create
            flow_category: Customer Services
        totalElements: 1
        totalPages: 1
        size: 10
        numberOfElements: 1
    IvrManagerSaveAudioRequest:
      type: object
      additionalProperties: false
      required:
        - audio
        - text
        - languageCode
        - name
        - description
      properties:
        audio:
          type: string
          format: binary
          description: The generated audio file (MP3) to upload
        text:
          type: string
          description: The original text that was synthesised
          minLength: 1
          maxLength: 1000
          example: Thank you for calling. We are currently experiencing a high volume of calls.
        languageCode:
          type: string
          description: BCP-47 language code used during synthesis
          example: en-GB
        name:
          type: string
          description: Display name for the audio file in the library
          minLength: 1
          maxLength: 50
          example: '[EN] Thank you for calling'
        description:
          type: string
          description: Human-readable description of the audio file's purpose
          minLength: 1
          maxLength: 500
          example: High-volume call message for UK market
    IvrManagerScheduleResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the schedule
        name:
          type: string
          description: Name of the schedule
        flow_id:
          type: string
          format: uuid
          description: ID of the flow this schedule belongs to
        audio_file_id:
          type: string
          format: uuid
          description: ID of the audio file to play
        audio_file_name:
          type: string
          description: Name of the audio file
        audio_file_url:
          type: string
          description: URL to access the audio file
        should_terminate_call:
          type: boolean
          description: Whether to terminate the call after playing the audio
        start_time:
          type: string
          description: Start time for the schedule
        end_time:
          type: string
          description: End time for the schedule
        status:
          type: string
          description: Current status of the schedule
          enum:
            - inactive
            - active
            - expired
      example:
        id: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        name: High number of calls
        flow_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        audio_file_id: 8d7e5679-8536-41ef-955c-f18fc2f91bf8
        audio_file_name: Temporarily closed telephone lines
        audio_file_url: https://storage.example.com/audio/NL/NL_unable_to_answer_your_call.mp3
        should_terminate_call: false
        start_time: '2026-12-24T00:00:00'
        end_time: '2026-12-26T23:59:59'
        status: active
    IvrManagerScheduleRule:
      type: object
      properties:
        dayOfWeek:
          type: integer
          pattern: ^-?(?:0|[1-9]\d*)$
          format: int32
          description: Day of the week (0-6, where 0 is Sunday)
        active:
          type: boolean
          description: Whether the rule is active
        startTime:
          type: string
          description: Start time in HH:mm format
        endTime:
          type: string
          description: End time in HH:mm format
        endNextDay:
          type: boolean
          description: Whether the end time is on the next day
      example:
        dayOfWeek: 1
        active: true
        startTime: '09:00'
        endTime: '17:00'
        endNextDay: false
    IvrManagerTalkdeskResponse:
      type: object
      properties:
        file_url:
          type: string
          nullable: true
          description: URL of the audio file to play
        should_terminate_call:
          type: boolean
          description: Whether to terminate the call after playing the audio
      example:
        file_url: https://storage.example.com/audio/welcome_message_en.mp3
        should_terminate_call: false
    IvrManagerUpdateActiveAudioFileRequest:
      type: object
      required:
        - active_audio_file_id
        - should_terminate_call
      properties:
        active_audio_file_id:
          type: string
          format: uuid
          description: ID of the audio file to set as active
        should_terminate_call:
          type: boolean
          description: Whether to terminate the call after playing the audio
      example:
        active_audio_file_id: 8d7e5679-8536-41ef-955c-f18fc2f91bf8
        should_terminate_call: true
    IvrManagerVoiceResponse:
      type: object
      additionalProperties: false
      required:
        - voiceId
        - name
      properties:
        voiceId:
          type: string
          description: ElevenLabs voice identifier — pass as `voiceId` in the generate request
          example: 21m00Tcm4TlvDq8ikWAM
        name:
          type: string
          description: Human-readable voice name
          example: Rachel
        category:
          type: string
          description: Voice category (`premade` | `cloned` | `generated` | `professional`)
          example: premade
        previewUrl:
          type: string
          format: uri
          description: Public audio URL for in-browser preview — no backend call needed
          example: https://storage.googleapis.com/eleven-public-prod/rachel-preview.mp3
        labels:
          type: object
          additionalProperties:
            type: string
          description: Key/value metadata labels (e.g. gender, accent, age, use case)
          example:
            gender: female
            accent: american
            age: young
            use_case: narration
    JetConnectMenusUtfConnectorAcceptedResponse:
      description: Is returned when a request has been accepted and is processing
      type: object
      required:
        - success
      properties:
        success:
          description: Indicates request successfully accepted or not for processing. Always true in an accepted response.
          type: boolean
          example: true
      x-examples:
        success:
          value:
            success: true
    JetConnectMenusUtfConnectorBaselineMenu:
      description: Describes a menu
      type: object
      required:
        - name
        - reference
        - type
        - categories
      properties:
        default_language:
          description: The default language of the menu in BCP 47 standard.
          type: string
          example: en-US
        name:
          description: The menu name
          type: string
          example: Dinner Menu
        description:
          description: A top-level description for the menu. Can be used for compliance statements such as country of origin declarations.
          type: string
          example: All meat products are sourced from Switzerland.
        reference:
          description: An ID that helps the menu source (typically the POS) to identify the menu
          type: string
          example: '1'
        type:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorMenuType'
        translations:
          description: The translations of the menu name, using IETF BCP 47 as the language identifier.
          type: object
          additionalProperties:
            type: object
            properties:
              name:
                description: The translated description
                type: string
            required:
              - name
          example:
            es-ES:
              name: Populate translated name here
        availability:
          description: |-
            The menu availability determining the hours that the menu is available for ordering for each day of the week.

            In UK, IE, ES, IT, AU, availability also updates opening hours. In DE, NL, AT, BE, BG, DK, LU, PL and SK, the availability field updates the menu times only.

            Availability may be truncated in cases where the restaurant hours are set manually by your delivery partner.

            For Takeaway any time before 07:00 gets allocated to the previous day rather than the day of the week supplied.
          type: object
          required:
            - monday
            - tuesday
            - wednesday
            - thursday
            - friday
            - saturday
            - sunday
          properties:
            monday:
              $ref: '#/components/schemas/JetConnectMenusUtfConnectorWorkingHours'
            tuesday:
              $ref: '#/components/schemas/JetConnectMenusUtfConnectorWorkingHours'
            wednesday:
              $ref: '#/components/schemas/JetConnectMenusUtfConnectorWorkingHours'
            thursday:
              $ref: '#/components/schemas/JetConnectMenusUtfConnectorWorkingHours'
            friday:
              $ref: '#/components/schemas/JetConnectMenusUtfConnectorWorkingHours'
            saturday:
              $ref: '#/components/schemas/JetConnectMenusUtfConnectorWorkingHours'
            sunday:
              $ref: '#/components/schemas/JetConnectMenusUtfConnectorWorkingHours'
        categories:
          description: A collection of menu categories
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorCategory'
        quantity_restrictions:
          description: A list of quantity restrictions
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorQuantityRestriction'
    JetConnectMenusUtfConnectorCaffeine:
      description: Caffeine declaration for groceries.  For Just Eat, a corresponding Weight object is required alongside the Caffeine object for this to appear.
      type: object
      required:
        - unit_name
        - value
      properties:
        unit:
          description: |-
            The weight unit provided. Possible values:
            - `mg`: Milligrams
            - `g`: Grams
          type: string
          pattern: ^(mg|g)$
          example: mg
        value:
          description: The quantity of caffeine in the unit provided
          type: number
      x-examples:
        example-1:
          unit: g
          value: 0.02
    JetConnectMenusUtfConnectorCategory:
      description: A menu category
      type: object
      required:
        - name
        - description
      properties:
        name:
          description: The category name
          type: string
          example: Mains
        description:
          description: The category description
          type: string
          example: The best cuts of meat on this side of the Mississippi
        translations:
          type: object
          description: The translations of the category name & description, using IETF BCP 47 as the language identifier.
          additionalProperties:
            type: object
            properties:
              name:
                description: The translated name
                type: string
              description:
                description: The translated description
                type: string
            required:
              - name
              - description
          example:
            es-ES:
              name: Populate translated name here
              description: Populate translated description here
        items:
          description: A collection of items that belong to this category
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorItem'
        gallery:
          description: The image gallery for the category
          type: array
          maxLength: 1
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorImage'
        type:
          description: The category type, can be `root` or `subcategory` - to indicate if it is a top level category, or subcategory
          type: string
          pattern: ^(root|subcategory)$
          example: root
        categories:
          description: |
            A list of subcategories, each of which can contain items or additional subcategories, forming a nested menu structure. **If you wish to use subcategories, please contact your Technical Project Manager.**
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorCategory'
    JetConnectMenusUtfConnectorDeposit:
      description: |-
        Deposit for items i.e for recycling purposes

        Note: This feature is currently only available for integration in IE, DE, NL, AT, BE, BG, DK, LU, PL and SK.
      type: object
      required:
        - type
        - amount
        - included_in_total_price
      properties:
        type:
          description: 'Potential values: `single_use`, `multiple_use`, `not_specified`'
          type: string
          pattern: ^(single_use|multiple_use|not_specified)$
        amount:
          description: The cost of the deposit, corrected to match the format of the item price
          type: integer
        included_in_total_price:
          description: 'Whether the cost of the deposit is included in total price or not. Note: In IE, deposit must be excluded from total price. In DE, NL, AT, BE, BG, DK, LU, PL and SK, deposit must be included in total price.'
          type: boolean
      x-examples:
        example-1:
          type: single_use
          amount: 200
          included_in_total_price: true
    JetConnectMenusUtfConnectorErrorResponse:
      description: Standard error response for this service.
      type: object
      required:
        - success
        - error_message
      properties:
        success:
          description: Indicates request successfully accepted or not for processing. Always false in an error response.
          type: boolean
          example: false
        error_message:
          description: A brief description of the error.
          type: string
          example: Request not valid
      x-examples:
        bad request:
          value:
            success: false
            error_message: Baseline menus not valid.
        forbidden:
          value:
            success: false
            error_message: Restaurant not registered
        server error:
          value:
            success: false
            error_message: 'Menu(s) valid, error on ingestion: upstream communication failed'
    JetConnectMenusUtfConnectorGrossWeight:
      description: Gross weight of a grocery item for courier/delivery purposes
      type: object
      required:
        - unit
        - value
      properties:
        unit:
          type: string
          description: |-
            The unit of measurement for gross weight. Possible values:
            - `g`: Grams
            - `kg`: Kilograms
          pattern: ^(g|kg)$
          example: g
        value:
          description: The gross weight value. Must be non-negative.
          type: number
          minimum: 0
      x-examples:
        weight-500g-pasta:
          unit: g
          value: 500
        volume-bottle-water-1l:
          unit: kg
          value: 1
    JetConnectMenusUtfConnectorImage:
      description: An image for the item gallery
      type: object
      required:
        - url
      properties:
        url:
          description: The item image URL
          type: string
          example: http://aws-s3.com/bucket/wagyu.jpg
    JetConnectMenusUtfConnectorInclude:
      description: An item served with the main item
      type: object
      required:
        - name
        - description
        - plu
        - modifiers
      properties:
        name:
          description: The include (item) name
          type: string
          example: Bread
        description:
          description: The include (item) description
          type: string
          example: Complementary bread available for you
        plu:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorPlu'
        out_of_stock:
          description: Boolean value indicating whether this include item is out of stock or not
          type: boolean
          example: false
        modifiers:
          description: A collection of modifiers that could be applied on the include (item)
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorModifier'
    JetConnectMenusUtfConnectorIngredient:
      description: An item ingredient
      type: object
      required:
        - name
      properties:
        name:
          description: The ingredient name
          type: string
          example: 100% Wagyu Beef
        country_of_origin:
          description: The country of origin of the ingredient as an ISO 3166-1 alpha-2 two-letter country code
          type: string
          minLength: 2
          maxLength: 2
          pattern: ^[A-Z]{2}$
          example: CH
        country_of_production:
          description: The country of production of the ingredient as an ISO 3166-1 alpha-2 two-letter country code
          type: string
          minLength: 2
          maxLength: 2
          pattern: ^[A-Z]{2}$
          example: DE
        translations:
          type: object
          description: The translations of the ingredient name, using IETF BCP 47 as the language identifier.
          additionalProperties:
            type: object
            properties:
              name:
                description: The translated name
                type: string
            required:
              - name
          example:
            es-ES:
              name: Populate translated name here
    JetConnectMenusUtfConnectorItem:
      description: A menu item
      type: object
      required:
        - name
        - plu
      properties:
        name:
          description: The item name
          type: string
          example: Wagyu Beef
        description:
          description: The item description
          type: string
          example: Magnificent, purebred, meticulously raised Japanese beef
        translations:
          type: object
          description: The translations of the item name & description, using IETF BCP 47 as the language identifier.
          additionalProperties:
            type: object
            properties:
              name:
                description: The translated name
                type: string
              description:
                description: The translated description
                type: string
            required:
              - name
          example:
            es-ES:
              name: Populate translated name here
              description: Populate translated description here
        plu:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorPlu'
        out_of_stock:
          description: Boolean value indicating whether this item is out of stock or not
          type: boolean
          example: false
        price:
          description: The price in cents of the base item. When swap modifiers are present, this price could be 0.
          type: integer
          format: int32
          example: 2490
        reference:
          description: An optional (additional) unique reference for the item
          type: string
          example: id-123
        modifiers:
          description: A collection of modifiers that could be applied on the item
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorModifier'
        portions:
          description: A collection of item portions
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorPortion'
        includes:
          description: A collection of items naturally included with a top-level item. This field is for users of the Just Eat Platform.
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorInclude'
        ingredients:
          description: A collection of the item's basic ingredients
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorIngredient'
        tax_category:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorTaxCategory'
        swap:
          description: A swap modifier. This is used in case multiple options have different PLUs, but they all map to the same item.
          type: object
          required:
            - name
            - options
          properties:
            name:
              description: The swap modifier name
              type: string
              example: Marbling level
            options:
              description: The options the customer should select from
              type: array
              items:
                $ref: '#/components/schemas/JetConnectMenusUtfConnectorSwapOption'
        gallery:
          description: The image gallery for the item
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorImage'
        is_alcoholic:
          description: This flag was previously used to mark an item as alcoholic or not. This is now deprecated, so please add the alcohol label to the productTypes key instead.
          type: boolean
          example: false
          deprecated: true
        spiciness:
          description: A value that describes how spicy is this item. It might display custom icons on the partner website if supported
          type: string
          pattern: ^(UNKNOWN|MILD|MEDIUM|HOT|VERY_HOT)$
          example: HOT
        dietary_restrictions:
          description: Array of dietary restrictions for an item. It might display custom icons on the partner website if supported
          type: array
          items:
            type: string
            enum:
              - NONE
              - VEGETARIAN
              - VEGAN
            example: VEGETARIAN
        allergens:
          description: |-
            Array of allergens that this item contains.

            **Note: This feature is currently only available for integration in `DE`, `NL`, `AT`, `BE`, `BG`, `DK`, `LU`, `PL` and `SK`.**
          type: array
          items:
            type: string
            enum:
              - CEREAL_WHEAT
              - CEREAL_RYE
              - CEREAL_BARLEY
              - CEREAL_OATS
              - CEREAL_SPELT
              - CEREAL_KAMUT
              - CRUSTACEANS
              - EGGS
              - FISH
              - PEANUTS
              - SOYBEANS
              - MILK
              - NUTS_ALMONDS
              - NUTS_HAZELNUTS
              - NUTS_WALNUTS
              - NUTS_CASHEWS
              - NUTS_PECAN
              - NUTS_BRAZIL
              - NUTS_PISTACHIO
              - NUTS_MACADAMIA
              - CELERY
              - MUSTARD
              - SESAME_SEEDS
              - SULPHUR_DIOXIDE_SULPHITES
              - LUPIN
              - MOLLUSCS
            example: CEREAL_OATS
        additives:
          description: Array of additives that this item contains
          type: array
          items:
            type: string
            enum:
              - UNSPECIFIED
              - COLORANT_UNSPECIFIED
              - COLORANT_ADVERSE_EFFECT
              - PRESERVATIVES_UNSPECIFIED
              - PRESERVATIVES_NITRITE_CURING_SALT
              - PRESERVATIVES_NITRATE
              - PRESERVATIVES_NITRATE_CURING_SALT_AND_NITRATE
              - ANTIOXIDANT
              - FLAVOURE_ENHANCER
              - SULFITES
              - BLACKENED
              - WAXED
              - PHOSPHATE
              - SWEETENER_UNSPECIFIED
              - SWEETENER_PHENYLALANINE
              - SWEETENER_LAXATIVE
              - CAFFEINE_UNSPECIFIED
              - CAFFEINE_HIGH_CAFFEINE
              - CAFFEINE_CAFFEINE
              - QUININE
              - GENETICALLY_MODIFIED
              - ACIDIFIERS
              - STABILISERS
              - PROTEIN_UNSPECIFIED
              - PROTEIN_MILK_PROTEIN
              - PROTEIN_STARCH
              - PROTEIN_EGG_WHITE
            example: PROTEIN_MILK_PROTEIN
        nutritional_info:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorNutritionalInfo'
        nutritional_info_range:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorNutritionalInfoRange'
        servings:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorServings'
        servings_range:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorRange'
        tax_percentage:
          description: The percentage of tax applied to the item
          example: 8
          type: number
        caffeine:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorCaffeine'
        alcohol_percentage:
          description: The percentage of alcohol contained in the product. This field is for users of the Takeaway Platform.
          type: number
        volume:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorVolume'
        weight:
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/JetConnectMenusUtfConnectorWeight'
        gross_weight:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorGrossWeight'
        deposit:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorDeposit'
        manufacturer:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorManufacturer'
        storage:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorStorage'
        gtin:
          description: 'Global Trade Item Number: ID for trade items. Used to look up product information in which may belong to a retailer, manufacturer, collector, researcher, or other entity'
          type: string
        product_types:
          description: Tags that represent the type or properties of the product. Supported values are
          type: array
          items:
            type: string
            enum:
              - ALCOHOL
              - ANTIHISTAMINES
              - BABY_FORMULA
              - CANNABIDIOL
              - CODEINE
              - COLD_FLU
              - DECONGESTANTS
              - DRINK
              - ENERGY_DRINK
              - HFSS
              - MATURE
              - MEDICINE
              - NICOTINE
              - PACKAGED_FOOD
              - PAINKILLERS
              - PHARMACY_CONTROLLED
              - RESTAURANT_PREPARED_FOOD
              - SEDATIVES
              - SENSITIVE
              - TOBACCO
              - VAPING_PRODUCT
        low_stock_threshold:
          description: The low stock threshold for the item. It will be marked as low stock to customers if the stock level is set to a value that is equal to or below this threshold.
          type: integer
          minimum: 1
          example: 5
    JetConnectMenusUtfConnectorItemAvailability:
      description: The payload of an item availability request.
      type: object
      required:
        - event
        - itemReferences
        - restaurant
      properties:
        event:
          description: Status of the items. Set to AVAILABLE to mark the menu item as available for ordering, UNAVAILABLE to mark the item as unavailable for ordering.
          type: string
          pattern: ^(AVAILABLE|UNAVAILABLE)$
          example: UNAVAILABLE
        itemReferences:
          description: The POS Item IDs to be made available or unavailable
          type: array
          items:
            type: string
            example: DRINKS-023
        restaurant:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorRestaurantId'
        happenedAt:
          description: Date time in ISO8601 format of when the event occurred. Will default to current time if omitted
          type: string
          format: date-time
          example: '2018-10-11T14:56:18.234284+01:00'
        nextAvailableAt:
          description: Date time in ISO8601 format of when the item becomes available again. This field is applicable only for UNAVAILABLE event type. Must be in the future.
          type: string
          format: date-time
          example: '2018-10-11T14:56:18.234284+01:00'
    JetConnectMenusUtfConnectorManufacturer:
      description: Legal requirement to display on front end
      type: object
      required:
        - name
        - brand
        - country_of_origin
      properties:
        name:
          type: string
          description: The name of the manufacturer
          example: Mondeleez
        brand:
          description: The brand owning the item
          example: Cadbury
          type: string
        country_of_origin:
          description: Where the item originated from
          example: England
          type: string
        additional_details:
          description: A free text field for more information and can contain Manufacturer address, customer service number etc
          type: string
      x-examples:
        example-1:
          name: Mondeleez
          brand: Cadbury
          country_of_origin: England
          additional_details: free text, can be manufacturer address, customer service phone number.
    JetConnectMenusUtfConnectorMenuType:
      description: The menu type
      type: string
      pattern: ^(COLLECTION|DELIVERY)$
      example: DELIVERY
    JetConnectMenusUtfConnectorMenus:
      description: The payload of a request to ingest menus.
      type: object
      required:
        - restaurants
        - menus
      properties:
        restaurants:
          description: A collection of one or more restaurant IDs associated with the menu(s). These are identifiers of restaurants from the menu source - typically the POS.
          type: array
          items:
            type: string
            example: '5678'
        menus:
          description: A collection of one or more menus to ingest
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorBaselineMenu'
        callback_url:
          description: URL to which notification of success/failure of the asynchronous menu ingestion process will be sent.
          type: string
          format: uri
          example: https://example.com/menu_webhook
    JetConnectMenusUtfConnectorModifier:
      description: A modifier group that could be applied on an item
      type: object
      required:
        - name
        - description
        - pick
      properties:
        name:
          description: The modifier name
          type: string
          example: Cook to
        description:
          description: The modifier description
          type: string
          example: How much do you want your steak cooked?
        translations:
          description: The translations of the modifier name & description, using IETF BCP 47 as the language identifier.
          type: object
          additionalProperties:
            type: object
            properties:
              name:
                description: The translated name
                type: string
              description:
                description: The translated description
                type: string
            required:
              - name
              - description
          example:
            es-ES:
              name: Populate translated name here
              description: Populate translated description here
        pick:
          description: The number of options the customer is allowed
          allOf:
            - type: object
              required:
                - pick_same_option
              properties:
                pick_same_option:
                  description: True if the same option can be added more than once
                  type: boolean
                  example: true
            - $ref: '#/components/schemas/JetConnectMenusUtfConnectorModifierPickExactly'
            - $ref: '#/components/schemas/JetConnectMenusUtfConnectorModifierPickRange'
        options:
          description: A collection of options the customer can select from
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorItem'
    JetConnectMenusUtfConnectorModifierPickExactly:
      description: The customer must select a fixed number of options
      type: object
      properties:
        exactly:
          description: The number of options the customer is allowed
          type: integer
          format: int32
          example: 1
    JetConnectMenusUtfConnectorModifierPickRange:
      description: The customer can select a min-max number of options
      type: object
      properties:
        range:
          description: The range of options the customer is allowed. In  DE, NL, AT, BE, BG, DK, LU, PL and SK the range option will be structured as check boxes. There cannot be a minimum or maximum number of options defined.
          type: object
          properties:
            from:
              description: Minimum number of options the customer can select
              type: integer
              format: int32
              example: 2
            to:
              description: Maximum number of options the customer can select
              type: integer
              format: int32
              example: 4
    JetConnectMenusUtfConnectorNutritionalInfo:
      description: The energy content of the item expressed in either kcal or kJ or both.
      type: object
      properties:
        kcal:
          description: The value of the energy content of the item in kcal.
          type: integer
          format: int32
          example: 200
        kj:
          description: The value of the energy content of the item in kJ.
          type: integer
          format: int32
          example: 200
        additional_details:
          description: |-
            The nutritional information to be shared as a free text field. Please reach out to your JETConnect contact to seek further information on what is required, as this varies per country.

            Note: This feature is currently only available for integration in DE, NL, AT, BE, BG, DK, LU, PL and SK.
          type: string
          example: Contains 200 kcal or 840 kJ
    JetConnectMenusUtfConnectorNutritionalInfoRange:
      description: The energy content expressed in either kcal or kJ in ranges
      type: object
      properties:
        kcal_range:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorRange'
        kj_range:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorRange'
    JetConnectMenusUtfConnectorPlu:
      description: |-
        The Price Look Up Unit (similar to SKU  - Stock Keeping Unit) identifies a unique product/item reference, typically specific to the menu source and used in the ordering process.

        In a swap option, it is used to replace the item identifier when this option is selected.
      type: string
      x-examples:
        example: '123'
    JetConnectMenusUtfConnectorPortion:
      description: An item portion
      type: object
      required:
        - name
        - description
        - plu
        - price
        - modifiers
      properties:
        name:
          description: The portion name
          type: string
          example: Wagyu Beef
        description:
          description: The portion description
          type: string
          example: Magnificent, purebred, meticulously raised Japanese beef
        plu:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorPlu'
        out_of_stock:
          description: Boolean value indicating whether this portion is out of stock or not
          type: boolean
          example: false
        price:
          description: The price in cents of the base portion. When swap modifiers are present, this price could be 0.
          type: integer
          format: int32
          example: 2490
        reference:
          description: An optional (additional) unique reference for the portion
          type: string
          example: id-123
        modifiers:
          description: A collection of modifiers that could be applied on the portion
          type: array
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorModifier'
        nutritional_info:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorNutritionalInfo'
        nutritional_info_range:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorNutritionalInfoRange'
        servings:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorServings'
        servings_range:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorRange'
        tax_percentage:
          description: The percentage of tax applied to the item
          example: 8
          type: number
        caffeine:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorCaffeine'
        alcohol_percentage:
          description: The percentage of alcohol contained in the product
          type: number
        volume:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorVolume'
        weight:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorWeight'
        deposit:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorDeposit'
        manufacturer:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorManufacturer'
        storage:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorStorage'
        gtin:
          description: 'Global Trade Item Number: ID for trade items. Used to look up product information in which may belong to a retailer, manufacturer, collector, researcher, or other entity'
          type: string
    JetConnectMenusUtfConnectorQuantityRestriction:
      type: object
      description: Specifies quantity restriction rules applicable to items in the menu.
      required:
        - id
        - name
        - maximum
        - restricted_quantity_plus
      properties:
        id:
          description: A unique identifier for each quantity restriction.
          type: string
          minLength: 1
        name:
          description: The human-readable name of the quantity restriction.
          type: string
          minLength: 1
        maximum:
          description: The maximum quantity allowed within a quantity restriction.
          type: number
          format: decimal
          minimum: 0
          exclusiveMinimum: true
        restricted_quantity_plus:
          description: Identifies PLUs that are subject to quantity restriction rules and the quantity that they contribute to the maximum limit.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorRestrictedQuantityPlu'
          nullable: false
      example:
        id: '123'
        name: Paracetamol
        maximum: 2
        restricted_quantity_plus:
          - plu: '111'
            contributing_quantity: 1
          - plu: '222'
            contributing_quantity: 1
          - plu: '333'
            contributing_quantity: 1
    JetConnectMenusUtfConnectorRange:
      description: Range object
      type: object
      required:
        - min
        - max
      properties:
        min:
          description: The min value
          type: integer
          format: int32
          example: 1
        max:
          description: The max value
          type: integer
          format: int32
          example: 10
    JetConnectMenusUtfConnectorRestaurantId:
      description: A restaurant identifier used in your back office systems, such as your point of sale. The JET Connect Platform will be configured to link your system's restaurant ID's to your delivery partner's restaurant ID's.
      type: string
    JetConnectMenusUtfConnectorRestrictedQuantityPlu:
      type: object
      required:
        - plu
        - contributing_quantity
      properties:
        plu:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorPlu'
        contributing_quantity:
          description: The quantity that this product contributes to the maximum quantity restriction.
          type: number
          format: decimal
          minimum: 0
          exclusiveMinimum: true
          nullable: false
    JetConnectMenusUtfConnectorServings:
      description: The number of servings for the item or portion
      type: integer
      format: int32
      example: 4
    JetConnectMenusUtfConnectorStockLevels:
      description: Request payload for updating stock levels.
      type: object
      required:
        - items
      properties:
        items:
          type: array
          minimum: 1
          items:
            type: object
            required:
              - plu
              - availableQuantity
              - happenedAt
            properties:
              plu:
                $ref: '#/components/schemas/JetConnectMenusUtfConnectorPlu'
              availableQuantity:
                description: Current available quantity for item.
                type: integer
                example: 10
              happenedAt:
                description: Date time in ISO8601 format of when the event occurred.
                type: string
                format: date-time
                example: '2018-10-11T14:56:18.234284+01:00'
    JetConnectMenusUtfConnectorStorage:
      description: How the grocery item are kept in storage, and also the courier to know what bag to use and how quick should they deliver
      type: object
      required:
        - type
      properties:
        type:
          type: string
          example: FROZEN
          description: The storage type, can be `FROZEN` or `COOL_DRY` - used for couriers to know which bag to use and speed of delivery
        additional_details:
          type: string
          description: A free text field, displayed on the front-end to the customer
      x-examples:
        example-1:
          type: FROZEN
          additional_details: free text
    JetConnectMenusUtfConnectorSwapOption:
      description: |-
        A single option for the swap modifier.

        The given PLU (Price Look Up Unit) is used to replace the item identifier when this option is selected
      type: object
      required:
        - name
        - plu
        - price
        - reference
      properties:
        name:
          description: The option name
          type: string
          example: A5
        translations:
          description: The translations of the ingredient name, using IETF BCP 47 as the language identifier.
          type: object
          additionalProperties:
            type: object
            properties:
              name:
                description: The translated name
                type: string
            required:
              - name
          example:
            es-ES:
              name: Populate translated name here
        plu:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorPlu'
        out_of_stock:
          description: Boolean value indicating whether this swap option is out of stock or not
          type: boolean
          example: false
        price:
          description: The price in cents of the option
          type: integer
          format: int32
          example: 2990
        reference:
          description: An optional (additional) unique reference
          type: string
          example: id-222
        tax_category:
          $ref: '#/components/schemas/JetConnectMenusUtfConnectorTaxCategory'
    JetConnectMenusUtfConnectorTaxCategory:
      description: The tax category of the item or swap option
      type: string
      pattern: ^(NO_TAX|ALCOHOL|SUGARED_DRINK|STANDARD_RATE|REDUCED_RATE)$
      example: ALCOHOL
    JetConnectMenusUtfConnectorVolume:
      description: Volume amount for a grocery item
      type: object
      required:
        - unit_name
        - net_value
      properties:
        unit:
          type: string
          description: |-
            The unit of measurement for volume. Possible values:
            - `ml`: Millilitres
            - `cl`: Centilitres
            - `l`: Litres
            - `m`: Metres
            - `cm`: Centimetres
            - `g`: Grams
            - `kg`: Kilograms
            - `sheet`: Sheets
            - `sqm`: Square metres
            - `unit`: Individual units
          pattern: ^(ml|cl|l|m|cm|g|kg|sheet|sqm|unit)$
          example: ml
        gross_value:
          description: The total volume of the item including containers for couriers
          type: number
          deprecated: true
        net_value:
          description: The total volume of the item
          type: number
        quantity:
          description: The total amount of the item
          type: number
      x-examples:
        weight-500g-pasta:
          unit: g
          net_value: 500
        weight-1kg-pasta:
          unit: kg
          net_value: 1
        weight-6pack-baked-beans-415g:
          unit: g
          net_value: 415
          quantity: 6
        volume-bottle-water-800ml:
          unit: ml
          net_value: 800
        volume-6pack-bottled-water-500ml:
          unit: ml
          net_value: 500
          quantity: 6
        volume-5litre-water:
          unit: l
          net_value: 5
        length-kitchen-foil-30m:
          unit: m
          net_value: 30
        area-kitchen-roll:
          unit: sqm
          net_value: 10
        kitchen-roll-sheets:
          unit: sheet
          net_value: 100
        2pack-kitchen-rolls:
          unit: sheet
          net_value: 100
          quantity: 2
        onion:
          unit: unit
          net_value: 1
        6pack-apples:
          unit: unit
          net_value: 6
    JetConnectMenusUtfConnectorWeight:
      description: The weight of a grocery item
      type: object
      required:
        - unit_name
        - gross_value
        - net_value
      properties:
        unit:
          type: string
          description: |-
            The unit of measurement for weight. Possible values:
            - `g`: Grams
            - `kg`: Kilograms
          pattern: ^(kg|g)$
          example: kg
        gross_value:
          description: The total weight of the item including containers for couriers
          type: integer
        net_value:
          description: The total weight of the item
          type: integer
      x-examples:
        example-1:
          unit: g
          gross_value: 1300
          net_value: 1200
    JetConnectMenusUtfConnectorWorkingHours:
      description: Working hours describing what times the menu is available on a particular day, in the `hh:mm - hh:mm` format (opening time - closing time).
      type: array
      items:
        type: string
        pattern: ^[0-2][0-9]:[0-5][0-9] - [0-2][0-9]:[0-5][0-9]$
        example: 10:00 - 23:30
    JetConnectOrderAmendmentsRecommendations:
      type: object
      description: A recommendation for a specific item in an order.
      properties:
        plu:
          type: string
          description: The partner specific identifier for the recommended item.
          example: f0c28e11-c6b3-4a123
        rank:
          type: integer
          description: The rank of the recommendation, with 1 being the most preferred recommendation.
          example: 1
    JetConnectOrderAmendmentsSubstitutionRecommendationsResp:
      type: object
      description: The response body we will provide substitution recommendations for a specific item in an order.
      properties:
        recommendations:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderAmendmentsRecommendations'
    JetConnectOrderInjectionStatusUpdaterAsyncOrderFailed:
      description: The request body to send to mark an order as failed.
      type: object
      required:
        - happenedAt
        - errorCode
        - errorMessage
      properties:
        happenedAt:
          description: ISO timestamp that the order was marked as failed.
          type: string
          format: date-time
        errorCode:
          description: |-
            Indicates the failure reason. Possible values:

            - `INACTIVE`: the POS is offline and cannot take orders.
            - `INCORRECT_SETUP`: the configuration details sent with the order are wrong (e.g. store ID)
            - `IN_USE`: the POS is currently in use and cannot take requests.
            - `TIMEOUT`: the request to the POS timed out.
            - `NOT_SUPPORTED`: integrated ordering is not supported at this restaurant.
            - `MENU_ERROR`: the order had incorrect items (not in stock, PLU not in POS).
            - `MALFORMED_REQUEST`: the order request was malformed (e.g. malformed JSON).
            - `AUTH_FAILED`: the order authorization was incorrect.
            - `STORE_CLOSED`: the store is closed and cannot take orders.
            - `TENDER_ERROR`: the `tender_type` sent to the POS is wrong.
          type: string
          pattern: ^(UNKNOWN|INACTIVE|INCORRECT_SETUP|IN_USE|TIMEOUT|NOT_SUPPORTED|MENU_ERROR|MALFORMED_REQUEST|AUTH_FAILED|STORE_CLOSED|TENDER_ERROR)$
        errorMessage:
          description: Describes the failure reason
          type: string
        transmissionId:
          description: The Transmission ID that was sent in the order payload. This is optional, it only becomes necessary for partners on multi injection flow.
          type: string
    JetConnectOrderInjectionStatusUpdaterAsyncOrderSuccess:
      description: The request body to send to mark an order as successful.
      type: object
      properties:
        transmissionId:
          description: The Transmission ID that was sent in the order payload. This is optional, it only becomes necessary for partners on multi injection flow.
          type: string
    JetConnectOrderInjectionStatusUpdaterChannel:
      description: Details about the delivery partner who sent the order.
      type: object
      required:
        - name
        - id
      properties:
        name:
          description: Delivery partner name.
          type: string
        id:
          description: Delivery partner unique ID.
          type: number
    JetConnectOrderInjectionStatusUpdaterCollectAt:
      description: UNIX timestamp of when the order will be collected by the customer or driver. Only present on delivery-by-delivery-partner and collection-by-customer orders.
      type: string
      pattern: ^[0-9]+$
    JetConnectOrderInjectionStatusUpdaterCollectionNotes:
      description: Notes provided by the customer regarding their collection of the order. Only present on collection-by-customer orders.
      type: string
    JetConnectOrderInjectionStatusUpdaterCreatedAt:
      description: UNIX timestamp indicating when the order was created.
      type: string
      pattern: ^[0-9]+$
    JetConnectOrderInjectionStatusUpdaterDeliverAt:
      description: UNIX timestamp of when the order should be delivered to the customer. Only present on delivery-by-merchant orders.
      type: string
      pattern: ^[0-9]+$
    JetConnectOrderInjectionStatusUpdaterDelivery:
      description: Details about where the order should be delivered to. Only present on delivery-by-merchant and delivery-by-delivery-partner orders, and some properties may be masked depending on the delivery partner.
      type: object
      required:
        - first_name
        - last_name
        - phone_number
        - phone_masking_code
        - line_one
        - line_two
        - city
        - postcode
        - email
        - coordinates
      properties:
        first_name:
          description: The delivery recipient's first name.
          type: string
        last_name:
          description: The delivery recipient's last name.
          type: string
        phone_number:
          description: The delivery recipient's phone number. Alternatively, the number of a call centre which to provide the `phone_masking_code` to.
          type: string
        phone_masking_code:
          $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPhoneMaskingCode'
        street_number:
          description: The street number of the delivery address.
          type: string
        street:
          description: The street of the delivery address.
          type: string
        line_one:
          description: The first line of the delivery address.
          type: string
        line_two:
          description: The second line of the delivery address.
          type: string
        city:
          description: The city of the delivery address.
          type: string
        postcode:
          description: The postcode or zip code of the delivery address.
          type: string
        company_name:
          description: The name of the company.
          type: string
          maxLength: 128
        email:
          description: The delivery recipient's email address.
          type: string
        coordinates:
          description: GPS coordinates of the delivery address
          type: object
          required:
            - latitude
            - longitude
            - latitude_as_string
            - longitude_as_string
          properties:
            latitude:
              description: A float number indicating the longitude.
              type: number
              format: float
            longitude:
              description: A float number indicating the latitude.
              type: number
              format: float
            latitude_as_string:
              description: The longitude converted to string format.
              type: string
            longitude_as_string:
              description: The latitude converted to string format.
              type: string
        tax_id:
          description: Tax ID is provided for PL only as its a legal requirement.
          type: string
    JetConnectOrderInjectionStatusUpdaterDeliveryNotes:
      description: Notes provided by the customer regarding the delivery of the order. Only present on delivery-by-merchant orders.
      type: string
    JetConnectOrderInjectionStatusUpdaterExtras:
      description: Extra details for the order. Only supported by Just Eat.
      type: object
      properties:
        just_eat_order_api_id:
          description: Just Eat ID for this order.
          type: string
    JetConnectOrderInjectionStatusUpdaterFailureResponse:
      description: Bad request
      type: object
      properties:
        message:
          description: Describes why the order status update was rejected.
          type: string
          example: order 60298a19-9ef7-4860-bf69-f10fc0a26b21 not found
      required:
        - message
    JetConnectOrderInjectionStatusUpdaterId:
      description: JET Connect Platform's order ID. Used for updating the status of asynchronous orders.
      type: string
    JetConnectOrderInjectionStatusUpdaterItem:
      description: |-
        A menu item contained in the order.

        If an item-level promotion is applied by the delivery partner, the interested item(s) won't appear on the top level items array, but on the `promotion.items` one.
      type: object
      required:
        - name
        - description
        - plu
        - price
        - notes
      properties:
        name:
          description: Menu item name.
          type: string
        description:
          description: Menu item description.
          type: string
        plu:
          description: Menu item's Price Lookup Unit.
          type: string
        price:
          description: Menu item price indicated by an integer number in pounds and pence / dollars and cents, for example `1950` means `£19.50` or `$19.50`.
          type: number
        unitDepositAmount:
          description: The deposit paid for the item in the minor unit of the currency. For example `50` means `£0.50` or `$0.50`.
          type: number
        notes:
          description: Preparation notes that have been entered by the customer for this menu item (if any).
          type: string
        children:
          description: |-
            Array of objects representing modifier group options.

            When defining promotions of type `FREE_ITEM_MIN_BASKET`, this array should be empty.
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterOption'
        substitution:
          $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterSubstitution'
    JetConnectOrderInjectionStatusUpdaterItems:
      description: Array of menu items contained in the order. Except where otherwise noted, all properties are the same as provided when the menu was last published for this restaurant.
      type: array
      items:
        $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterItem'
    JetConnectOrderInjectionStatusUpdaterKitchenNotes:
      description: Notes provided by the customer regarding the preparation of the order. This information may not be available for every delivery partner. Confirm with your integration team whether this field will be available.
      type: string
    JetConnectOrderInjectionStatusUpdaterLocation:
      description: Additional details for the location.
      type: object
      required:
        - id
        - timezone
      properties:
        id:
          description: Delivery partner's identifier for the location.
          type: number
        timezone:
          description: ISO timezone for the location as configured on the JET Connect Platform.
          type: string
    JetConnectOrderInjectionStatusUpdaterMoneyValue:
      description: A monetary value including taxes. (Amounts are always positive, discounts are labelled as such and are subtracted from the total payment.)
      type: object
      required:
        - inc_tax
        - tax
      properties:
        inc_tax:
          description: The amount including tax.
          type: number
        tax:
          description: The tax that was applied.
          type: number
    JetConnectOrderInjectionStatusUpdaterOption:
      description: An option for an item, as defined by the modifier group options you provided in the menu request.
      type: object
      required:
        - name
        - description
        - plu
        - price
      properties:
        name:
          description: The name of the item to be fulfilled, as provided by you in the menu request.
          type: string
        description:
          description: The description of the item to be fulfilled, as provided by you in the menu request.
          type: string
        plu:
          description: The PLU (price lookup unit) of the item to be fulfilled, as provided by you in the menu request.
          type: string
        price:
          description: The price of the item, in cents, pence or other currency.
          type: number
        unitDepositAmount:
          description: The deposit paid for the item in the minor unit of the currency. For example `50` means `£0.50` or `$0.50`.
          type: number
    JetConnectOrderInjectionStatusUpdaterOrderAccepted:
      description: If you would like to handle the order asynchronously, return a 202 status code. JET Connect will place the order in a pending state, which will fail after 3 minutes if you do not notify JET Connect through the Update Order Status endpoint. If this endpoint is not called within 3 minutes, the order will be marked as failed to inject.
      type: object
      required:
        - OrderId
      properties:
        OrderId:
          description: The order identifier.
          type: string
          example: 1234-1234-1234
    JetConnectOrderInjectionStatusUpdaterOrderFailed:
      description: Any non-2xx status codes will be taken as a failure and redirected to the tablet to be hand-keyed into your POS.
      type: object
      required:
        - errorMessage
      properties:
        errorMessage:
          description: A description of the error
          type: string
          example: STORE_1234 is currently out of stock for PLU ABC321
    JetConnectOrderInjectionStatusUpdaterOrderSuccess:
      description: To indicate that the order was successfully processed, return a `200` status code with an Order Number. JET Connect will notify your delivery partner that the order was successfully processed.
      type: object
      required:
        - OrderId
      properties:
        OrderId:
          description: The order identifier.
          type: string
          example: 1234-1234-1234
    JetConnectOrderInjectionStatusUpdaterOrderUnauthorized:
      description: Unauthorized. Authorization failed or the HMAC validation did not match.
      type: object
      required:
        - errorMessage
      properties:
        errorMessage:
          description: A description of the error
          type: string
          example: HMAC mismatch, authorization failed. The response body did not match.
    JetConnectOrderInjectionStatusUpdaterPayment:
      description: Details about the payment, including taxes and discounts. Amounts are in cents or pence.
      type: object
      required:
        - items_in_cart
        - deposit
        - adjustments
        - final
      properties:
        items_in_cart:
          $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterMoneyValue'
        deposit:
          description: The total deposit paid for the order in the minor unit of the currency . For example `50` means `£0.50` or `$0.50`.
          type: number
        adjustments:
          description: Adjustments to the order total, such as delivery fees, service fees, bag fees, small order fees, discounts or deposits. These adjustments are configured by the delivery partner (they cannot be sent with menus).
          type: array
          items:
            type: object
            required:
              - name
              - price
            properties:
              name:
                description: Type of adjustment applied.
                type: string
                enum:
                  - deliveryFee
                  - serviceCharge
                  - bagfee
                  - smallOrderFee
                  - driverTip
                  - discount
                  - itemDepositGroup
                  - other
              price:
                $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterMoneyValue'
        final:
          $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterMoneyValue'
    JetConnectOrderInjectionStatusUpdaterPaymentMethod:
      description: Method that the order was paid with.
      type: string
      enum:
        - CARD
        - CASH
        - HOME_CREDITCARD
        - HOME_DEBITCARD
    JetConnectOrderInjectionStatusUpdaterPerson:
      description: |-
        Details about the person (driver or collector). Some properties may be masked depending on your delivery partner.

        If it's the driver, it contains details about the driver who will be picking up the order. Only present on delivery-by-delivery-partner orders.

        If it's the collector, it contains details about the customer who will be picking up the order. Only present on collection-by-customer orders.
      type: object
      required:
        - first_name
        - last_name
        - phone_number
      properties:
        first_name:
          description: The person's first name.
          type: string
        last_name:
          description: The person's last name.
          type: string
        phone_number:
          description: The person's phone number.
          type: string
        phone_masking_code:
          $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterPhoneMaskingCode'
    JetConnectOrderInjectionStatusUpdaterPhoneMaskingCode:
      description: |-
        The code used to unmask the phone number (only certain delivery partners).

        Some of the delivery partners, in order to comply with GDPR regulations, are not allowed to send the customer phone number directly in the order. In this case, a service provider call centre number is provided, along with a `phone_masking_code` value.

        If the driver / restaurant will need to call the customer, they will need to phone up the `phone_number` and provide the `phone_masking_code`. The call centre will put them in touch with the user, without exposing their PII directly.
      type: string
    JetConnectOrderInjectionStatusUpdaterPosLocationId:
      description: The POS or `3PA` identifier you have provided to JET Connect for this restaurant. You should use this to route the order to the correct restaurant.
      type: string
    JetConnectOrderInjectionStatusUpdaterPromotions:
      description: Array of promotion objects.
      type: array
      items:
        type: object
        required:
          - type
          - items
          - promotion_id
          - discount_value
          - offer_id
        properties:
          type:
            description: |-
              The type of promotion applied to the order. Supported values vary dependant on service provider:
              - `PERCENTAGE_DISCOUNT`: Available only in ES, IE, IT, UK.
              - `FREE_ITEM`: Available only in ES, IE, IT, UK.
              - `FREE_ITEM_MINIMUM_BASKET`: Available only in CA.
              - `ITEM_LEVEL_DISCOUNT`: Available in AU, CA, ES, IE, IT, NZ, UK.
              - `STAMP_CARD`: Available in UK, IE, AU, IT, ES.
              - `BUY_ONE_GET_ONE_FREE`: Available ES, IE, IT, UK, DE, NL, AT, BE, BG, DK, LU, PL and SK.
              - `BUY_ONE_GET_ONE_FREE_MIX_AND_MATCH`: Available in UK, IE, AU, IT, ES.
              - `TOTAL_ORDER`: Available in ES, IE, IT, UK, DE, NL, AT, BE, BG, DK, LU, PL and SK.
            type: string
          items:
            description: An array of menu items for which this promotion applies. Except where otherwise noted, all properties are the same as provided when the menu was last published for this restaurant.
            type: array
            items:
              $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterItem'
          promotion_id:
            type: string
            description: The identifier of the promotion
          discount_value:
            type: number
            format: double
            description: How much the item is discounted
          offer_id:
            type: string
            description: The identifier of the offer
    JetConnectOrderInjectionStatusUpdaterSubstitution:
      type: object
      description: If an item cannot be fulfilled, the customer can mark the item as substitutable at point of ordering (currently only supported within grocer orders). This field will not be sent to POS providers who do not support substitutions
      properties:
        preference:
          type: string
          enum:
            - bestmatch
          description: The customer's preference related to a substitution
    JetConnectOrderInjectionStatusUpdaterTenderType:
      description: An identifier for the payment method. If your POS integration requires a this field, please contact your brand manager.
      type: string
    JetConnectOrderInjectionStatusUpdaterThirdPartyOrderReference:
      description: Delivery partner's identifier for the order. This is the order number that is displayed to the customer on the delivery partner website, and will be referenced when the order is picked up.
      type: string
    JetConnectOrderInjectionStatusUpdaterType:
      description: |-
        Indicates how the order will be fulfilled. Accepts the following values:
        - `delivery-by-delivery-partner`: the order will be delivered by the delivery partner (Just Eat, Skip, Menulog, Takeaway).
        - `delivery-by-merchant`: delivery will be arranged by the restaurant, and not the delivery partner.
        - `collection-by-customer`: The order will be collected by the customer. Known as "take out" or "pickup" in some markets.
      type: string
      pattern: ^(delivery-by-delivery-partner|delivery-by-merchant|collection-by-customer)$
    JetConnectOrderInjectionStatusUpdaterFinalPickedItem:
      description: |-
        A menu item contained in the order.

        If an item-level promotion is applied by the delivery partner, the interested item(s) won't appear on the top level items array, but on the `promotion.items` one.
      type: object
      required:
        - name
        - description
        - plu
        - price
        - notes
      properties:
        name:
          description: Menu item name.
          type: string
        description:
          description: Menu item description.
          type: string
        plu:
          description: Menu item's Price Lookup Unit.
          type: string
        price:
          description: Menu item price indicated by an integer number in pounds and pence / dollars and cents, for example `1950` means `£19.50` or `$19.50`.
          type: number
        unitDepositAmount:
          description: The deposit paid for the item in the minor unit of the currency. For example `50` means `£0.50` or `$0.50`.
          type: number
        notes:
          description: Preparation notes that have been entered by the customer for this menu item (if any).
          type: string
        children:
          description: |-
            Array of objects representing modifier group options.

            When defining promotions of type `FREE_ITEM_MIN_BASKET`, this array should be empty.
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterOption'
    JetConnectOrderInjectionStatusUpdaterFinalPickedItems:
      description: Array of menu items contained in the order. Except where otherwise noted, all properties are the same as provided when the menu was last published for this restaurant.
      type: array
      items:
        $ref: '#/components/schemas/JetConnectOrderInjectionStatusUpdaterFinalPickedItem'
    JetConnectOrderReportingConnectorAddress:
      title: Address
      type: object
      description: Represents a postal address, a collection of information to give the location of the restaurant.
      properties:
        lines:
          type: array
          items:
            type: string
        city:
          type: string
          minLength: 1
          description: The city/town portion of the address.
        postalCode:
          type: string
          minLength: 1
          description: Postal code of the address.
        geolocation:
          $ref: '#/components/schemas/JetConnectOrderReportingConnectorGeolocation'
      required:
        - lines
        - city
        - postalCode
        - geolocation
    JetConnectOrderReportingConnectorGeolocation:
      title: Geolocation
      description: An object that represents a latitude/longitude pair.
      type: object
      properties:
        latitude:
          type: number
          format: double
          description: The latitude in degrees.
        longitude:
          type: number
          format: double
          description: The longitude in degrees.
      required:
        - latitude
        - longitude
    JetConnectOrderReportingConnectorLocation:
      title: Location
      description: An object describing a restaurant.
      type: object
      x-examples:
        example:
          reference: '28058'
          timeZone: Europe/London
          id: '144581'
          name: McDonald's® - Lowestoft - Kirkly Rise
          address:
            lines:
              - Kirkly Rise
            city: Lowestift
            postalCode: NR33 0PP
            geolocation:
              latitude: 52.470500505289
              longitude: 1.74350275274189
          phoneNumber: '02039126648'
      properties:
        reference:
          type: string
          description: An identifier of the restaurant as given to us by a third party.
        timeZone:
          type: string
          description: The time zone the location is located in.
        id:
          type: string
          description: A unique identifier of the location in our systems.
        name:
          type: string
          description: The name of the location.
        address:
          $ref: '#/components/schemas/JetConnectOrderReportingConnectorAddress'
        phoneNumber:
          type: string
          description: The phone number of the location.
      required:
        - reference
        - id
        - name
    JetConnectOrderReportingConnectorOrder:
      title: Order
      type: object
      description: Order represents an order that was placed.
      properties:
        orderDetails:
          $ref: '#/components/schemas/JetConnectOrderReportingConnectorOrderDetails'
        pos:
          type: string
          description: The type of payment terminal, also known as a point of sale (POS) terminal.
        payload:
          type: string
          description: The payload of the single order object is an unstructured string. The purpose of this property is not to manipulate it, but just to have the possibility to quickly view the content that was injected on the POS.
        steps:
          $ref: '#/components/schemas/JetConnectOrderReportingConnectorOrderFlowSteps'
        mostRecentActivity:
          description: The most recent activity recorded for this order.
          type: string
          format: date-time
      required:
        - orderDetails
        - pos
        - payload
    JetConnectOrderReportingConnectorOrderDetails:
      title: OrderDetails
      type: object
      description: An object containing details about an order.
      properties:
        orderID:
          type: string
          minLength: 1
          description: The ID of the order.
        thirdPartyOrderReference:
          type: string
          minLength: 1
          description: The third party order reference of the order, also known as friendly order reference.
        placedAt:
          type: string
          format: date-time
          description: The date and time the order was created.
        location:
          $ref: '#/components/schemas/JetConnectOrderReportingConnectorLocation'
        status:
          $ref: '#/components/schemas/JetConnectOrderReportingConnectorOrderStatus'
        error:
          $ref: '#/components/schemas/JetConnectOrderReportingConnectorOrderError'
        sendToPosStatus:
          type: string
          description: Whether the POS injection was successful for the order, failure indicates that backup flow was triggered.
      required:
        - orderID
        - thirdPartyOrderReference
        - placedAt
        - location
        - status
        - sendToPosStatus
    JetConnectOrderReportingConnectorOrderError:
      title: OrderError
      type: object
      description: Error information, if the order failed.
      properties:
        errorCode:
          type: string
          description: The error code from the POS.
        errorMessage:
          type: string
          description: The full error message.
        errorID:
          type: string
          minLength: 1
          description: The ID of the error category.
        category:
          type: string
          minLength: 1
          description: The error category.
        resolution:
          type: string
          description: A possible resolution to the error.
        errorName:
          type: string
          description: The name of the matched error category.
        level:
          type: string
          description: The level, either brand or integration.
        matchedRegex:
          type: string
          description: The regular expression that was matched to the error message.
      required:
        - errorCode
        - errorMessage
        - errorID
        - category
        - resolution
        - errorName
        - level
        - matchedRegex
    JetConnectOrderReportingConnectorOrderFlowStep:
      title: OrderFlowStep
      type: object
      description: A specific step in the order flow.
      properties:
        name:
          type: string
          description: The name of the step.
        description:
          type: string
          description: A description of the step.
        service:
          type: string
          description: The service that emitted the event.
        time:
          type: string
          format: date-time
          description: The time when the event occurred.
      required:
        - name
        - description
        - service
        - time
    JetConnectOrderReportingConnectorOrderFlowSteps:
      title: OrderFlowSteps
      type: array
      items:
        $ref: '#/components/schemas/JetConnectOrderReportingConnectorOrderFlowStep'
    JetConnectOrderReportingConnectorOrderStatus:
      title: OrderStatus
      type: string
      description: The current status of an order. If an order is "success" the error property will be empty.
      enum:
        - success
        - failure
    JetConnectOrderingUniversalConnectorAddedItem:
      type: object
      description: AddedItem represents an alternative product that can replace a product that was out of stock.
      required:
        - plu
        - quantity
      properties:
        plu:
          type: string
          description: The partner specific identifier or "price lookup code" for the substituted item.
          example: plu123
        quantity:
          type: number
          description: The number of products, identified by this price lookup code, that are to be added to the order and will replace the removed items.
          example: 2
    JetConnectOrderingUniversalConnectorAddress:
      type: object
      description: Information about an address
      properties:
        lines:
          type: array
          description: The address lines
          items:
            type: string
        city:
          type: string
          description: The city
        postalCode:
          type: string
          description: The postcode
        geoLocation:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorGeolocation'
        county:
          type: string
          description: The county
        companyName:
          type: string
          description: The name of the company
      required:
        - lines
        - city
        - postalCode
        - county
    JetConnectOrderingUniversalConnectorAdjustmentItem:
      type: object
      description: Information about an adjustment
      properties:
        value:
          type: number
          format: double
          description: The amount of the adjustment
        tax:
          type: number
          format: double
          description: The tax adjustment
      required:
        - value
        - tax
    JetConnectOrderingUniversalConnectorAdjustments:
      type: object
      description: Adjustments to the order
      properties:
        delivery:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAdjustmentItem'
        serviceCharge:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAdjustmentItem'
        other:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAdjustmentItem'
        driverTip:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAdjustmentItem'
        bagFee:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAdjustmentItem'
    JetConnectOrderingUniversalConnectorAmendOrderItem:
      type: object
      description: Item to be amended.
      required:
        - reason
        - plu
        - missingQuantity
      properties:
        reason:
          type: string
          enum:
            - missing
          description: The reason the item is being amended.
        plu:
          type: string
          description: The partner specific identifier or "price lookup code" for the missing item.
          example: plu123
        missingQuantity:
          type: number
          description: The amount of items this amendment affects.
          example: 1
    JetConnectOrderingUniversalConnectorAmendOrderReq:
      type: object
      description: Items marked as out of stock.
      required:
        - items
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAmendOrderItem'
    JetConnectOrderingUniversalConnectorAmendOrderResp:
      type: object
      description: Information about this amendment.
      required:
        - orderId
        - state
      properties:
        orderId:
          type: string
          description: The originating order ID as supplied by the ordering partner.
          example: 00025doahk2txeo9ttd0ma
        state:
          type: string
          enum:
            - pending
            - accepted
            - failed
            - succeeded
          description: State describes the current state of the amendment.
    JetConnectOrderingUniversalConnectorCancelOrderReq:
      type: object
      description: Reason why the order is being cancelled.
      required:
        - reason
      properties:
        reason:
          type: string
          enum:
            - allItemsOutOfStock
          description: Reason describes the cause of the cancellation.
    JetConnectOrderingUniversalConnectorCancelOrderResp:
      type: object
      description: Information about this cancellation.
      required:
        - orderId
        - message
      properties:
        orderId:
          type: string
          description: The originating order ID as supplied by the ordering partner.
          example: 00025doahk2txeo9ttd0ma
        message:
          type: string
          description: An optional message with information about the successful cancellation.
          example: Successfully cancelled order
    JetConnectOrderingUniversalConnectorCancellationInitiatedBy:
      type: object
      description: Who initiated the order was cancellation in the form of a code. Only supported by Takeaway.
      properties:
        code:
          type: string
          description: A code signifying who initiated the cancellation.
          enum:
            - unknown
            - system
            - customer
            - restaurant
            - deliveryPartner
    JetConnectOrderingUniversalConnectorCancellationReason:
      type: object
      description: The reason why an order was cancelled in the form of a code.
      properties:
        code:
          type: string
          description: A code signifying the cancellation reason.
          enum:
            - custCancelledChangedMind
            - custCancelledDeliveryTooLong
            - custCancelledMadeMistake
            - custCancelledOther
            - restCancelledCustomerAbsent
            - restCancelledCustomerRequested
            - restCancelledDriversUnavailable
            - restCancelledFakeOrder
            - restCancelledOutOfStock
            - restCancelledTooBusy
            - restCancelledOther
            - deletedTooFar
            - deletedFakeDelivered
            - deletedFakeNotDelivered
            - deletedFaxNotReceived
            - deletedIncorrectOrder
            - deletedMissedByRestaurant
            - deletedFakeNotCollected
            - deletedRestaurantCannotDeliver
            - deletedNewTimeRejected
            - deletedTestOrder
            - deletedRejectedByRestaurant
            - deletedSystemError
            - deletedRestaurantOffline
            - deletedNoAnswerFromRestaurant
            - deletedRejectedByPartner
            - unknown
      required:
        - code
    JetConnectOrderingUniversalConnectorCancelledOrder:
      type: object
      description: Metadata about the order that was cancelled.
      properties:
        orderID:
          type: string
          description: The identifier of the order that was cancelled.
        reason:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorCancellationReason'
        initiatedBy:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorCancellationInitiatedBy'
        happenedAt:
          type: string
          format: date-time
          description: When the order was cancelled, in Coordinated Universal Time (UTC) and RFC 3339 (ISO 8601) format.
      required:
        - orderID
        - reason
        - happenedAt
    JetConnectOrderingUniversalConnectorCustomer:
      type: object
      description: Information about the customer
      properties:
        id:
          type: string
          description: The customer identifier
        name:
          type: string
          description: The name of the customer
        email:
          type: string
          description: The email of the customer
      required:
        - id
        - name
        - email
    JetConnectOrderingUniversalConnectorCustomerNotes:
      type: object
      description: Any additional notes from the customer
      properties:
        kitchenNotes:
          type: string
          description: Notes from the customer for the kitchen
        driverNotes:
          type: string
          description: Notes from the customer for the driver
      required:
        - kitchenNotes
        - driverNotes
    JetConnectOrderingUniversalConnectorDriver:
      type: object
      description: Information about the driver
      properties:
        firstName:
          type: string
          description: The first name of the driver
        lastName:
          type: string
          description: The last name of the driver
        phoneNumber:
          type: string
          description: The phone number of the driver
      required:
        - firstName
        - lastName
        - phoneNumber
    JetConnectOrderingUniversalConnectorDriverStatus:
      type: object
      description: Information about the new driver status.
      properties:
        code:
          type: string
          enum:
            - driverArrivingAtRestaurant
            - driverAtRestaurant
            - onItsWay
            - delivered
          description: A code signifying the new driver status.
      required:
        - code
    JetConnectOrderingUniversalConnectorDriverStatusUpdate:
      type: object
      description: Metadata about the order and information about the new driver status.
      properties:
        orderID:
          type: string
          description: The identifier of the order.
        driverStatus:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorDriverStatus'
        happenedAt:
          type: string
          format: date-time
          description: Timestamp of the event in Coordinated Universal Time (UTC) and RFC 3339 (ISO 8601) format.
      required:
        - orderID
        - driverStatus
        - happenedAt
    JetConnectOrderingUniversalConnectorError:
      type: object
      properties:
        message:
          description: The reason why the request was unsuccessful.
          type: string
      required:
        - message
      description: Please return errors to calling your webhook in this format.
    JetConnectOrderingUniversalConnectorFailedAmendmentBody:
      description: The request body we will provide to your endpoint with information about why the amendment failed to process.
      type: object
      properties:
        reason:
          type: string
          description: Error provided by the downstream system for the failed amendment.
          example: Location incorrectly configured
        orderId:
          type: string
          description: Partner order ID, as provided upon initial injection
          example: 00025doahk2txeo9ttd0ma
      required:
        - reason
        - orderId
    JetConnectOrderingUniversalConnectorFailedCancellationBody:
      description: The response body we will provide with information about why the cancellation failed to process.
      type: object
      properties:
        reason:
          type: string
          enum:
            - errCodeUnknown
          description: The reason why the cancellation request failed.
          example: errCodeUnknown
        message:
          type: string
          description: An optional message with information about the error that occurred.
          example: Brand slug is invalid
        orderId:
          type: string
          description: Partner order ID, as provided upon initial injection
          example: 00025doahk2txeo9ttd0ma
      required:
        - reason
        - message
        - orderId
    JetConnectOrderingUniversalConnectorFailedModificationBody:
      title: Failed Modification
      type: object
      required:
        - orderId
        - errors
      properties:
        orderId:
          type: string
          description: Partner order ID, as provided upon initial injection
          example: 00025doahk2txeo9ttd0ma
        errors:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFailedModificationReason'
        type:
          type: string
          description: Indicates if the callback is for a modification failure.
          enum:
            - failure
    JetConnectOrderingUniversalConnectorFailedModificationBodySync:
      type: object
      required:
        - orderId
        - errors
      properties:
        orderId:
          type: string
          description: Partner order ID, as provided upon initial injection
          example: 00025doahk2txeo9ttd0ma
        errors:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFailedModificationReasonSync'
        type:
          type: string
          description: Indicates if the callback is for a modification failure.
          enum:
            - failure
    JetConnectOrderingUniversalConnectorFailedModificationReason:
      type: object
      required:
        - errorCode
      properties:
        errorCode:
          type: string
          description: The reason a modification request did not succeed. This list could be expanded in the future. Your application should be tolerant to new, unexpected values.
          enum:
            - badRequestFormat
            - orderNotFound
            - removedItemNotFound
            - removedItemDuplicate
            - removedItemSubstitutionNotEnabled
            - addedItemNotFound
            - addedPriceIsGreaterThanRemoved
            - newTotalPriceLessThanOrEqualToZero
            - notSupported
            - cancelOrderNotAllowed
            - upstreamPartner
            - other
        removed:
          type: object
          description: Supplied when errorCode is removedItemNotFound, removedItemDuplicate and removedItemSubstitutionNotEnabled.
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorModificationRemovedItem'
        added:
          type: object
          description: Supplied when errorCode is addedItemNotFound.
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAddedItem'
        pricing:
          type: object
          description: Detailed information when rejection happened due to pricing. Supplied when errorCode is addedPriceIsGreaterThanRemoved.
          properties:
            modificationPair:
              type: object
              $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorModificationPair'
            currency:
              type: string
              description: The currency of the items on the menu in ISO 4217 format, i.e. GBP, EUR, AUD or NZD
            priceDifference:
              type: number
              format: integer
              description: Price difference in the minor unit of the currency
        notSupportedModificationPair:
          description: Supplied when the errorCode is notSupported. Indicates the unsupported modification pair.
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorModificationPair'
        notSupportedReasons:
          type: array
          description: Supplied when errorCode is notSupported. Shows what modification pair type was not supported. This list could be expanded in the future. Your application should be tolerant to new, unexpected values.
          items:
            type: string
            enum:
              - oneToManySubstitution
              - manyToOneSubstitution
              - manyToManySubstitution
              - removedComplexItemInSubstitution
              - removedMealDealInSubstitution
              - addedMealDealInSubstitution
              - other
      example:
        errorCode: addedPriceIsGreaterThanRemoved
        pricing:
          modificationPair:
            removedItems:
              - plu: plu-123
                missingQuantity: 1
            addedItems:
              - plu: plu-456
                quantity: 2
          priceDifference: 7500
          currency: GBP
    JetConnectOrderingUniversalConnectorFailedModificationReasonSync:
      type: object
      required:
        - errorCode
      properties:
        errorCode:
          type: string
          description: The reason a modification request did not succeed. This list could be expanded in the future. Your application should be tolerant to new, unexpected values.
          enum:
            - badRequestFormat
            - removedItemNotFound
            - removedItemSubstitutionNotEnabled
            - addedItemNotFound
            - invalidModificationRequest
            - emptyRequest
            - finalOrderAlreadyInjected
            - internalServerError
      example:
        errorCode: removedItemNotFound
    JetConnectOrderingUniversalConnectorFailedOrder:
      description: Information about an order that failed validation.
      type: object
      properties:
        validationError:
          type: string
          description: A string giving us more information on why the validation failed.
        unknownReference:
          type: string
          description: An item reference missing from the menu causing validation failure (if any)
        menuId:
          type: string
          description: The ID of the published menu that the order was validated against (if any)
        order:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorOrderCreated'
      required:
        - validationError
      x-examples:
        Sample Order That Failed Validation:
          menuId: 2d4006f6-6b85-496e-9d41-523e75a91b0f
          order:
            acceptedAt: '2022-10-20T15:30:00+00:00'
            currency: GBP
            customer:
              email: max.mustermann@justeattakeaway.com
              id: '58259904'
              name: Max Mustermann
            customerNotes:
              driverNotes: ''
              kitchenNotes: no cheese please
            driver:
              firstName: Joe
              lastName: Smith
              phoneNumber: ''
            friendlyOrderReference: '1806363209'
            fulfilment:
              address:
                city: London
                county: ''
                geoLocation:
                  latitude: 51.545254
                  longitude: -0.007868
                lines:
                  - Example Road 123
                postalCode: E21 4LW
              customerDueAsap: true
              customerDueDate: '2022-10-20T15:30:00+00:00'
              method: Delivery
              phoneMaskingCode: '448595428'
              phoneNumber: 02045 555 301
              prepareFor: ''
              preparationTime: ''
              type: DELIVERY_BY_OPERATOR
            isTest: false
            items:
              - items: null
                name: Peri Peri Chicken Wrap
                notes: ''
                quantity: 1
                reference: 6440352f-cb04-4d48-b3ed-d945f010c627
                synonym: ''
                totalPrice: 6.95
                unitPrice: 6.95
              - items:
                  - description: ''
                    items:
                      - description: ''
                        items: null
                        name: 8 Pieces Peri Peri Chicken
                        quantity: 1
                        reference: 2cc4e00f-5939-40bd-9c95-468c9e96a574
                        unitPrice: 0
                    name: Peri Peri
                    quantity: 1
                    reference: ab98c424-2af1-44fe-aa57-8e5184019a96
                    unitPrice: 0
                name: 8 Pieces Peri Peri Chicken
                notes: ''
                quantity: 1
                reference: 38c45fe9-43b0-4570-b4e7-1c937ab591f9
                synonym: ''
                totalPrice: 12.95
                unitPrice: 12.95
            orderId: qxsjixwvuemnvb4ootr9rg
            payment:
              fees:
                - type: delivery
                  value: 1
                - type: service charge
                  value: 0.5
              lines:
                - paid: true
                  type: Card
                  value: 14.93
            placedDate: '2022-10-20T14:45:57.5730441+00:00'
            priceBreakdown:
              discount: 5.97
              feeItems: null
              fees:
                delivery: 1
                other: 0
                serviceCharge: 0.5
              items: 19.9
              taxes: 0
              tips: 0
            promotions: null
            restaurant:
              id: '55303'
            totalPrice: 15.43
          unknownReference: 6440352f-cb04-4d48-b3ed-d945f010c627
          validationError: 'top level item: {name: "Peri Peri Chicken Wrap", reference: "6440352f-cb04-4d48-b3ed-d945f010c627"} not present in restaurant''s menu'
    JetConnectOrderingUniversalConnectorFee:
      type: object
      description: A fee accrued by the order
      properties:
        type:
          type: string
          description: The type of fee
        value:
          type: number
          format: double
          description: The amount of the fee
    JetConnectOrderingUniversalConnectorFeeItem:
      type: object
      description: Breakdown of a fee item
      properties:
        type:
          type: string
          description: The type of fee
        value:
          type: number
          format: double
          description: The fee amount
      required:
        - type
        - value
    JetConnectOrderingUniversalConnectorFees:
      type: object
      description: The fees payable for the order
      properties:
        delivery:
          type: number
          format: double
          description: The delivery charge
        serviceCharge:
          type: number
          format: double
          description: The service charge
        other:
          type: number
          format: double
          description: Any other charges
      required:
        - delivery
        - serviceCharge
        - other
    JetConnectOrderingUniversalConnectorFulfilment:
      type: object
      description: Details about the fulfilment of the order
      properties:
        type:
          type: string
          description: The type of fulfilment
        method:
          type: string
          description: The fulfilment method
        phoneNumber:
          type: string
          description: Customer phone number (will be masked number if enabled)
        customerDueDate:
          type: string
          description: The time due at the customer
        customerDueAsap:
          type: boolean
          description: The customer wants the order ASAP
        prepareFor:
          type: string
          description: When the order will be prepared
        preparationTime:
          type: string
          description: The preparation time
        address:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAddress'
        phoneMaskingCode:
          type: string
          description: Code to use when calling customer phone masking number about this order
      required:
        - method
        - phoneNumber
        - customerDueDate
        - customerDueAsap
        - prepareFor
        - preparationTime
        - address
        - type
        - phoneMaskingCode
    JetConnectOrderingUniversalConnectorGeolocation:
      type: object
      description: GPS coordinates
      properties:
        latitude:
          type: number
          format: double
          description: The latitude part of the GPS tuple
        longitude:
          type: number
          format: double
          description: The longitude part of the GPS tuple
      required:
        - latitude
        - longitude
    JetConnectOrderingUniversalConnectorItem:
      type: object
      description: A menu item contained in the order
      properties:
        totalPrice:
          type: number
          format: double
          description: The total price of the order item
        reference:
          type: string
          description: The POS Item ID
        name:
          type: string
          description: Menu item name
        synonym:
          type: string
          description: A synonym for the order item
        quantity:
          type: number
          description: The quantity of the item
        unitPrice:
          type: number
          format: double
          description: The unit price of the item
        items:
          type: array
          description: Array of menu items contained in the order
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorModifier'
        notes:
          type: string
          description: Preparation notes that have been entered by the customer for this menu item (if any)
        offers_applied:
          type: array
          description: '**V2 (Current).** Array of offer ids. Each id corresponds to an object in the top-level `promotions` array with a matching `offer_id`, linking this item to the promotions applied to it. Only present on items that have item-level discounts applied.'
          items:
            type: string
      required:
        - totalPrice
        - reference
        - name
        - synonym
        - quantity
        - unitPrice
        - items
        - notes
    JetConnectOrderingUniversalConnectorModificationPair:
      type: object
      description: A modification pair, detailing an item (or set of items) that have been removed from an order and the item (or items) that have been supplied as substitutions.
      required:
        - removedItems
      properties:
        removedItems:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorModificationRemovedItem'
        addedItems:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAddedItem'
    JetConnectOrderingUniversalConnectorModificationRemovedItem:
      type: object
      description: Item to be amended.
      required:
        - plu
        - missingQuantity
      properties:
        plu:
          type: string
          description: The partner specific identifier or "price lookup code" for the missing item.
          example: plu123
        missingQuantity:
          type: number
          description: The number of items, represented by this price lookup code, that are to be removed from the order.
          example: 1
    JetConnectOrderingUniversalConnectorModifier:
      type: object
      description: A modifier to the item
      properties:
        reference:
          type: string
          description: The POS Item ID
        name:
          type: string
          description: Menu item name
        description:
          type: string
          description: Menu item description
        quantity:
          type: number
          description: The quantity of the item
        unitPrice:
          type: number
          format: double
          description: The unit price of the item
        items:
          type: array
          description: Further modifiers
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorModifier'
      required:
        - reference
        - name
        - description
        - quantity
        - unitPrice
        - items
    JetConnectOrderingUniversalConnectorModifyOrderReq:
      type: object
      description: Submit items as out of stock and, optionally, substitute them for another items.
      required:
        - modifications
      properties:
        modifications:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorModificationPair'
    JetConnectOrderingUniversalConnectorModifyOrderResp:
      type: object
      description: Information about this modification.
      required:
        - orderId
        - state
      properties:
        orderId:
          type: string
          description: The originating order ID as supplied to you by JET.
          example: 00025doahk2txeo9ttd0ma
        state:
          type: string
          enum:
            - initialised
            - pending
            - accepted
            - failed
            - succeeded
          description: State describes the current state of the amendment.
    JetConnectOrderingUniversalConnectorOfflineServiceType:
      type: object
      description: Information about service which is offline
      properties:
        isOffline:
          type: boolean
          description: Fields to show service status online/offline
        allowRestaurantOverride:
          type: boolean
          description: Field to allow override data
        categories:
          type: array
          description: Array to show which categories are affected
          items:
            type: string
        reasons:
          type: array
          description: Array to show reasons of status
          items:
            type: string
    JetConnectOrderingUniversalConnectorOrderCreated:
      type: object
      description: |-
        The possibly incomplete payload of a `*flyt.OrderCreated`, so that the order can still be keyed in manually.
        Note that this is only an approximation of the actual payload.
      properties:
        orderId:
          type: string
          description: JET Connect Platform's order ID.
        friendlyOrderReference:
          type: string
          description: Delivery partner's identifier for the order. This is the order number that is displayed to the customer on the delivery partner website, and will be referenced when the order is picked up.
        currency:
          type: string
          description: The currency used to pay for the order
        totalPrice:
          type: number
          format: double
          description: The total price of the order
        fulfilment:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFulfilment'
        payment:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorPayment'
        customer:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorCustomer'
        items:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorItem'
        priceBreakdown:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorPriceBreakdown'
        customerNotes:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorCustomerNotes'
        placedDate:
          type: string
          description: When the order was placed
        isTest:
          type: boolean
          description: Whether or not this is a test order
        driver:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorDriver'
        acceptedAt:
          type: string
          description: When the order was accepted
        testData:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorTestData'
        restaurant:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorRestaurant'
        promotions:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorPromotions'
      required:
        - orderId
        - friendlyOrderReference
        - currency
        - totalPrice
        - items
        - placedDate
        - isTest
        - driver
        - acceptedAt
        - promotions
    JetConnectOrderingUniversalConnectorPayment:
      type: object
      description: A breakdown of the payment
      properties:
        lines:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorPaymentLine'
        fees:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFee'
      required:
        - lines
        - fees
    JetConnectOrderingUniversalConnectorPaymentLine:
      type: object
      description: A line in the list of payments
      properties:
        type:
          type: string
          description: The type of payment
        value:
          type: number
          format: double
          description: The amount to be paid
        paid:
          type: boolean
          description: Whether or not payment has been made
      required:
        - type
        - value
        - paid
    JetConnectOrderingUniversalConnectorPriceBreakdown:
      type: object
      description: A breakdown of the price of the order
      properties:
        discount:
          type: number
          format: double
          description: Any applied discount
        fees:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFees'
        tips:
          type: number
          format: double
          description: Any tips
        taxes:
          type: number
          format: double
          description: Any applied taxes
        items:
          type: number
          format: double
          description: Payment for items
        feeItems:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorFeeItem'
        adjustments:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorAdjustments'
      required:
        - discount
        - tips
        - taxes
        - items
        - feeItems
    JetConnectOrderingUniversalConnectorPromotionBreakdown:
      type: object
      description: '**V2 (Current).** Breakdown of a single item-level discount within a promotion.'
      required:
        - plu
        - quantity
        - unit_discount_value
      properties:
        plu:
          type: string
          description: The PLU of the item associated with this promotion
        quantity:
          type: integer
          format: int32
          description: The number of units of the item included in the promotion
        unit_discount_value:
          type: number
          format: double
          description: The discount value applied to one unit of the item, in the order currency
    JetConnectOrderingUniversalConnectorPromotions:
      type: object
      description: Information about a promotion applied to the order. The top-level `promotions` array is the single source of truth for all promotions (both item-level and order-level).
      properties:
        type:
          type: string
          description: The type of promotion applied to the order. Supported values vary depending on the service provider.
        items:
          type: array
          deprecated: true
          description: '**V1 (Legacy) — deprecated.** In V2 all items appear only in the top-level `items` array, and the link to a promotion is expressed through `offers_applied` on the item and the `breakdown` array below. This embedded array will be removed in a future version; do not rely on it for new integrations.'
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorItem'
        promotion_id:
          type: string
          description: The identifier of the promotion
        discount_value:
          type: number
          format: double
          description: How much the promotion discounts, in the order currency
        offer_id:
          type: string
          description: The identifier of the offer. **V2 (Current):** items discounted by this promotion reference this value in their `offers_applied` array.
        breakdown:
          type: array
          description: '**V2 (Current).** Breakdown of the item-level discounts that make up this promotion. Present for item-level promotions.'
          items:
            $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorPromotionBreakdown'
      required:
        - type
        - promotion_id
        - discount_value
    JetConnectOrderingUniversalConnectorRestaurant:
      type: object
      description: Information about the restaurant
      properties:
        id:
          description: The identifier of the restaurant
          type: string
      required:
        - id
    JetConnectOrderingUniversalConnectorRestaurantTempOfflineStatusChanged:
      type: object
      description: Notification about which service type of restaurant is going temporary offline and online again.
      properties:
        restaurantId:
          type: string
          description: The identifier of the restaurant that was set offline/online.
        lastChangedTimeStampUtc:
          type: string
          format: date-time
          description: When the service type of restaurant was set offline/online.
        collection:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorOfflineServiceType'
        delivery:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorOfflineServiceType'
        dineIn:
          $ref: '#/components/schemas/JetConnectOrderingUniversalConnectorOfflineServiceType'
      required:
        - restaurantId
        - lastChangedTimeStampUtc
        - collection
        - delivery
        - dineIn
    JetConnectOrderingUniversalConnectorSuccessModificationBody:
      title: Successful Modification
      type: object
      description: Request body sent to notify partners of a successful order modification
      required:
        - orderId
        - type
      properties:
        orderId:
          type: string
          description: Partner order ID, as provided upon initial injection
          example: 00025doahk2txeo9ttd0ma
        type:
          type: string
          description: Indicates if the callback is for a successful modification.
          enum:
            - success
    JetConnectOrderingUniversalConnectorTestData:
      type: object
      description: An object test orders have with information about the test
      properties:
        type:
          type: string
          description: The type of test
        description:
          type: string
          description: Test description, for example `capability test ${pr} ${repo}`
      required:
        - type
        - description
    JetConnectOrderingUniversalConnectorUnauthorizedResponse:
      description: The response body we will provide when authorization failed.
      type: object
      properties:
        message:
          type: string
          description: An optional message with information about the error that occurred.
          example: No API key found in the request
      required:
        - message
    JetConnectPartnerConfigurationApiCatalogueConfiguration:
      title: CatalogueConfiguration
      description: |
        The `contract` field selects which configuration applies.
        Only one contract may be active.
      oneOf:
        - $ref: '#/components/schemas/JetConnectPartnerConfigurationApiUniversalCatalogueContract'
      discriminator:
        propertyName: contract
        mapping:
          universal: '#/components/schemas/JetConnectPartnerConfigurationApiUniversalCatalogueContract'
    JetConnectPartnerConfigurationApiOnboardingConfigurationRequest:
      title: OnboardingConfigurationRequest
      type: object
      description: |
        Partner onboarding configuration. At least one of `catalogue` or `order` must be provided.
      properties:
        catalogue:
          $ref: '#/components/schemas/JetConnectPartnerConfigurationApiCatalogueConfiguration'
        order:
          $ref: '#/components/schemas/JetConnectPartnerConfigurationApiOrderConfiguration'
      minProperties: 1
      additionalProperties: false
      anyOf:
        - required:
            - catalogue
        - required:
            - order
    JetConnectPartnerConfigurationApiOnboardingWebhookNotification:
      title: OnboardingWebhookNotification
      type: object
      description: |
        Payload posted to the partner's webhook URL when an onboarding lifecycle
        event occurs. All fields use partner-facing names. No internal identifiers
        or state names are exposed.
      required:
        - eventType
        - sessionId
        - stage
        - timestamp
        - referenceId
      properties:
        eventType:
          type: string
          enum:
            - onboardingActionRequired
            - onboardingTimeout
            - onboardingFailed
            - onboardingLocationLive
          description: |
            Type of event. Notifications are only sent for actionable events and significant status changes:
            - `onboardingActionRequired` - partner must take an action to proceed (e.g. submit configuration or push a menu)
            - `onboardingTimeout` - partner did not complete a required step within the deadline
            - `onboardingLocationLive` - location has been enabled and is accepting orders
            - `onboardingFailed` - non-timeout failure (reserved, not currently emitted)
        sessionId:
          type: string
          format: uuid
          description: Unique identifier of the onboarding session. Always the external UUID form, never an internal partner ID.
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        stage:
          type: string
          enum:
            - awaitingConfiguration
            - awaitingMenuPush
            - live
          description: |
            The onboarding stage at the time of the notification:
            - `awaitingConfiguration` - partner needs to submit POS configuration via `PUT /partners/onboarding/{sessionId}/configuration`
            - `awaitingMenuPush` - partner needs to push a menu to JET
            - `live` - location has been enabled and is accepting orders
          example: awaitingConfiguration
        timestamp:
          type: string
          format: date-time
          description: RFC3339 UTC timestamp of dispatch. Matches the `X-Webhook-Timestamp` header.
          example: '2026-05-22T12:00:00Z'
        referenceId:
          type: string
          format: uuid
          description: Per-attempt unique identifier. Quote this value when contacting JET support about a specific notification.
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        restaurantMetadata:
          $ref: '#/components/schemas/JetConnectPartnerConfigurationApiOnboardingWebhookRestaurantMetadata'
    JetConnectPartnerConfigurationApiOnboardingWebhookRestaurantMetadata:
      title: OnboardingWebhookRestaurantMetadata
      type: object
      description: |
        Restaurant address details, included when available. Omitted entirely
        when the information has not yet been recorded for this location.
      properties:
        name:
          type: string
          description: Restaurant name
          example: Burger Palace
        addressLines:
          type: array
          items:
            type: string
          description: Street address lines
          example:
            - 123 Main St
        city:
          type: string
          description: City or town of the restaurant location
          example: London
        postcode:
          type: string
          description: Postcode or ZIP code
          example: EC1A 1BB
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code
          example: GB
    JetConnectPartnerConfigurationApiOrderConfiguration:
      title: OrderConfiguration
      description: |
        The `contract` field selects which configuration applies.
        Only one contract may be active.
      oneOf:
        - $ref: '#/components/schemas/JetConnectPartnerConfigurationApiUniversalOrderContract'
      discriminator:
        propertyName: contract
        mapping:
          universal: '#/components/schemas/JetConnectPartnerConfigurationApiUniversalOrderContract'
    JetConnectPartnerConfigurationApiUniversalCatalogueConfig:
      title: UniversalCatalogueConfig
      type: object
      description: Required configuration for the universal catalogue contract
      required:
        - locationId
      properties:
        locationId:
          type: string
          description: |
            Partner POS system's unique identifier for the location, used to retrieve the correct menu.
          example: '12345'
          minLength: 1
    JetConnectPartnerConfigurationApiUniversalCatalogueContract:
      title: UniversalCatalogueContract
      type: object
      description: Universal catalogue contract
      required:
        - contract
        - config
      properties:
        contract:
          type: string
          enum:
            - universal
          description: Contract type for catalog setup
        config:
          $ref: '#/components/schemas/JetConnectPartnerConfigurationApiUniversalCatalogueConfig'
    JetConnectPartnerConfigurationApiUniversalOrderConfig:
      title: UniversalOrderConfig
      type: object
      description: Required configuration for the universal order contract
      required:
        - orderInjectionUrl
        - locationId
      properties:
        orderInjectionUrl:
          type: string
          format: uri
          description: |
            The base URL of the partner's POS system's API. All order-related requests will be sent to paths relative to this URL.
          example: https://api.example.com/orders
        locationId:
          type: string
          description: |
            The partner's POS system's unique identifier for this restaurant location. Used to route orders to the correct site.
          example: '12345'
          minLength: 1
    JetConnectPartnerConfigurationApiUniversalOrderContract:
      title: UniversalOrderContract
      type: object
      description: Universal order contract
      required:
        - contract
        - config
      properties:
        contract:
          type: string
          enum:
            - universal
          description: Contract type for order setup
        config:
          $ref: '#/components/schemas/JetConnectPartnerConfigurationApiUniversalOrderConfig'
    JetConnectPartnerEventNotifierPartnerEventNotification:
      type: object
      description: Metadata about the event and order to which it pertains.
      properties:
        type:
          type: string
          enum:
            - prepareOrder
            - customerReceivedOrder
            - driverArrivingAtRestaurant
            - driverAtRestaurant
            - onItsWay
          description: 'Which kind of event the notification relates to. Note: for markets AT, BE, BG, CH, DE, DK, LU, NL, PL and SK `driverArrivingAtRestaurant` is send when driver has been assigned to the order'
        order_id:
          type: string
          description: The identifier of the order.
        happened_at:
          type: string
          format: date-time
          description: Timestamp of the event in Coordinated Universal Time (UTC) and RFC 3339 (ISO 8601) format.
      required:
        - type
        - order_id
        - happened_at
    JetConnectRestaurantAvailabilityApiAcceptedResponse:
      description: Is returned when a request has been accepted and is processing
      type: object
      required:
        - success
      properties:
        success:
          description: Indicates request successfully accepted or not for processing. Always true in an accepted response.
          type: boolean
          example: true
      x-examples:
        success:
          value:
            success: true
    JetConnectRestaurantAvailabilityApiErrorResponse:
      description: Standard error response for this type of service.
      type: object
      required:
        - success
        - error_message
      properties:
        success:
          description: Indicates request successfully accepted or not for processing. Always false in an error response.
          type: boolean
          example: false
        error_message:
          description: A brief description of the error.
          type: string
          example: Request not valid
      x-examples:
        forbidden:
          value:
            success: false
            error_message: Restaurant not registered
    JetConnectRestaurantAvailabilityApiOpeningTimes:
      description: |-
        Describes the opening times of a restaurant for every day of the week.

        NOTE: At least one day needs to be specified. If a day is omitted, the restaurant is considered closed for that day of the week.
      type: object
      properties:
        monday:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiOpeningTimesDay'
        tuesday:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiOpeningTimesDay'
        wednesday:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiOpeningTimesDay'
        thursday:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiOpeningTimesDay'
        friday:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiOpeningTimesDay'
        saturday:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiOpeningTimesDay'
        sunday:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiOpeningTimesDay'
    JetConnectRestaurantAvailabilityApiOpeningTimesDay:
      description: Describes the start and end time of opening hours.
      type: object
      required:
        - openingTime
        - closingTime
      properties:
        openingTime:
          description: Opening time for the specified day, in the `hh:mm` format
          type: string
          pattern: ^\d{2}:\d{2}$
          example: '10:00'
        closingTime:
          description: Closing time for the specified day, in the `hh:mm` format
          type: string
          pattern: ^\d{2}:\d{2}$
          example: '18:00'
    JetConnectRestaurantAvailabilityApiRestaurantOffline:
      description: |-
        Instructs when the restaurant should be automatically put back online. If a value is not provided (or it is omitted entirely), the restaurant will remain offline indefinitely.

        Note: For AT, BE, BG, CH, DE, LU, NL, PL and SK, the restaurant is always brought back online at 07:00 (Amsterdam time) the day after it goes offline, even when no online time is provided.
      type: object
      properties:
        onlineAt:
          description: |-
            Local ISO8601 formatted timestamp (without timezone) representing the local time of the restaurant indicating when the restaurant should be brought back online. If omitted, offline will be indefinite.

            Note: For AT, BE, BG, CH, DE, LU, NL, PL and SK, the restaurant cannot stay offline past 07:00 (Amsterdam time) the day after it goes offline. An `onlineAt` earlier than this cap is applied as provided, while a later value is capped to it.
          type: string
          example: '2021-10-13T12:03:00'
    JetConnectRestaurantAvailabilityApiServiceTime:
      description: Describes the opening times for the stated service type.
      type: object
      required:
        - serviceType
        - openingTimes
      properties:
        serviceType:
          description: Either Delivery or Collection
          type: string
          pattern: ^(Delivery|Collection)$
          example: Delivery
        openingTimes:
          $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiOpeningTimes'
    JetConnectRestaurantAvailabilityApiServiceTimes:
      description: Defines the times a restaurant provides a particular service.
      type: object
      required:
        - timezone
        - serviceTimes
      properties:
        timezone:
          description: The restaurant timezone
          type: string
          example: Europe/London
        serviceTimes:
          type: array
          items:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiServiceTime'
    JetpayJetplusCreditReportCreditSummaryResponse:
      type: object
      description: The credit summary contract.
      properties:
        globalUserId:
          type: string
          description: The global user identifier for whom the credit summary is retrieved.
        currentBalanceInCents:
          type: integer
          description: The current available credit balance, in cents.
        nextRefreshUtc:
          type: string
          format: date-time
          nullable: true
          description: The timestamp of the next scheduled refresh. This field is null if no refresh cycle is configured.
        earliestExpirationAtUtc:
          type: string
          format: date-time
          description: The timestamp of the earliest expiry date for the active credits.
        cycleUsageInCents:
          type: integer
          description: The amount of credit used in the current cycle, in cents.
        cycleCreditIssuedInCents:
          type: integer
          description: The amount of credit issued for the current cycle, in cents.
        currency:
          type: string
          description: The currency denomination for all monetary values.
          example: EUR
        tenant:
          type: string
          description: The user's tenant identifier.
        transactions:
          type: array
          description: A list of all user's transactions and credit top-ups for the current cycle (period since last top-up).
          items:
            $ref: '#/components/schemas/JetpayJetplusCreditReportTransaction'
      required:
        - globalUserId
        - currentBalanceInCents
        - currency
        - tenant
    JetpayJetplusCreditReportErrorResponse:
      type: object
      description: A standard error response object.
      properties:
        status:
          type: integer
          description: The HTTP status code.
        detail:
          type: string
          description: A detailed description of the error.
    JetpayJetplusCreditReportTransaction:
      type: object
      description: A credit transaction or top-up.
      properties:
        createdAtUtc:
          type: string
          format: date-time
          description: The transaction or top-up creation date.
        amountInCents:
          type: integer
          description: The transaction or top-up amount, in cents.
        currency:
          type: string
          description: The transaction or top-up currency.
        type:
          type: string
          description: The transaction type.
          enum:
            - debit
            - refund
            - topup
            - reduce
        expirationAtUtc:
          type: string
          format: date-time
          nullable: true
          description: The expiration date for top-up transactions. This field is null for other transaction types.
        description:
          type: string
          description: The description for top-up transactions. This field is null for other transaction types.
      required:
        - createdAtUtc
        - amountInCents
        - currency
        - type
    JetpayJetplusCreditReportHistoryCreditHistoryResponse:
      type: object
      description: Response containing paginated transaction history with cursor-based pagination metadata.
      properties:
        transactions:
          type: array
          description: Array of transactions and top-ups sorted by createdAtUtc according to the specified sort order.
          items:
            $ref: '#/components/schemas/JetpayJetplusCreditReportHistoryTransaction'
        pagination:
          type: object
          description: Pagination metadata for cursor-based navigation.
          properties:
            cursors:
              type: object
              description: Cursor markers for pagination navigation.
              properties:
                nextCursor:
                  type: string
                  nullable: true
                  description: |
                    Opaque Base64-encoded cursor to retrieve the next page of transactions. 
                    Null if no more pages available. Use as-is in the 'cursor' query parameter.
                previousCursor:
                  type: string
                  nullable: true
                  description: |
                    Opaque Base64-encoded cursor to retrieve the previous page of transactions. 
                    Null if no previous pages available. Use as-is in the 'cursor' query parameter.
              required:
                - nextCursor
                - previousCursor
          required:
            - cursors
      required:
        - transactions
        - pagination
    JetpayJetplusCreditReportHistoryTransaction:
      type: object
      description: A credit transaction or top-up in the transaction history.
      properties:
        createdAtUtc:
          type: string
          format: date-time
          description: The transaction or top-up creation date.
        amountInCents:
          type: integer
          description: The transaction or top-up amount, in cents.
        currency:
          type: string
          description: The transaction or top-up currency.
        type:
          type: string
          description: The transaction type.
          enum:
            - debit
            - refund
            - topup
            - reduce
        expirationAtUtc:
          type: string
          format: date-time
          nullable: true
          description: The expiration date for top-up transactions. This field is null for other transaction types.
        description:
          type: string
          description: The description for top-up transactions. This field is null for other transaction types.
      required:
        - createdAtUtc
        - amountInCents
        - currency
        - type
    JwtmigrationserviceJwtTokens:
      required:
        - jwtToken
      type: object
      properties:
        jwtToken:
          description: JWT token. It expires after 60 minutes in production or after 10 minutes in staging environment.
          type: string
          example: eyJraWQiOiJqd3RtaWdyYXRpb24iLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwOi8vc2Nvb2Jlci5qd3RtaWdyYXRpb24iLCJ1c2VybmFtZSI6IjEzMzc1NjU1IiwiZXhwIjoxNjE0MTU2NjY3LCJpYXQiOjE2MTQxNTYwNjcsImp0aSI6ImU2NDQzZTZjLTU1ZjgtNDJjZi04ZWFmLTY4YWFhNThmOTZiZCJ9.CPnOBK76W1odU4RjBG3rNwNWQwYCicFHKNh0SZ1kK6n--YWQ06Lz652dNQJfN0BggHeH2FcQ_JHcDD8UeU-wTvqVWGfgm5VuV5zFRLvHnRLfex3uxLpcya479I5UN9jrJCbMOjHLaGZlGRzaZQPS3VtEI0H9GNqtlfY0Zfm6dgsAW-g34K_OuBI4UX_qoe1BvJJm_mhsesIrfQCNSuBX1FOjmSe7S_OwDVJ9u-B4hzN6Q6BVZMbnzpiZKSRDU2TYiS9-ticOdOi7q7jyq-aoohVMEsyTiUbWYXxJfJYa89LHORoi3bTRwDGgphY_mAT3DByKacavHSvU1oaIP9fVZw
        refreshToken:
          description: Refresh token. It expires after 10 hours in production or after 60 minutes in staging environment.
          type: string
          example: eyJraWQiOiJqd3RtaWdyYXRpb25yZWZyZXNoIiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwOi8vc2Nvb2Jlci5qd3RtaWdyYXRpb24iLCJ1c2VybmFtZSI6IjEzMzc1NjU1IiwiZXhwIjoxNjE0MTU5NjY3LCJpYXQiOjE2MTQxNTYwNjcsImp0aSI6IjEzN2FkODY0LWM5ZjMtNGY0Ni1iNmFiLWRiZjc3OTQ4MjAwNiJ9.RQpQmWgexyFhEJePRW8o3-PxKfC5kXhAUTCSW-416RmbfIIypN8cWlkdESv3ozj02Bq0aq6eqFW3Tj4W7ma_XExX4RIh0CL9leZKxBdsgVHinR0ch384b9zDaAoRDER1FZSllCzrW916LbWR2PAEJa_aLSmkFRaRrLdH_a1mZFrSs0s_iKF4a67te1GiIIHNZXa_3_TlFdJNZF7cFyKVpi68DzpNz-wYkTqWD3T1uws9pHPysqhY-lyaDKIzMDaqiTDLADPmK-gtTLolIUqc-xoi53xo6Dkv3m0ZolWJnAMxRym7oiM10cEjZTe0EM1yjdXmi77AOrnO4Uz2B0w7Xg
          nullable: true
        courierIdHash:
          description: SHA-256 hash of courier id
          type: string
          nullable: true
    JwtmigrationserviceUserDetails:
      required:
        - courierId
      type: object
      properties:
        courierId:
          description: ID of courier
          type: string
    JwtmigrationserviceValidationCredentials:
      required:
        - token
      type: object
      properties:
        token:
          description: Scoober token
          type: string
          example: ff2c58b4590b40afa96b38268e38ed785c7cy72a20594299b03b6e09d684523c
    KnowledgeCentreArticleOutlineType:
      type: object
      description: The type that represents a minimal set of article fields which is required to display in search and filter pages
      properties:
        id:
          description: The article id
          type: string
        topicIds:
          description: The article's topic identifiers
          type: array
          items:
            type: string
        mainImage:
          description: The URL of main article image
          type: string
        mainImageMobile:
          description: The URL of main article image for mobile version
          type: string
        readTime:
          description: The article's approximate reading time
          type: string
        title:
          description: The article title
          type: string
        outline:
          description: The article outline
          type: string
    KnowledgeCentreArticleResponse:
      type: object
      description: The full article document
      properties:
        mainImage:
          description: The URL of main article image
          type: string
        mainImageMobile:
          description: The URL of main article image for mobile version
          type: string
        id:
          description: The article id
          type: string
        lang:
          description: The article language code
          type: string
        title:
          description: The article title
          type: string
        topicIds:
          description: The article's topic identifiers
          type: array
          items:
            type: string
        outline:
          description: The article outline
          type: string
        readTime:
          description: The article's approximate reading time
          type: string
        body:
          description: The article's main content
          type: string
        faq:
          description: The article's FAQ section
          type: array
          items:
            type: object
            properties:
              title:
                description: The FAQ section title
                type: string
              body:
                description: The FAQ section body
                type: string
      example:
        id: 6B397F3B-6DD4-496C-970C-5AD8A7F671D3
        updatedAt: '2024-10-19T12:21:55Z'
        lang: uk-en
        title: The ban of single-use plastic is coming
        outline: Check out our eco-friendly packaging range
        body: Lorem ipsum
        mainImage: https://imgur.com/img.png
        mainImageMobile: https://imgur.com/img.png
        readTime: 2 min
        topicIds:
          - a917da7e-9d9c-49dd-bb8d-00cd6257b6c4
        faq:
          - title: Frequently Asked Questions Header 1
            body: Frequently Asked Questions Content 1
    KnowledgeCentreArticleSearchResponse:
      type: object
      description: The collection of articles which were found via a search request
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              mainImage:
                description: The URL of main article image
                type: string
              mainImageMobile:
                description: The URL of main article image for mobile version
                type: string
              id:
                description: The article id
                type: string
              lang:
                description: The article language code
                type: string
              title:
                description: The article title
                type: string
              topicIds:
                description: The article's topic identifiers
                type: array
                items:
                  type: string
              outline:
                description: The article outline
                type: string
              readTime:
                description: The article's approximate reading time
                type: string
        total:
          description: The total number of articles
          type: integer
      example:
        data:
          - id: 98a7c2e6-c421-4cd3-b299-3f521e9ed2ae
            lang: uk-en
            title: The ban of single-use plastic is coming
            outline: Check out our eco-friendly packaging range
            readTime: 2 min
            mainImage: https://imgur.com/img.png
            mainImageMobile: https://imgur.com/img.png
            topicIds:
              - afdcf629-871f-4de2-bef8-1a5efa08b291
            highlights:
              - key: title
                value: The ban of s<em>ing</em>le-use plastic is coming
          - id: bf48ff93-ac7e-42f3-9e8e-df0f55b3795f
            lang: uk-en
            title: Ingredients of a good article
            outline: Check out our eco-friendly packaging range
            readTime: 4 min
            mainImage: https://imgur.com/img.png
            mainImageMobile: https://imgur.com/img.png
            topicIds:
              - afdcf629-871f-4de2-bef8-1a5efa08b291
            highlights:
              - key: title
                value: <em>Ing</em>redients of a good article
        total: 2
    KnowledgeCentreCategoryResponse:
      type: object
      description: The category document and its related content
      properties:
        mainImage:
          description: The URL of main article image
          type: string
        mainImageMobile:
          description: The URL of main article image for mobile version
          type: string
        id:
          description: The category id
          type: string
        lang:
          description: The category language code
          type: string
        title:
          description: The category title
          type: string
        topics:
          description: The topics that are referenced by this category
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: The topic id
              title:
                type: string
                description: The topic title
              count:
                type: integer
                description: The total number of articles in the topic
        subtitle:
          description: The category subtitle
          type: string
        mostReadArticles:
          description: The most read articles in the category
          type: array
          items:
            type: object
            properties:
              id:
                description: The article id
                type: string
              lang:
                description: The article language code
                type: string
              title:
                description: The article title
                type: string
              outline:
                description: The article outline
                type: string
              mainImage:
                description: The URL of main article image
                type: string
              mainImageMobile:
                description: The URL of main article image for mobile version
                type: string
              readTime:
                description: The article's approximate reading time
                type: string
              topicIds:
                description: The article's topic identifiers
                type: array
                items:
                  type: string
      example:
        id: a917da7e-9d9c-49dd-bb8d-00cd6257b6c4
        updatedAt: '2024-10-19T12:21:55Z'
        lang: uk-en
        title: Your business
        subtitle: How to grow your business
        topics:
          - id: 15575694-6e27-44a0-b0d2-ff8b55cec539
            title: Marketing
            count: 5
          - id: 2fd4affc-9707-482b-b090-150ddba8156f
            title: Growth
            count: 2
        mostReadArticles:
          - id: e3d8685f-e0fb-4d3d-b8b1-6f08745cd11a
            lang: en
            title: The ban of single-use plastic is coming
            outline: en
            mainImage: https://imgur.com/img.png
            mainImageMobile: https://imgur.com/img.png
            readTime: 3 min
            topicIds:
              - 15575694-6e27-44a0-b0d2-ff8b55cec539
    KnowledgeCentreCategoryType:
      type: object
      description: The type that represents a navigation category
      properties:
        id:
          description: The category id
          type: string
        title:
          description: The category title
          type: string
        icon:
          description: The URL to an image that is displayed next to category
          type: string
        topicIds:
          description: The list of category topic identifiers
          type: array
          items:
            type: string
    KnowledgeCentreEventRequest:
      type: object
      description: The base set of properties that are present in a webhook request
      additionalProperties: true
      properties:
        _id:
          description: The unique identifier of a document.
          type: string
        _type:
          description: The document type.
          type: string
        _createdAt:
          description: The document creation date.
          type: string
        _updatedAt:
          description: The document modification date.
          type: string
    KnowledgeCentreFaqType:
      type: array
      description: The type that represents a collection of FAQ content elements
      items:
        type: object
        properties:
          title:
            description: The FAQ section title
            type: string
          body:
            description: The FAQ section body
            type: string
          link:
            description: The link that should be opened when FAQ section is clicked
            type: string
    KnowledgeCentreFooterType:
      type: object
      description: The type that represents a page footer
      properties:
        mainImage:
          description: The URL of footer image
          type: string
        policyPages:
          description: The list of policy pages
          type: array
          items:
            type: object
            properties:
              title:
                description: The policy page title
                type: string
              policy:
                description: The id of a policy page
                type: string
        copyright:
          description: The copyright text
          type: string
    KnowledgeCentreHomeResponse:
      type: object
      description: The home page and its related content
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              mainImage:
                description: The URL of a main image on a home page
                type: string
              mainImageMobile:
                description: The URL of a main image on a home page for mobile version
                type: string
              searchTerms:
                description: The list of common search terms
                type: array
                items:
                  type: string
              categories:
                description: The list of all categories
                type: array
                items:
                  $ref: '#/components/schemas/KnowledgeCentreCategoryType'
              topics:
                description: The list of all topics
                type: array
                items:
                  $ref: '#/components/schemas/KnowledgeCentreTopicType'
              popularArticles:
                description: The list of popular articles
                type: array
                items:
                  $ref: '#/components/schemas/KnowledgeCentreArticleOutlineType'
              featuredArticle:
                description: The main featured article
                $ref: '#/components/schemas/KnowledgeCentreArticleOutlineType'
              faq:
                description: The FAQ section
                $ref: '#/components/schemas/KnowledgeCentreFaqType'
              footer:
                description: The footer section
                $ref: '#/components/schemas/KnowledgeCentreFooterType'
        total:
          type: integer
          description: The total number of elements in the response
      example:
        data:
          - lang: uk-en
            searchTerms:
              - sample
              - term
            outline: Check out our eco-friendly packaging range
            mainImage: https://imgur.com/img.png
            mainImageMobile: https://imgur.com/img.png
            categories:
              - id: ee17da7e-9d9c-49dd-bb8d-00cd6257b6aa
                title: Sample category
                icon: https://imgur.com/img.png
                topicIds:
                  - a917da7e-9d9c-49dd-bb8d-00cd6257b6c4
            topics:
              - id: a917da7e-9d9c-49dd-bb8d-00cd6257b6c4
                title: Sample topic
                icon: https://imgur.com/img.png
                count: 1
            popularArticles: []
            featuredArticle:
              updatedAt: '2024-10-19T12:21:55Z'
              lang: uk-en
              title: The ban of single-use plastic is coming
              outline: Check out our eco-friendly packaging range
              mainImage: https://imgur.com/img.png
              mainImageMobile: https://imgur.com/img.png
              readTime: 2 min
              topicIds:
                - a917da7e-9d9c-49dd-bb8d-00cd6257b6c4
            faq:
              - title: Frequently Asked Questions Header 1
                body: Frequently Asked Questions Content 1
            footer:
              mainImage: https://imgur.com/img.png
              copyright: Sample text 2024
              policyPages:
                - title: Cookie policy
                  policy: be12ca7e-9d9c-49dd-bb8d-00cd6257b6ff
        total: 1
    KnowledgeCentreMediaActionType:
      type: object
      description: The type that represents a media content action
      properties:
        title:
          description: The title of an action
          type: string
        text:
          description: The text of an action
          type: string
    KnowledgeCentreMediaAssetType:
      type: object
      description: The type that represents a media asset
      properties:
        title:
          description: The title of an asset
          type: string
        type:
          description: The type of an asset
          type: string
        url:
          description: The link to an asset
          type: string
    KnowledgeCentreMediaResponse:
      type: object
      description: The media content and related asset links
      properties:
        mainImage:
          description: The URL of main header image
          type: string
        mainImageMobile:
          description: The URL of main header image for mobile version
          type: string
        id:
          description: The media content id
          type: string
        title:
          description: The media content title
          type: string
        header:
          description: The media content header text
          type: string
        body:
          description: The rich text body of the media content
          type: string
        dos:
          description: The list of affirmative actions
          type: object
          properties:
            title:
              description: The title of affirmative action
              type: string
            items:
              description: The list of action elements
              type: array
              items:
                $ref: '#/components/schemas/KnowledgeCentreMediaActionType'
        donts:
          description: The list of negative actions
          type: object
          properties:
            title:
              description: The title of negative action
              type: string
            items:
              description: The list of action elements
              type: array
              items:
                $ref: '#/components/schemas/KnowledgeCentreMediaActionType'
        categories:
          description: The categories of downloadable assets
          type: array
          items:
            $ref: '#/components/schemas/KnowledgeCentreMediaAssetType'
      example:
        id: 5a0c70d5-7fa1-47ab-93b1-71890bb6590b
        title: Social media assets
        header: Here are some things to download
        body: Lorem ipsum
        mainImage: https://imgur.com/img.png
        mainImageMobile: https://imgur.com/img.png
        topicIds:
          - a917da7e-9d9c-49dd-bb8d-00cd6257b6c4
        dos:
          title: What to do
          items:
            - title: Share posts in peak times
              text: Post at busy times when most people are online
        donts:
          title: What to avoid
          items:
            - title: Use too many hashtags
              text: Select a few to avoid your post looking like spam
        categories:
          - title: Stickers
            assets:
              - title: Sample image 1
                type: image
                url: https://imgur.com/img.png
              - title: Sample image 2
                type: image
                url: https://imgur.com/img.png
    KnowledgeCentrePolicyResponse:
      type: object
      description: The policy document
      properties:
        id:
          description: The policy id
          type: string
        lang:
          description: The policy language code
          type: string
        updatedAt:
          description: The date when the content was last updated
          type: string
        title:
          description: The policy title
          type: string
        body:
          description: The policy main content
          type: string
      example:
        id: 10af5d92-8318-4798-a8e2-55899293bc9d
        updatedAt: '2024-10-19T12:21:55Z'
        lang: uk-en
        title: Cookie policy
        body: Lorem ipsum
    KnowledgeCentreSlugResponse:
      type: object
      description: The mapping between slug name and its unique identifier
      properties:
        id:
          description: The slug id
          type: string
        lang:
          description: The slug language code
          type: string
        name:
          description: The slug name
          type: string
      example:
        id: 10af5d92-8318-4798-a8e2-55899293bc9d
        lang: uk-en
        name: sample-article
    KnowledgeCentreTopicSearchResponse:
      type: object
      description: The collection of articles that were found via filtering request
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              mainImage:
                description: The URL of main article image
                type: string
              mainImageMobile:
                description: The URL of main article image for mobile version
                type: string
              id:
                description: The article id
                type: string
              lang:
                description: The article language code
                type: string
              title:
                description: The article title
                type: string
              topicIds:
                description: The article's topic identifiers
                type: array
                items:
                  type: string
              outline:
                description: The article outline
                type: string
              readTime:
                description: The article's approximate reading time
                type: string
        total:
          description: The total number of articles
          type: integer
      example:
        data:
          - id: 17a56111-8386-463f-a0ea-32cc9722879b
            lang: uk-en
            title: The ban of single-use plastic is coming
            outline: Check out our eco-friendly packaging range
            mainImage: https://imgur.com/img.png
            mainImageMobile: https://imgur.com/img.png
            readTime: 2 min
            topicIds:
              - afdcf629-871f-4de2-bef8-1a5efa08b291
          - id: b14ee1b2-1249-480f-80d4-389d5681ae83
            lang: uk-en
            title: The ban of single-use plastic is coming
            outline: Check out our eco-friendly packaging range
            mainImage: https://imgur.com/img.png
            mainImageMobile: https://imgur.com/img.png
            readTime: 4 min
            topicIds:
              - 0930618b-1165-4695-85ec-b427320755f9
        total: 2
    KnowledgeCentreTopicType:
      type: object
      description: The type that represents a topic
      properties:
        id:
          description: The topic id
          type: string
        title:
          description: The topic title
          type: string
        icon:
          description: The icon that is displayed on a topic
          type: string
        count:
          description: The total number of articles in the topic
          type: integer
    Livemetrics400LiveMetricsErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Invalid Request
          type: string
        error:
          description: Error Title
          example: Invalid Request
          type: string
      type: object
    Livemetrics401LiveMetricsErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Unauthorized Request
          type: string
        error:
          description: Error Title
          example: Unauthorized Request
          type: string
      type: object
    Livemetrics404LiveMetricsErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Live Metrics not found for delivery zone
          type: string
        error:
          description: Error Title
          example: Live Metrics not found for delivery zone
          type: string
      type: object
    Livemetrics500LiveMetricsErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Internal Server Error
          type: string
        error:
          description: Error Title
          example: Internal Server Error
          type: string
      type: object
    LivemetricsLiveMetrics:
      description: The live metrics object for a given delivery zone.
      properties:
        marketplaceRank:
          format: integer
          description: Current marketplace rank value retrieved for a given delivery zone.
          example: -2
          type: number
        throttlingStatus:
          description: Zone Throttling On/Off status
          type: boolean
        zoneThrottling:
          format: integer
          description: Current zone throttling value retrieved for a given delivery zone.
          example: 15
          type: number
        currentAajl:
          format: double
          description: Average assignable job load retrieved for a given delivery zone.
          example: 0.7
          type: number
        marketplaceRankStatus:
          description: Marketplace On/Off status
          type: boolean
        aajlTimestamp:
          format: integer
          description: Timestamp for the average assignable job load retrieved for a given delivery zone.
          example: 1585260360000
          type: number
      type: object
    LiveopschatmanagerApplicationDto:
      type: object
      properties:
        name:
          description: Name of the application, including environment or context
          type: string
          example: XX - Staging 1
        id:
          description: Unique identifier of the application
          type: string
          example: 1AAA1111-2222-3333-4444-1AA0A3A223A7
    LiveopschatmanagerDashboardUrl:
      type: object
      properties:
        url:
          description: URL for the `Sendbird` Desk dashboard for a specific customer
          type: string
          example: https://dashboard.sendbird.com/1AAA1111-2222-3333-4444-1AA0A3A223A7/desk/customers/1
    LiveopschatmanagerGenerateDashboardUrlRequest:
      required:
        - region
        - courierId
      type: object
      properties:
        region:
          description: Region identifier, e.g., country and city
          minLength: 1
          type: string
          example: nl:testcity
        courierId:
          description: Unique identifier of the courier
          minLength: 1
          type: string
          example: '1234567'
    LiveopschatmanagerGenerateTokenForAgentRequest:
      required:
        - applicationId
      type: object
      properties:
        applicationId:
          description: Unique identifier of the application
          minLength: 1
          type: string
          example: 1AAA1111-2222-3333-4444-1AA0A3A223A7
    LiveopschatmanagerGenerateTokenResponse:
      type: object
      properties:
        applicationId:
          description: Unique identifier of the application
          type: string
          example: 1AAA1111-2222-3333-4444-1AA0A3A223A7
        userId:
          description: Unique identifier of the user
          type: string
          example: '1234567'
        sessionToken:
          description: Session token for the user
          type: string
        expiresAt:
          format: date-time
          description: Expiration time of the session token
          type: string
          example: '2022-03-10T16:15:50Z'
        errorMessage:
          description: contains a message, if an error occurred
          type: string
          nullable: true
    LocalDateTime:
      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]+)?$
      description: A local date time object, conforming to `ISO-8601`, but with only a partial time representation and no time offset.
      type: string
    LogisticsLocation:
      required:
        - Latitude
        - Longitude
      type: object
      description: GeoLocation object containing latitude and longitude values.
      example:
        Speed: 8.68
        Latitude: 51.51641
        Heading: 357.10382
        Accuracy: 12.814
        Longitude: -0.103198
      properties:
        Speed:
          description: This should represent the travel speed of the driver.
          format: double
          type: number
        Latitude:
          description: This should represent the latitude of the 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
        Accuracy:
          description: This should represent the accuracy of driver's location.
          format: double
          type: number
        Longitude:
          description: This should represent the longitude of the driver's location.
          format: double
          type: number
    LogisticsWebhooksSendbirdChannel:
      description: Sendbird channel information
      type: object
      properties:
        channel_url:
          type: string
          description: The unique URL identifier of the channel
          example: sendbird_group_channel_12345_abcdef
        name:
          type: string
          description: The name of the channel
          example: Customer Support Chat
        custom_type:
          type: string
          description: Custom type assigned to the channel
        data:
          type: string
          description: Additional data associated with the channel
        is_distinct:
          type: boolean
          description: Whether the channel is distinct (for group channels)
        is_public:
          type: boolean
          description: Whether the channel is public (for open channels)
        is_ephemeral:
          type: boolean
          description: Whether messages in this channel are ephemeral
        member_count:
          type: integer
          description: Number of members in the channel
          example: 2
        joined_member_count:
          type: integer
          description: Number of members who have joined the channel
        unread_message_count:
          type: integer
          description: Number of unread messages (deprecated - use channel_unread_message_count)
          deprecated: true
        channel_unread_message_count:
          type: integer
          description: Number of unread messages in this specific channel
          example: 5
        total_unread_message_count:
          type: integer
          description: Total number of unread messages across all channels for the user
          example: 12
        created_at:
          type: integer
          format: int64
          description: Unix timestamp (in milliseconds) when the channel was created
          example: 1643723400000
    LogisticsWebhooksSendbirdMessagePayload:
      description: Sendbird message payload
      type: object
      properties:
        message_id:
          type: integer
          format: int64
          description: The unique identifier of the message
          example: 1234567890
        message:
          type: string
          description: The text content of the message
          example: Hello, how can I help you?
        message_type:
          type: string
          description: Type of the message
          enum:
            - MESG
            - FILE
            - ADMM
          example: MESG
        custom_type:
          type: string
          description: Custom type assigned to the message
        data:
          type: string
          description: Additional data associated with the message (JSON string)
        created_at:
          type: integer
          format: int64
          description: Unix timestamp (in milliseconds) when the message was created
          example: 1643723400000
        updated_at:
          type: integer
          format: int64
          description: Unix timestamp (in milliseconds) when the message was last updated
          example: 1643723400000
        file:
          type: object
          description: File information (for FILE type messages)
          properties:
            url:
              type: string
              format: uri
              description: URL to the uploaded file
            name:
              type: string
              description: Name of the file
            type:
              type: string
              description: MIME type of the file
            size:
              type: integer
              description: Size of the file in bytes
        mentioned_users:
          type: array
          description: List of users mentioned in the message
          items:
            $ref: '#/components/schemas/LogisticsWebhooksSendbirdUser'
        reactions:
          type: array
          description: Reactions to the message
          items:
            type: object
            properties:
              key:
                type: string
                description: The reaction emoji or identifier
              user_ids:
                type: array
                items:
                  type: string
                description: User IDs who reacted with this reaction
        parent_message_id:
          type: integer
          format: int64
          description: ID of the parent message (for threaded replies)
        thread_info:
          type: object
          description: Thread information for the message
          properties:
            reply_count:
              type: integer
              description: Number of replies in the thread
            most_replies:
              type: array
              description: Most recent replies
              items:
                type: object
    LogisticsWebhooksSendbirdUser:
      description: Sendbird user information
      type: object
      properties:
        user_id:
          type: string
          description: The unique identifier of the user
          example: user_123456
        nickname:
          type: string
          description: The user's nickname/display name
          example: John Doe
        profile_url:
          type: string
          format: uri
          description: URL to the user's profile image
          example: https://sendbird.com/main/img/profiles/profile_05_512px.png
        metadata:
          type: object
          description: Additional custom metadata associated with the user
          additionalProperties: true
        is_active:
          type: boolean
          description: Whether the user is currently active
        is_online:
          type: boolean
          description: Whether the user is currently online
        last_seen_at:
          type: integer
          format: int64
          description: Unix timestamp (in milliseconds) of when the user was last seen
          example: 1643723400000
    LogisticsWebhooksSendbirdWebhookPayload:
      description: Sendbird webhook payload containing event information
      type: object
      required:
        - category
      properties:
        category:
          type: string
          description: |
            The category and event type of the webhook. Determines which event occurred in Sendbird.
            Format: {channel_type}:{event_name}
          enum:
            - open_channel:create
            - open_channel:remove
            - open_channel:enter
            - open_channel:exit
            - open_channel:message_send
            - open_channel:message_update
            - open_channel:message_delete
            - group_channel:create
            - group_channel:changed
            - group_channel:remove
            - group_channel:invite
            - group_channel:decline_invite
            - group_channel:join
            - group_channel:leave
            - group_channel:message_send
            - group_channel:message_read
            - group_channel:message_update
            - group_channel:message_delete
            - group_channel:freeze_unfreeze
            - group_channel:reaction_add
            - group_channel:reaction_delete
            - user:block
            - user:unblock
            - operators:register_by_operator
            - operators:unregister_by_operator
            - message:report
            - user:report
            - open_channel:report
            - group_channel:report
            - alert:user_message_rate_limit_exceeded
            - profanity_filter:replace
            - profanity_filter:block
            - profanity_filter:moderate
            - image_moderation:block
            - announcement:create_channels
            - announcement:send_messages
          example: group_channel:message_send
        sender:
          $ref: '#/components/schemas/LogisticsWebhooksSendbirdUser'
          description: Information about the user who triggered the event
        members:
          type: array
          description: List of members in the channel (for channel events)
          items:
            $ref: '#/components/schemas/LogisticsWebhooksSendbirdUser'
        channel:
          $ref: '#/components/schemas/LogisticsWebhooksSendbirdChannel'
          description: Information about the channel where the event occurred
        payload:
          $ref: '#/components/schemas/LogisticsWebhooksSendbirdMessagePayload'
          description: Message content and metadata (for message events)
        custom_type:
          type: string
          description: Custom type assigned to the channel or message
        sdk:
          type: string
          description: SDK type that sent the request
          example: JavaScript
        app_id:
          type: string
          description: The Sendbird application ID
          example: 1AAA1111-2222-3333-4444-1AA0A3A223A7
    Logisticsofferservice4XxErrorSchema:
      description: An HTTP 4xx error response
      type: object
      properties:
        fault:
          description: Details of the fault.
          type: object
          required:
            - faultId
          properties:
            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
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            errors:
              description: The list of errors.
              type: array
              items:
                type: object
                required:
                  - errorCode
                properties:
                  errorCode:
                    description: A code that identifies the problem type
                    type: string
                  description:
                    description: Specific details about the error that may assist the client in resolving the issue
                    type: string
    Logisticsofferservice500ErrorSchema:
      description: An HTTP 500 error response
      type: object
      properties:
        fault:
          description: Details of the fault.
          type: object
          required:
            - faultId
          properties:
            faultId:
              description: A value that helps identify this response back to logs, so the specific fault can be easily found
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so what was happening on the server when the fault was generated can be easily found
              type: string
            errors:
              type: array
              items:
                type: object
                properties:
                  description:
                    description: If returned, the only acceptable value is "Internal Server Error"
                    type: string
    Logisticsofferservice5XxErrorSchema:
      description: An HTTP 5xx error response
      type: object
      properties:
        fault:
          description: An object representing the nature of the failure.
          type: object
          required:
            - faultId
          properties:
            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
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            errors:
              description: The list of errors.
              type: array
              items:
                type: object
                properties:
                  errorCode:
                    description: A code that identifies the problem type
                    type: string
                  description:
                    description: Specific details about the error that may assist you in resolving the issue
                    type: string
    LogisticsofferserviceOfferRejectionRequest:
      description: The offer rejection request object.
      type: object
      required:
        - reasonCode
      properties:
        reasonCode:
          description: The reason the offer was rejected. Intentionally extensible for future platform-initiated rejection reasons.
          type: string
          enum:
            - COURIER_REJECTED
    LogstashhttpLog:
      type: object
      description: Object containing information to log
      example:
        je_feature: my-feature
        je_environment: production
        je_tenant: all
        Message: This is a log message
      additionalProperties: true
    LowestproductpriceLowestProductPrice:
      description: Lowest Product Price information.
      type: object
      title: LowestProductPrice
      additionalProperties: false
      required:
        - productId
        - sinceDate
      properties:
        productId:
          nullable: false
          description: The unique identifier of product
          type: string
        sinceDate:
          nullable: false
          description: The starting date of product price analysis
          format: date
          type: string
        currency:
          nullable: true
          description: The currency code in ISO-4217 format e.g. GBP.
          type: string
        deliveryPrice:
          nullable: true
          description: Delivery Price
          $ref: '#/components/schemas/LowestproductpricePriceDate'
        collectionPrice:
          nullable: true
          description: Collection Price
          $ref: '#/components/schemas/LowestproductpricePriceDate'
    LowestproductpriceLowestProductPriceListResponse:
      description: List of lowest product prices
      additionalProperties: false
      type: object
      title: LowestProductPriceListEnvelope
      properties:
        data:
          nullable: false
          description: Array of lowest product prices
          type: array
          items:
            $ref: '#/components/schemas/LowestproductpriceLowestProductPrice'
      example:
        data:
          - productId: delivery-only-burger-id
            sinceDate: '2022-03-07'
            currency: GBP
            deliveryPrice:
              value: 1580
              date: '2022-03-20'
              savingPercentage: 0
              savingValue: 0
          - productId: collection-only-pizza-id
            sinceDate: '2022-03-07'
            currency: GBP
            collectionPrice:
              value: 1780
              date: '2022-03-22'
              savingPercentage: 10
              savingValue: 200
          - productId: collection-and-delivery-drink-id
            sinceDate: '2022-03-07'
            currency: GBP
            collectionPrice:
              value: 10
              date: '2022-03-27'
              savingPercentage: 20
              savingValue: 250
            deliveryPrice:
              value: 20
              date: '2022-03-21'
              savingPercentage: 20
              savingValue: 500
    LowestproductpricePriceDate:
      description: The price value at certain date
      additionalProperties: false
      type: object
      title: Price Date
      required:
        - value
        - date
        - savingPercentage
        - savingValue
      properties:
        value:
          description: Price money value in the smallest unit of local currency
          format: integer
          type: number
          minimum: 0
        date:
          nullable: false
          description: The date when price was set
          format: date
          type: string
        savingPercentage:
          description: Customer savings in percentage terms. The value is calculated as the difference between the current discounted price and the lowest price in the past. The equivalent in money is provided in `savingValue`. For zero and negative savings 0 will be returned.
          format: float
          type: number
          minimum: 0
          maximum: 100
        savingValue:
          description: Money value of savings between the current discounted price and lowest price in the past, in the smallest unit of local currency, e.g., $3.25 will be returned as 325. The equivalent in percentage is provided in `savingPercentage`. For zero and negative savings 0 will be returned.
          format: integer
          type: number
          minimum: 0
      example:
        value: 1580
        date: '2021-03-04'
        savingPercentage: 10
        savingValue: 500
    LoyaltycontentapiAccounts:
      description: Describes accounts section for Manage Membership
      type: object
      required:
        - title
        - icon
        - action
      properties:
        title:
          description: Title for the accounts section
          type: string
        icon:
          description: Icon for the accounts section
          $ref: '#/components/schemas/LoyaltycontentapiIconInfo'
        action:
          description: Action for the accounts section
          $ref: '#/components/schemas/LoyaltycontentapiAction'
      additionalProperties: false
      example:
        title: Manage my Just Eat+
        icon:
          id: jetplus-house
          name: TitleLogo
          url: https://www.just-eat.co.uk/just-eat-plus.svg
        action:
          type: click
          target: MANAGE_MEMBERSHIP
    LoyaltycontentapiAction:
      description: Action section for Accounts from Manage Membership
      type: object
      required:
        - type
        - target
      properties:
        type:
          description: Action type for Accounts
          type: string
        target:
          description: Action target for Accounts
          type: string
      additionalProperties: false
      example:
        type: click
        target: MANAGE_MEMBERSHIP
    LoyaltycontentapiBenefitContentItem:
      type: object
      description: A content item within a benefit card's body content.
      required:
        - text
      properties:
        text:
          type: string
          description: Text content for the item.
        accessibility:
          $ref: '#/components/schemas/LoyaltycontentapiComponentAccessibility'
    LoyaltycontentapiBenefitData:
      type: object
      description: Data for benefit card components.
      additionalProperties: false
      required:
        - bodyContent
      properties:
        bodyContent:
          type: array
          minItems: 1
          description: List of content items to display on the benefit card.
          items:
            $ref: '#/components/schemas/LoyaltycontentapiBenefitContentItem'
    LoyaltycontentapiBrand:
      description: The brand associated with a membership plan. Determines the visual identity of the consumer's membership. 'none' indicates an unbranded membership and 'jetPlusBasic' indicates a JET+ branded membership.
      type: string
      enum:
        - none
        - jetPlusBasic
      example: jetPlusBasic
    LoyaltycontentapiBrandingResponse:
      description: Branding information associated with a consumer's active membership.
      type: object
      required:
        - nav
        - hub
      properties:
        brand:
          description: The brand applied to the consumer's membership.
          $ref: '#/components/schemas/LoyaltycontentapiBrand'
        nav:
          description: The configuration of the navigation bar element to take user to the hub
          $ref: '#/components/schemas/LoyaltycontentapiNavBar'
        hub:
          description: The configuration of the hub title element
          $ref: '#/components/schemas/LoyaltycontentapiHubHeader'
        accounts:
          description: The configuration of the accounts element
          $ref: '#/components/schemas/LoyaltycontentapiAccounts'
          nullable: true
      additionalProperties: false
      example:
        brand: jetPlusBasic
        nav:
          title: Just Eat+
          icon:
            id: nav-house
            name: nav-house
            url: https://some.where/path.svg
        hub:
          title: My Just Eat+
          icon:
            id: jetplus-house-3d
            name: jetplus-house-3d
            url: https://some.where/path.svg
          manageLink:
            text: Manage Membership
            action:
              type: MANAGE_MEMBERSHIP
        accounts:
          title: Manage my Just Eat+
          icon:
            id: jetplus-house
            name: TitleLogo
            url: https://www.just-eat.co.uk/just-eat-plus.svg
          action:
            type: click
            target: MANAGE_MEMBERSHIP
    LoyaltycontentapiCallToAction:
      description: Branding information associated with a consumer's active membership.
      type: object
      required:
        - text
        - action
      properties:
        text:
          description: The string to display to describe the Call to Action
          type: string
        action:
          description: The action performed when the user interacts with the Call to Action
          type: object
          required:
            - type
          properties:
            type:
              description: The type of action
              type: string
            target:
              description: The target of action if applicable
              type: string
        accessibility:
          $ref: '#/components/schemas/LoyaltycontentapiComponentAccessibility'
      additionalProperties: false
      example:
        text: Manage Membership
        action:
          type: MANAGE_MEMBERSHIP
    LoyaltycontentapiCarouselData:
      required:
        - items
      type: object
      description: Data for carousel components.
      properties:
        items:
          type: array
          items:
            required:
              - backgroundImage
              - id
            type: object
            properties:
              id:
                type: string
                description: Unique identifier for the item.
              tag:
                type: object
                properties:
                  text:
                    type: string
                    nullable: true
                    description: Text for the tag.
                  image:
                    type: string
                    nullable: true
                    description: Image URL for the tag.
              backgroundImage:
                type: string
                format: uri
                description: Background image URL for the item.
              thumbnailImage:
                type: string
                format: uri
                nullable: true
                description: Thumbnail image URL for the item.
              cta:
                required:
                  - text
                description: Call to action for the item.
                type: object
                properties:
                  text:
                    type: string
                    description: Text for the call to action.
                  action:
                    description: Action to be performed when the call to action is triggered.
                    required:
                      - target
                      - type
                    type: object
                    properties:
                      type:
                        type: string
                        description: Type of action (e.g. 'URL').
                      target:
                        type: string
                        description: Target of the action (e.g. the URL to navigate to).
              accessibility:
                $ref: '#/components/schemas/LoyaltycontentapiComponentAccessibility'
    LoyaltycontentapiComponentAccessibility:
      type: object
      description: Accessibility information for a component or content item.
      required:
        - description
        - action
      properties:
        description:
          type: string
          description: Accessibility description for the item.
        action:
          type: string
          description: Accessibility action for the item.
    LoyaltycontentapiGetConsumerOrderStreakResponse:
      description: Response containing the order streak details for a consumer.
      type: object
      properties:
        templateUrl:
          type: string
          nullable: false
          description: The URL to the HTML template to render streak information.
        streakSummary:
          type: object
          nullable: false
          description: Summary of the consumer's current streak progress.
          properties:
            currentStreakCount:
              type: integer
              format: int32
              nullable: false
              description: The number of orders completed toward the streak target.
            targetStreakCount:
              type: integer
              format: int32
              nullable: false
              description: The total number of orders required to complete the streak.
            isStreakCompleted:
              type: boolean
              nullable: false
              description: Indicates whether the streak has been completed.
            streakEndDate:
              type: string
              format: date
              nullable: true
              description: The date on which the streak ends (yyyy-mm-dd).
            daysRemainingToStartStreak:
              type: integer
              format: int32
              nullable: true
              description: The number of days remaining before the streak window opens for starting.
            daysRemainingToCompleteStreak:
              type: integer
              format: int32
              nullable: true
              description: The number of days remaining to complete the streak.
            rewardAmount:
              type: integer
              format: int32
              nullable: true
              description: The reward value in minor units.
          required:
            - currentStreakCount
            - targetStreakCount
            - isStreakCompleted
        uiDisplayStrings:
          type: object
          nullable: false
          description: Localised display strings for rendering the streak UI.
          properties:
            intro:
              type: string
              nullable: false
              description: The introductory text displayed before the reward amount.
            rewardAmountFormatted:
              type: string
              nullable: true
              description: The formatted reward amount string (e.g. "£10").
            outro:
              type: string
              nullable: false
              description: The text displayed after the reward amount.
            progress:
              type: string
              nullable: true
              description: The text describing the current streak progress.
            expiry:
              type: string
              nullable: true
              description: The text describing the remaining time for the streak to start (if not in-progress) or to complete (if in-progress).
            terms:
              type: object
              nullable: true
              description: Terms and conditions information for the streak offer.
              allOf:
                - $ref: '#/components/schemas/LoyaltycontentapiTermsInfo'
          required:
            - intro
            - outro
        cta:
          nullable: true
          type: object
          description: The call-to-action details, present when the consumer has completed their streak.
          allOf:
            - $ref: '#/components/schemas/LoyaltycontentapiCallToAction'
        experimentMetadata:
          type: object
          nullable: false
          description: Metadata about the experiment variant this consumer is enrolled in.
          properties:
            variant:
              type: string
              nullable: false
              description: The experiment variant identifier.
          required:
            - variant
      example:
        templateUrl: /path/to/template.html
        streakSummary:
          currentStreakCount: 3
          targetStreakCount: 3
          isStreakCompleted: true
          streakEndDate: '2026-07-05'
          daysRemainingToStartStreak: 10
        uiDisplayStrings:
          intro: Here's
          rewardAmountFormatted: £10
          outro: off your order
          progress: 3 out of 3 orders completed
          expiry: Expires in 5 days
        cta:
          text: Click to copy your voucher
          action:
            type: copyCode
            target: MONEYOFF123
        experimentMetadata:
          variant: variant-b
    LoyaltycontentapiGetHubContentResponse:
      description: Dynamic content for JET Hub page.
      type: object
      properties:
        screenTitle:
          type: string
          description: The title to be displayed in the Hub.
        components:
          type: array
          description: List of components to be rendered on the Hub page.
          items:
            required:
              - componentId
              - componentType
              - data
              - position
            type: object
            properties:
              componentId:
                type: string
                description: Unique identifier for the component.
              componentType:
                type: string
                enum:
                  - contentCarouselLarge
                  - contentCarouselSmall
                  - cardBenefit
                  - progressBenefit
                description: Type of the component to be rendered.
              position:
                type: number
                format: double
                description: Position of the component on the Hub page.
              title:
                type: string
                nullable: true
                description: Title of the component.
              background:
                type: string
                nullable: true
                description: Background image URL for the component.
              icon:
                $ref: '#/components/schemas/LoyaltycontentapiIconInfo'
              data:
                description: 'Data specific to the component type. The shape is determined by the `componentType` field: contentCarouselLarge, contentCarouselSmall → CarouselData; cardBenefit → BenefitData; progressBenefit → ProgressBenefitData.'
                oneOf:
                  - $ref: '#/components/schemas/LoyaltycontentapiCarouselData'
                  - $ref: '#/components/schemas/LoyaltycontentapiBenefitData'
                  - $ref: '#/components/schemas/LoyaltycontentapiProgressBenefitData'
    LoyaltycontentapiGetLoyaltyStateResponse:
      description: The current loyalty state for an authenticated consumer, including branding information of a consumer's membership
      type: object
      required:
        - branding
      properties:
        branding:
          description: The branding details for the consumer's active membership.
          $ref: '#/components/schemas/LoyaltycontentapiBrandingResponse'
      additionalProperties: false
      example:
        branding:
          brand: jetPlusBasic
          nav:
            title: Just Eat+
            icon:
              id: nav-house
              name: nav-house
              url: https://some.where/path.svg
          hub:
            title: My Just Eat+
            icon:
              id: jetplus-house-3d
              name: jetplus-house-3d
              url: https://some.where/path.svg
            manageLink:
              text: Manage Membership
              action:
                type: MANAGE_MEMBERSHIP
    LoyaltycontentapiHubHeader:
      description: Describe how the header of the Loyalty Hub should rendered based on the users Loyalty Status (member, non-member, etc).
      type: object
      required:
        - title
      properties:
        title:
          description: The string to display in the Header of the Hub
          type: string
        icon:
          description: The icon to show in the Header of the Hub
          $ref: '#/components/schemas/LoyaltycontentapiIconInfo'
        manageLink:
          description: The link that allows users to manage memberships assuming that they have an active membership
          $ref: '#/components/schemas/LoyaltycontentapiCallToAction'
      additionalProperties: false
      example:
        title: Rewards
        icon:
          id: nav-rewards
          name: nav-rewards
          url: https://some.url.co.uk/image.svg
    LoyaltycontentapiIconInfo:
      type: object
      description: Icon associated with a component.
      required:
        - url
        - name
        - id
      properties:
        url:
          type: string
          format: uri
          description: URL of the icon image.
        name:
          type: string
          description: Display name of the icon.
        id:
          type: string
          description: Unique identifier for the icon.
    LoyaltycontentapiMembershipUpsellBanner:
      type: object
      description: Membership Upsell Banner
      additionalProperties: false
      properties:
        bannerTitle:
          type: string
          nullable: true
          description: Title for Membership Upsell Banner.
        bannerText:
          type: string
          nullable: true
          description: Text for Membership Upsell Banner.
        variant:
          type: string
          nullable: true
          description: Variant of text for Membership Upsell Banner
        membershipPlanId:
          type: string
          nullable: true
          description: Eligible Membership Plan Id
    LoyaltycontentapiNavBar:
      description: Describe how top level navigation elements that take the user to the Loyalty Hub should rendered to ensure consistency with the Hub Header.
      type: object
      required:
        - title
        - icon
      properties:
        title:
          description: The string to display on the navigation bar
          type: string
        icon:
          description: The icon to show on the navigation bar
          $ref: '#/components/schemas/LoyaltycontentapiIconInfo'
      additionalProperties: false
      example:
        title: Rewards
        icon:
          id: nav-rewards
          name: nav-rewards
          url: https://some.url.co.uk/image.svg
    LoyaltycontentapiProgressBenefitData:
      type: object
      description: Data for progress benefit components.
      additionalProperties: false
      required:
        - bodyContent
        - progress
      properties:
        bodyContent:
          type: array
          minItems: 1
          description: List of content items to display on the progress benefit card.
          items:
            $ref: '#/components/schemas/LoyaltycontentapiBenefitContentItem'
        progress:
          $ref: '#/components/schemas/LoyaltycontentapiProgressInfo'
    LoyaltycontentapiProgressInfo:
      type: object
      description: Progress information for a progress benefit component.
      additionalProperties: false
      required:
        - currentValue
        - maxValue
      properties:
        currentValue:
          type: number
          format: double
          description: The current progress value.
        maxValue:
          type: number
          format: double
          description: The maximum progress value.
    LoyaltycontentapiTermsInfo:
      description: Terms and conditions information including display text and a link.
      type: object
      properties:
        text:
          type: string
          nullable: false
          description: The display text for the terms, which may contain a placeholder for the link (e.g. "{link}").
        link:
          nullable: false
          description: The link to the full terms and conditions page.
          $ref: '#/components/schemas/LoyaltycontentapiTermsLinkInfo'
      required:
        - text
        - link
      example:
        text: '{link}'
        link:
          text: T&Cs apply
          url: https://just-eat.co.uk/
    LoyaltycontentapiTermsLinkInfo:
      description: A link to terms and conditions content.
      type: object
      properties:
        text:
          type: string
          nullable: false
          description: The display text for the link.
        url:
          type: string
          format: uri
          nullable: false
          description: The URL of the terms and conditions page.
      required:
        - text
        - url
      example:
        text: T&Cs apply
        url: https://just-eat.co.uk/
    MarketingAggregatedMenuEnvelope:
      description: The result of an aggregated menu job result
      additionalProperties: false
      type: object
      title: AggregatedMenuEnvelope
      properties:
        status:
          nullable: false
          description: The status of the current aggregated menu job
          $ref: '#/components/schemas/MarketingBatchStatus'
        processed:
          nullable: false
          description: Total number of processed restaurants
          type: number
        lastUpdated:
          nullable: false
          description: Timestamp of the last job update
          format: date-time
          type: string
        aggregatedMenuId:
          nullable: false
          description: The id of the aggregated menu result
          type: string
        data:
          nullable: true
          description: Array of aggregated menu items. Available if at least one restaurant has been processed
          type: array
          items:
            $ref: '#/components/schemas/MarketingAggregatedMenuProduct'
      example:
        status: running
        lastUpdated: '2022-02-12T12:34:56.0000000+00:00'
        processed: 5
        aggregatedMenuId: 28e385da591b4e7f959ee35690e75e7b_uk_FreeItemPromotion_20Oct2022_BFsGKRdV
        data:
          - name: Coca Cola
            count: 5
            categoryName: Drinks
            type: menuItem
            variations:
              - name: 330ml
                count: 4
              - name: 500ml
                count: 2
              - name: ''
                count: 1
          - name: Coca Cola
            count: 5
            categoryName: Drink
            type: menuItem
            variations:
              - name: 330ml
                count: 2
              - name: 500ml
                count: 2
          - name: Smoky BBQ Chicken
            count: 2
            type: menuItem
            categoryName: 40% off Your Favourites
            variations:
              - name: Small
                count: 4
              - name: Medium
                count: 2
              - name: Large
                count: 1
          - name: Smoky BBQ Chicken
            count: 5
            type: deal
            categoryName: 40% off Your Favourites
            variations: []
    MarketingAggregatedMenuProduct:
      description: Aggregated menu product model.
      additionalProperties: false
      type: object
      title: AggregatedMenuProduct
      properties:
        name:
          nullable: false
          description: Name of the product
          type: string
        type:
          nullable: true
          description: Type of the product
          type: string
          enum:
            - menuItem
            - deal
        count:
          nullable: false
          description: Count of same product in different menus
          type: number
        variations:
          nullable: false
          description: Possible variations for the product
          type: array
          items:
            $ref: '#/components/schemas/MarketingAggregatedMenuVariation'
        categoryName:
          nullable: false
          description: The category that contains this menu product
      example:
        name: Coca Cola
        count: 5
        type: menuItem
        variations:
          - name: 330ml
            count: 4
          - name: 500ml
            count: 2
          - name: ''
            count: 1
        categoryName: Drinks
    MarketingAggregatedMenuVariation:
      description: Aggregated menu item model.
      additionalProperties: false
      type: object
      title: AggregatedMenuVariation
      properties:
        name:
          nullable: false
          description: Name of the product variation
          type: string
        count:
          nullable: false
          description: Count of same product variation in different menus
          type: number
      example:
        name: 330ml
        count: 4
    MarketingBatchStatus:
      description: Batch Status
      enum:
        - scheduled
        - running
        - succeeded
        - partial
        - failed
      type: string
    MarketingBogof:
      description: Bogof offer template. An offer where the qualifying item is exactly the same as the free item. The customer will place two of these items in their basket and only pay for one.
      additionalProperties: false
      type: object
      title: Bogof
      properties:
        discount:
          description: Discount details. Default is 100%.
          $ref: '#/components/schemas/MarketingDiscount'
        productSet:
          nullable: true
          description: Items that would be discounted.
          $ref: '#/components/schemas/MarketingProductSet'
        maximumNumberOfRedemptions:
          description: The maximum number of discounted items that can be given.
          format: integer
          type: number
          minimum: 1
          deprecated: true
          nullable: true
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of discounted items that can be given, unlimited when null
          minimum: 1
          default: 1
          nullable: true
      example:
        discount:
          discountPercentage: 50
        productSet:
          categories:
            - name: Pizza
        maximumRedemptions: 1
    MarketingBogofMixMatch:
      description: Bogof Mix and Match offer template. An offer where the list of qualifying items and the list of free items are exactly the same. The customer will place two of these items in their basket and receive the cheapest one free.
      additionalProperties: false
      type: object
      title: BogofMixMatch
      properties:
        discount:
          description: Discount details. Default is 100%.
          $ref: '#/components/schemas/MarketingDiscount'
        productSet:
          nullable: true
          description: Items that would be discounted.
          $ref: '#/components/schemas/MarketingProductSet'
        maximumNumberOfRedemptions:
          description: The maximum number of discounted items that can be given.
          format: integer
          type: number
          minimum: 1
          deprecated: true
          nullable: true
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of discounted items that can be given, unlimited when null
          minimum: 1
          default: 1
          nullable: true
      example:
        discount:
          discountPercentage: 50
        productSet:
          categories:
            - name: Pizza
        maximumRedemptions: 1
    MarketingBudgetLimit:
      description: Budget Limits limit the total discount that can be redeemed for an offer.
      additionalProperties: false
      type: object
      title: BudgetLimit
      properties:
        maxDiscountAmountForOrder:
          nullable: true
          description: Maximum discount amount that can be applied to an order. Value in the smallest unit of local currency (e.g., cents for USD, pence for GBP).
          $ref: '#/components/schemas/MarketingMoney'
      example:
        maxDiscountAmountForOrder:
          value: 1000
    MarketingBulkSubscriptionRequest:
      description: Bulk subscription details.
      additionalProperties: false
      type: object
      title: BulkSubscriptionRequest
      properties:
        restaurantIds:
          nullable: true
          description: List of restaurant ids to subscribe.
          minItems: 1
          maxItems: 5000
          type: array
          items:
            type: string
        batchType:
          nullable: false
          description: Batch type.
          $ref: '#/components/schemas/MarketingSubscriptionBatchType'
      example:
        restaurantIds:
          - '1234'
          - '5676'
        batchType: subscribe
    MarketingBuyXGetY:
      description: Buy X Items, Get Y Items (mix and match) offer template. When the customer buys the qualifying quantity of items (defined by `productBundleQuantity` and `productSet` in the offer's `qualifyingCriteria`), they get `discountBundleQuantity` items from this reward `productSet` free or discounted. The qualifying and reward sets may differ, e.g. "Buy 3 pizzas, get 2 drinks free".
      additionalProperties: false
      type: object
      title: BuyXGetY
      properties:
        productSet:
          description: The set of items that are rewarded (free or discounted). May differ from the qualifying set defined in the offer's `qualifyingCriteria`.
          $ref: '#/components/schemas/MarketingProductSet'
        discountBundleQuantity:
          description: The number of rewarded items (Y) granted when the qualifying criteria are met. The cheapest eligible items are discounted first.
          format: integer
          type: number
          minimum: 1
        discount:
          description: The discount applied to the rewarded items. Defaults to 100% (free) when not supplied; a lower percentage models a "get Y at X% off" reward.
          nullable: true
          $ref: '#/components/schemas/MarketingDiscount'
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of rewarded items that can be given, unlimited when null
          minimum: 1
          default: 1
          nullable: true
      required:
        - productSet
        - discountBundleQuantity
      example:
        productSet:
          categories:
            - name: Drinks
        discountBundleQuantity: 2
        maximumRedemptions: 1
        discount:
          discountPercentage: 100
    MarketingCampaign:
      description: Campaign information.
      type: object
      title: Campaign
      oneOf:
        - $ref: '#/components/schemas/MarketingCustomPromotionCampaign'
        - $ref: '#/components/schemas/MarketingMatchingByOfferDetailsCampaign'
        - $ref: '#/components/schemas/MarketingFastMovingGoodsCampaign'
      discriminator:
        propertyName: campaignType
        mapping:
          customPromotion: '#/components/schemas/MarketingCustomPromotionCampaign'
          matchingByOfferDetails: '#/components/schemas/MarketingMatchingByOfferDetailsCampaign'
          fastMovingGoods: '#/components/schemas/MarketingFastMovingGoodsCampaign'
      properties:
        campaignId:
          nullable: false
          description: Internal id of the campaign
          type: string
        name:
          nullable: false
          description: Name of the campaign
          type: string
        campaignType:
          nullable: false
          description: Type of the campaign
          type: string
          enum:
            - customPromotion
            - matchingByOfferDetails
            - fastMovingGoods
        campaignStatus:
          nullable: false
          description: Indicates status of campaign
          $ref: '#/components/schemas/MarketingCampaignStatus'
        description:
          nullable: true
          description: Description of the campaign
          type: string
        priority:
          nullable: false
          description: Priority of the campaign. Default is 0.
          format: integer
          minimum: 0
          type: number
        premium:
          nullable: false
          default: false
          description: Whether Campaign is targeting JET+ premium members
          type: boolean
        subscriptionRules:
          nullable: true
          description: Information about opt-in and opt-out periods
          $ref: '#/components/schemas/MarketingSubscriptionRules'
        optInBannerContent:
          nullable: true
          description: Metadata for a partner-facing opt-in promotion banner.
          $ref: '#/components/schemas/MarketingOptInBannerContent'
        restrictions:
          nullable: true
          type: object
          description: Campaign restrictions.
          $ref: '#/components/schemas/MarketingCampaignRestrictions'
        metadata:
          nullable: false
          description: Metadata dictionary
          additionalProperties:
            type: string
          type: object
        externalCampaignId:
          nullable: true
          description: External Campaign Id. A unique identifier of corresponding campaign object in external system. E.g. Subway promotion id
          type: string
    MarketingCampaignAccessRestrictions:
      description: Campaign Access Restrictions.
      additionalProperties: false
      type: object
      title: CampaignAccessRestrictions
      properties:
        requireEligibleStatus:
          nullable: false
          type: boolean
          default: false
          description: When true, new subscriptions must start with eligible or ineligible status before transitioning to subscribed; when false, subscriptions can start directly with subscribed status
        allowRestrictions:
          nullable: true
          deprecated: true
          description: Allowed brands or restaurants
          $ref: '#/components/schemas/MarketingRestrictions'
        denyRestrictions:
          nullable: true
          deprecated: true
          description: Denied brands or restaurants
          $ref: '#/components/schemas/MarketingRestrictions'
      example:
        requireEligibleStatus: true
        allowRestrictions:
          byBrandNames: []
        denyRestrictions:
          byBrandNames: []
    MarketingCampaignListEnvelope:
      description: Paginated list of campaigns
      additionalProperties: false
      type: object
      title: CampaignListEnvelope
      properties:
        paging:
          $ref: '#/components/schemas/PagingAfterCursor'
        data:
          nullable: false
          description: Array of campaigns
          type: array
          items:
            $ref: '#/components/schemas/MarketingCampaign'
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
        data:
          - campaignId: cheekyTuesday
            name: Cheeky Tuesday
            campaignType: customPromotion
            campaignStatus: active
            description: exclusive percent campaign for UK
            priority: 0
            subscriptionRules:
              unsubscribeOfferActiveDays: 1
            exclusive: true
            offerDetails:
              template:
                offerType: percent
                consumerSegment: all
                qualifyingCriteria:
                  minimumSpendValue:
                    value: 1500
                percent:
                  discountPercent: 20
              runningPeriods:
                - daysOfWeek:
                    - tuesday
                  dateRunning:
                    from: '2021-02-12T00:00:00.0000000+00:00'
    MarketingCampaignOfferDetails:
      description: Campaign offer details.
      additionalProperties: false
      type: object
      title: CampaignOfferDetails
      properties:
        template:
          nullable: true
          description: Information about offer configuration
          $ref: '#/components/schemas/MarketingCampaignOfferTemplate'
        runningPeriods:
          nullable: false
          type: array
          description: Running period of the offer
          items:
            $ref: '#/components/schemas/MarketingMultipleDaysRunningPeriod'
        productEligibilityRules:
          nullable: true
          type: object
          description: Product eligibility rules for the offer.
          $ref: '#/components/schemas/MarketingProductEligibilityRules'
        platformFunding:
          nullable: true
          description: Platform co-funding details for the offer.
          $ref: '#/components/schemas/MarketingPlatformFunding'
      example:
        template:
          shortDescription: Free item with selected orders
          description: Free big pizza with any beverage on orders over 50 GBP
          currency: GBP
          offerType: freeItem
          consumerSegment: all
          qualifyingCriteria:
            minimumSpendValue:
              value: 5000
            productSet:
              categories:
                - name: Beverages
          freeItem:
            productSet:
              products:
                - name: Big Pizza
            maximumNumberOfRedemptions: 2
        runningPeriods:
          - daysOfWeek:
              - monday
            dateRunning:
              from: '2021-02-12T00:00:00.0000000+00:00'
              to: '2021-12-12T00:00:00.0000000+00:00'
            timeRunning:
              from: '00:10:00'
              to: '12:10:00'
        productEligibilityRules:
          qualifyingProductRule:
            basePriceThreshold:
              min:
                value: 500
              max:
                value: 2000
          discountProductRule:
            basePriceThreshold:
              min:
                value: 700
              max:
                value: 3500
        platformFunding:
          fundedAmount:
            value: 50
    MarketingCampaignOfferTemplate:
      description: Campaign Offer Template.
      additionalProperties: false
      type: object
      title: CampaignOfferTemplate
      properties:
        offerType:
          nullable: false
          $ref: '#/components/schemas/MarketingOfferType'
        consumerSegment:
          nullable: false
          $ref: '#/components/schemas/MarketingConsumerSegment'
        qualifyingCriteria:
          nullable: false
          description: Conditions that must be met in order to get the offer discount.
          $ref: '#/components/schemas/MarketingQualifyingCriteria'
        totalOrder:
          nullable: true
          description: TotalOrder offer template
          $ref: '#/components/schemas/MarketingTotalOrder'
        percent:
          nullable: true
          description: Percent offer template
          $ref: '#/components/schemas/MarketingPercent'
        freeItem:
          nullable: true
          description: FreeItem offer template
          $ref: '#/components/schemas/MarketingFreeItem'
        bogof:
          nullable: true
          description: Bogof offer template
          $ref: '#/components/schemas/MarketingBogof'
        bogofMixMatch:
          nullable: true
          description: BogofMixMatch offer template
          $ref: '#/components/schemas/MarketingBogofMixMatch'
        itemLevelDiscount:
          nullable: true
          description: ItemLevelDiscount offer template
          $ref: '#/components/schemas/MarketingItemLevelDiscount'
        buyXGetY:
          nullable: true
          description: BuyXGetY (mix and match) offer template
          $ref: '#/components/schemas/MarketingBuyXGetY'
        fixedPriceBundle:
          nullable: true
          description: Fixed-price bundle offer template
          $ref: '#/components/schemas/MarketingFixedPriceBundle'
        budgetLimits:
          nullable: true
          description: Budget Limits limit the total discount that can be redeemed for an offer
          $ref: '#/components/schemas/MarketingBudgetLimit'
        description:
          nullable: true
          description: When configuring a campaign use this field to provide customized offer description or leave it null if default offer description should be applied
          type: string
        shortDescription:
          nullable: true
          description: When configuring a campaign use this field to provide customized short offer description or leave it null if default short offer description should be applied. The short description is used for search page.
          type: string
        currency:
          nullable: true
          description: currency code in ISO 4217 format
          type: string
        translations:
          nullable: true
          description: Translations of campaign offer
          type: array
          items:
            $ref: '#/components/schemas/MarketingTranslation'
        allowedPlatforms:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/MarketingCustomerAccessPlatform'
          nullable: true
      example:
        shortDescription: Free item with selected orders
        description: Free big pizza with any beverage on orders over 50 GBP
        currency: EUR
        offerType: bogof
        consumerSegment: all
        qualifyingCriteria:
          minimumSpendValue:
            value: 5000
          productSet:
            categories:
              - name: Beverages
        totalOrder:
          discount:
            discountAmount:
              value: 150
        percent:
          discountPercent: 20
        budgetLimits:
          maxDiscountAmountForOrder:
            value: 1200
        freeItem:
          productSet:
            categories:
              - name: Beverages
          maximumNumberOfRedemptions: 3
        bogof:
          productSet:
            categories:
              - name: Pizzas
          maximumNumberOfRedemptions: 3
        bogofMixMatch:
          productSet:
            categories:
              - name: Pizzas
        itemLevelDiscount:
          discount:
            discountPercentage: 50
          productSet:
            categories:
              - name: Beverages
          maximumNumberOfRedemptions: 3
        translations:
          - language: EN
            shortDescription: Free item with selected orders
            description: Free big pizza with any beverage on orders over 50 GBP
        allowedPlatforms:
          - android
          - ios
    MarketingCampaignResponse:
      description: Campaign Response.
      additionalProperties: false
      type: object
      title: CampaignResponse
      properties:
        data:
          nullable: false
          description: Campaign details
          $ref: '#/components/schemas/MarketingCampaign'
    MarketingCampaignRestrictions:
      description: Campaign restrictions.
      additionalProperties: false
      type: object
      title: CampaignRestrictions
      properties:
        accessRestrictions:
          nullable: false
          description: Allow and deny restrictions for a campaign by restaurant
          $ref: '#/components/schemas/MarketingCampaignAccessRestrictions'
        subscriptionDateRestrictions:
          nullable: true
          description: Subscribe and unsubscribe restrictions by date
          $ref: '#/components/schemas/MarketingSubscriptionDateRestrictions'
      example:
        accessRestrictions:
          allowRestrictions:
            byBrandNames: []
          denyRestrictions:
            byBrandNames:
              - PizzaHut
        subscriptionDateRestrictions:
          subscribePeriod:
            from: '2021-02-12T00:00:00.0000000+00:00'
            to: '2021-03-12T00:00:00.0000000+00:00'
          allowUnsubscribe: true
    MarketingCampaignSearchEnvelope:
      description: Campaign Search Results.
      additionalProperties: false
      type: object
      title: CampaignSearchEnvelope
      properties:
        paging:
          $ref: '#/components/schemas/PagingAfterCursor'
        data:
          nullable: false
          description: Array of campaign summaries
          type: array
          items:
            $ref: '#/components/schemas/MarketingCampaignSummary'
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
        data:
          - campaignId: someId123
            status: active
            description: someDescription
            offerDescription: offerDescription
            lastUpdated: '2021-02-12T00:00:00.0000000+00:00'
            subscriptionSummary:
              topBrands:
                - Brand
              total: 123
              lastUpdated: '2021-02-12T00:00:00.0000000+00:00'
    MarketingCampaignStatus:
      description: Status of the campaign.
      enum:
        - draft
        - scheduled
        - active
        - paused
        - finished
        - canceled
      type: string
    MarketingCampaignSummary:
      description: Campaign summary information.
      additionalProperties: false
      type: object
      title: CampaignSummary
      properties:
        campaignId:
          nullable: false
          description: Internal id of the campaign
          type: string
        name:
          nullable: false
          description: Name of the campaign
          type: string
        status:
          nullable: false
          description: Status of the campaign
          $ref: '#/components/schemas/MarketingCampaignStatus'
        description:
          nullable: true
          description: Description of the campaign
          type: string
        offerDescription:
          nullable: true
          description: Description of the offer visible on consumer facing app
          type: string
        premium:
          nullable: false
          default: false
          description: Whether Campaign is targeting JET+ premium members
          type: boolean
        lastUpdated:
          nullable: false
          description: Timestamp of the last campaign update
          format: date-time
          type: string
        subscriptionSummary:
          nullable: false
          description: Subscription summary
          $ref: '#/components/schemas/MarketingSubscriptionSummary'
      example:
        campaignId: someId123
        name: someName
        status: active
        description: someDescription
        offerDescription: offerDescription
        lastUpdated: '2021-02-12T00:00:00.0000000+00:00'
        subscriptionSummary:
          topBrands: []
          total: 123
          lastUpdated: '2021-02-12T00:00:00.0000000+00:00'
    MarketingCategory:
      description: Category model.
      additionalProperties: false
      type: object
      title: Category
      properties:
        name:
          nullable: true
          description: Name of the category
          type: string
      example:
        name: Pizza
    MarketingConsumerSegment:
      description: Consumer Segment that offer applies
      enum:
        - all
        - newToRestaurant
      type: string
    MarketingCreateCampaignRequest:
      description: Create Campaign Request.
      additionalProperties: false
      type: object
      title: CreateCampaignRequest
      properties:
        name:
          nullable: false
          description: Name of the campaign
          type: string
        description:
          nullable: true
          description: Description of the campaign
          type: string
        type:
          nullable: true
          description: Type of the campaign
          type: string
        priority:
          nullable: false
          description: Priority of the campaign. Default is 0.
          format: integer
          minimum: 0
          type: number
        exclusive:
          nullable: false
          description: If campaign is exclusive i.e. Cheeky Tuesday. Default is false.
          type: boolean
        draft:
          nullable: false
          description: Campaign in draft state and does not allow subscriptions.
          type: boolean
        offerDetails:
          nullable: true
          type: object
          description: Campaign offer configuration
          $ref: '#/components/schemas/MarketingCampaignOfferDetails'
        matchingByOfferDetails:
          nullable: true
          description: Information about matching by offer details
          $ref: '#/components/schemas/MarketingMatchingByOfferDetails'
        restrictions:
          nullable: true
          type: object
          description: Campaign restrictions.
          $ref: '#/components/schemas/MarketingCampaignRestrictions'
        allowRestrictions:
          nullable: true
          type: object
          deprecated: true
          description: Allowed brands or restaurants
          $ref: '#/components/schemas/MarketingRestrictions'
        denyRestrictions:
          nullable: true
          type: object
          deprecated: true
          description: Denied brands or restaurants
          $ref: '#/components/schemas/MarketingRestrictions'
        metadata:
          nullable: false
          description: Metadata dictionary
          additionalProperties:
            type: string
          type: object
        externalCampaignId:
          nullable: true
          description: External Campaign Id
          type: string
        subscriptionRules:
          nullable: true
          type: object
          description: Information about opt-in and opt-out periods
          $ref: '#/components/schemas/MarketingSubscriptionRules'
      example:
        name: cheekyTuesday
        description: someDescription
        type: customPromotion
        priority: 0
        exclusive: false
        draft: false
        offerDetails:
          template:
            description: Buy one get one free
            shortDescription: Buy one get one free
            currency: GBP
            offerType: bogof
            consumerSegment: all
            qualifyingCriteria:
              minimumSpendValue:
                value: 5000
              productSet:
                categories:
                  - name: Beverages
            bogof:
              productSet:
                categories:
                  - name: Pizzas
              maximumNumberOfRedemptions: 3
          runningPeriods:
            - daysOfWeek:
                - monday
              dateRunning:
                from: '2021-02-12T00:00:00.0000000+00:00'
                to: '2021-12-12T00:00:00.0000000+00:00'
              timeRunning:
                from: '00:10:00'
                to: '12:10:00'
        allowRestrictions:
          byBrandNames: []
        denyRestrictions:
          byBrandNames: []
        metadata:
          systemTest: 'true'
        externalCampaignId: cheeky123
        subscriptionRules:
          unsubscribeOfferActiveDays: 1
    MarketingCreateNewPriceOfferRequest:
      title: CreateNewPriceOfferRequest
      description: A request to create a new price for a campaign from a list of prices in JSON format
      type: object
      required:
        - newPrices
      properties:
        newPrices:
          type: array
          description: A list of new prices
          nullable: false
          items:
            $ref: '#/components/schemas/MarketingNewPriceEntry'
      example:
        newPrices:
          - productName: Wholemeal Loaf 800G
            newPrice:
              value: 75
            membersPrice:
              value: 75
          - productName: Jelly strawberry
            newPrice:
              value: 6
            membersPrice:
              value: 6
    MarketingCreateOffersRequest:
      description: Create offers request
      additionalProperties: false
      type: object
      title: Create offers request
      properties:
        offerType:
          nullable: false
          $ref: '#/components/schemas/MarketingOfferType'
        consumerSegment:
          nullable: false
          $ref: '#/components/schemas/MarketingConsumerSegment'
        qualifyingCriteria:
          nullable: true
          $ref: '#/components/schemas/MarketingQualifyingCriteria'
        offerDescription:
          nullable: true
          description: Custom description for offer
          type: string
        currency:
          nullable: true
          description: currency code in ISO 4217 format
          type: string
        totalOrder:
          nullable: true
          $ref: '#/components/schemas/MarketingTotalOrder'
        percent:
          nullable: true
          $ref: '#/components/schemas/MarketingPercent'
        freeItem:
          nullable: true
          $ref: '#/components/schemas/MarketingFreeItem'
        bogof:
          nullable: true
          $ref: '#/components/schemas/MarketingBogof'
        bogofMixMatch:
          nullable: true
          $ref: '#/components/schemas/MarketingBogofMixMatch'
        itemLevelDiscount:
          nullable: true
          description: ItemLevelDiscount offer template
          $ref: '#/components/schemas/MarketingItemLevelDiscount'
        buyXGetY:
          nullable: true
          description: BuyXGetY (mix and match) offer template
          $ref: '#/components/schemas/MarketingBuyXGetY'
        fixedPriceBundle:
          nullable: true
          description: Fixed-price bundle offer template
          $ref: '#/components/schemas/MarketingFixedPriceBundle'
        budgetLimits:
          nullable: true
          description: Budget Limits limit the total discount that can be redeemed for an offer
          $ref: '#/components/schemas/MarketingBudgetLimit'
        runningPeriod:
          $ref: '#/components/schemas/MarketingMultipleDaysRunningPeriod'
        allowedPlatforms:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/MarketingCustomerAccessPlatform'
          nullable: true
        granularSegmentation:
          nullable: true
          description: Granular segmentation
          $ref: '#/components/schemas/MarketingGranularSegmentation'
      example:
        runningPeriod:
          daysOfWeek:
            - wednesday
          dateRunning:
            from: '2020-12-12T00:00:00.0000000+00:00'
            to: '2021-12-12T00:00:00.0000000+00:00'
        offerType: freeItem
        consumerSegment: all
        qualifyingCriteria:
          minimumSpendValue:
            value: 1000
        offerDescription: Free Big Pizza on orders over 10 GBP
        currency: EUR
        freeItem:
          productSet:
            products:
              - name: Big Pizza
          maximumNumberOfRedemptions: 2
        allowedPlatforms:
          - web
        granularSegmentation:
          expression: lifecycle_base_segment = lapsing AND lifecycle_frequency_segment = low
          schemaVersion: '1.0'
    MarketingCustomPromotionCampaign:
      allOf:
        - $ref: '#/components/schemas/MarketingCampaign'
      description: Custom Promotion Marketing Campaign
      additionalProperties: false
      properties:
        exclusive:
          nullable: false
          description: If campaign is exclusive i.e. Cheeky Tuesday. Default is false.
          type: boolean
        offerDetails:
          nullable: true
          description: Information about offer configuration
          $ref: '#/components/schemas/MarketingCampaignOfferDetails'
    MarketingCustomerAccessPlatform:
      type: string
      description: Represents the platform through which the customer is accessing the service.
      enum:
        - web
        - android
        - ios
    MarketingDateTimePeriod:
      description: Running Date Time period.
      additionalProperties: false
      type: object
      title: DateTimePeriod
      properties:
        from:
          nullable: true
          description: Start date.
          format: date-time
          type: string
        to:
          nullable: true
          description: End date.
          format: date-time
          type: string
      example:
        from: '2021-02-12T00:00:00.0000000+00:00'
        to: '2021-12-12T00:00:00.0000000+00:00'
    MarketingDiscount:
      description: Discount details.
      additionalProperties: false
      type: object
      title: Discount
      properties:
        discountAmount:
          nullable: true
          description: Money discount.
          $ref: '#/components/schemas/MarketingMoney'
        discountPercentage:
          nullable: true
          description: Percent discount.
          format: integer
          type: number
          minimum: 1
          maximum: 100
      minProperties: 1
      maxProperties: 1
      example:
        discountAmount:
          value: 50
    MarketingFastMovingGoodsCampaign:
      allOf:
        - $ref: '#/components/schemas/MarketingCampaign'
      description: Fast Moving Goods Campaign
      additionalProperties: false
    MarketingFixedPriceBundle:
      description: Buy X Items, Pay Y (fixed-price bundle) offer template. When the customer buys the qualifying quantity of items (defined by `productBundleQuantity` and `productSet` in the offer's `qualifyingCriteria`), those qualifying items are charged a single fixed total price (Y). For example "Any 3 for £10".
      additionalProperties: false
      type: object
      title: FixedPriceBundle
      properties:
        bundlePrice:
          description: The fixed total price (Y) charged for the qualifying bundle, in the smallest unit of the local currency.
          $ref: '#/components/schemas/MarketingMoney'
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of times the fixed bundle price can be applied per order, unlimited when null.
          minimum: 2
          default: 2
          nullable: true
      required:
        - bundlePrice
      example:
        bundlePrice:
          value: 1000
        maximumRedemptions: 2
    MarketingFreeItem:
      description: "FreeItem offer template. An offer where the list of qualifying items and the list of free items are different. The customer will place an item in their basket from the list of qualifying items and receive one of the items from the list of free items, free.\_"
      additionalProperties: false
      type: object
      title: FreeItem
      properties:
        discount:
          description: Discount details. Default is 100%.
          $ref: '#/components/schemas/MarketingDiscount'
        productSet:
          nullable: true
          description: Items that would be discounted.
          $ref: '#/components/schemas/MarketingProductSet'
        maximumNumberOfRedemptions:
          description: The maximum number of free items that can be given.
          format: integer
          type: number
          minimum: 1
          deprecated: true
          nullable: true
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of discounted items that can be given, unlimited when null
          minimum: 1
          default: 1
          nullable: true
      example:
        discount:
          discountPercentage: 100
        productSet:
          products:
            - name: Big Pizza
        maximumRedemptions: 2
    MarketingGranularSegmentation:
      description: Granular Segmentation (advanced segmentation) allows for more precise targeting of users based on specific criteria.
      additionalProperties: false
      type: object
      title: GranularSegmentation
      properties:
        expression:
          nullable: false
          description: The expression for granular segmentation (advanced segmentation). Follows the schema and syntax defined in User Segmentation Targeting SDK https://github.je-labs.com/FoodDiscoveryAlgorithms/UserSegmentationTargeting/tree/main/schema
          type: string
        schemaVersion:
          nullable: false
          description: The version of the schema used for the expression.
          type: string
      example:
        expression: lifecycle_base_segment = lapsing AND lifecycle_frequency_segment = low
        schemaVersion: '1.0'
    MarketingItemLevelDiscount:
      description: "ItemLevelDiscount offer template. An offer where the list of qualifying items and the list of discounted items are different. The customer will place an item in their basket from the list of qualifying items and receive one of the items from the list of discounted items with the defined discount.\_"
      additionalProperties: false
      type: object
      title: ItemLevelDiscount
      properties:
        discount:
          description: Discount details.
          $ref: '#/components/schemas/MarketingDiscount'
        productSet:
          nullable: true
          description: Items that would be discounted.
          $ref: '#/components/schemas/MarketingProductSet'
        maximumNumberOfRedemptions:
          description: The maximum number of discounted items that can be given.
          format: integer
          type: number
          minimum: 1
          deprecated: true
          nullable: true
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of discounted items that can be given, unlimited when null.
          minimum: 1
          default: 1
          nullable: true
      example:
        discount:
          discountPercentage: 50
        productSet:
          products:
            - name: Big Pizza
        maximumRedemptions: 2
    MarketingMatchingByOfferDetails:
      description: Matching by offer details.
      additionalProperties: false
      type: object
      title: CampaignOfferDetails
      properties:
        template:
          nullable: false
          description: Information about offer configuration
          $ref: '#/components/schemas/MarketingCampaignOfferTemplate'
      example:
        template:
          currency: GBP
          offerType: percent
          consumerSegment: all
          percent:
            discountPercent: 10
    MarketingMatchingByOfferDetailsCampaign:
      allOf:
        - $ref: '#/components/schemas/MarketingCampaign'
      description: Matching By Offer Details Campaign
      additionalProperties: false
      properties:
        matchingByOfferDetails:
          nullable: true
          description: Information about matching by offer details
          $ref: '#/components/schemas/MarketingMatchingByOfferDetails'
    MarketingMoney:
      description: Money value in the smallest unit of local currency
      additionalProperties: false
      type: object
      title: Money
      properties:
        value:
          description: Money value.
          format: integer
          type: number
          minimum: 0
      example:
        value: 50
    MarketingMultipleDaysRunningPeriod:
      description: Structure that describes multiple running date and time periods.
      additionalProperties: false
      type: object
      title: MultipleDaysRunningPeriod
      properties:
        daysOfWeek:
          nullable: false
          description: Days of week to run
          type: array
          uniqueItems: false
          minItems: 1
          maxItems: 7
          items:
            $ref: '#/components/schemas/SharedDayOfWeek'
        dateRunning:
          nullable: true
          description: Date running period
          $ref: '#/components/schemas/MarketingDateTimePeriod'
        timeRunning:
          nullable: true
          description: Time Running period
          $ref: '#/components/schemas/MarketingTimeSpanPeriod'
      example:
        daysOfWeek:
          - monday
        dateRunning:
          from: '2021-02-12T00:00:00.0000000+00:00'
          to: '2021-12-12T00:00:00.0000000+00:00'
        timeRunning:
          from: '00:10:00'
          to: '12:10:00'
    MarketingNewPriceEntry:
      title: NewPriceEntry
      description: The details of an individual new price entry
      type: object
      required:
        - productName
      properties:
        productName:
          type: string
          description: The name of the product
        newPrice:
          nullable: true
          $ref: '#/components/schemas/MarketingMoney'
          description: |
            The reduced price for members in the minor currency unit (e.g. pence, cents). If not supplied, the API will automatically populate this field from membersPrice, ensuring backward compatibility with older clients that only send membersPrice. At least one of newPrice or membersPrice must be provided.
        membersPrice:
          deprecated: true
          nullable: true
          $ref: '#/components/schemas/MarketingMoney'
          description: |
            Accepted for backward compatibility while clients migrate to newPrice. When both newPrice and membersPrice are supplied, newPrice takes precedence. Will be removed in a future version.
      example:
        productName: Wholemeal Loaf 800G
        newPrice:
          value: 75
        membersPrice:
          value: 75
    MarketingNewPriceListEntry:
      title: NewPriceListEntry
      description: An individual new price entry as returned in a price list response
      type: object
      required:
        - productName
        - newPrice
      properties:
        productName:
          type: string
          description: The name of the product
        newPrice:
          nullable: false
          $ref: '#/components/schemas/MarketingMoney'
          description: |
            The reduced price for members in the minor currency unit (e.g. pence, cents). Always populated in the response — the API guarantees this field is set even when the original request was submitted using the deprecated membersPrice field.
        membersPrice:
          deprecated: true
          nullable: true
          $ref: '#/components/schemas/MarketingMoney'
          description: |
            Present for backward compatibility while clients migrate to newPrice. Always mirrors the value of newPrice. Will be removed in a future version.
      example:
        productName: Wholemeal Loaf 800G
        newPrice:
          value: 75
        membersPrice:
          value: 75
    MarketingNewPriceListResponse:
      title: NewPriceListResponse
      description: The response envelope containing the price list data for a price list campaign
      type: object
      required:
        - data
      properties:
        paging:
          $ref: '#/components/schemas/PagingAfterCursor'
        data:
          nullable: false
          description: Array of new price entries for the campaign
          type: array
          items:
            $ref: '#/components/schemas/MarketingNewPriceListEntry'
      example:
        paging:
          cursors:
            after: null
        data:
          - productName: Wholemeal Loaf 800G
            newPrice:
              value: 75
            membersPrice:
              value: 75
          - productName: Jelly strawberry
            newPrice:
              value: 6
            membersPrice:
              value: 6
    MarketingOffer:
      description: Offer details
      additionalProperties: false
      type: object
      title: Offer
      properties:
        id:
          description: Internal id of the offer
          type: string
          nullable: false
        campaignId:
          nullable: true
          description: The unique identifier of the offer campaign.
          type: string
        offerType:
          nullable: false
          $ref: '#/components/schemas/MarketingOfferType'
        status:
          nullable: false
          $ref: '#/components/schemas/MarketingOfferStatus'
        consumerSegment:
          nullable: false
          $ref: '#/components/schemas/MarketingConsumerSegment'
        qualifyingCriteria:
          nullable: true
          $ref: '#/components/schemas/MarketingQualifyingCriteria'
        offerDescription:
          nullable: true
          description: Custom description for offer
          type: string
        totalOrder:
          nullable: true
          $ref: '#/components/schemas/MarketingTotalOrder'
        percent:
          nullable: true
          $ref: '#/components/schemas/MarketingPercent'
        freeItem:
          nullable: true
          $ref: '#/components/schemas/MarketingFreeItem'
        bogof:
          nullable: true
          $ref: '#/components/schemas/MarketingBogof'
        bogofMixMatch:
          nullable: true
          $ref: '#/components/schemas/MarketingBogofMixMatch'
        itemLevelDiscount:
          nullable: true
          description: ItemLevelDiscount offer template
          $ref: '#/components/schemas/MarketingItemLevelDiscount'
        buyXGetY:
          nullable: true
          description: BuyXGetY (mix and match) offer template
          $ref: '#/components/schemas/MarketingBuyXGetY'
        fixedPriceBundle:
          nullable: true
          description: Fixed-price bundle offer template
          $ref: '#/components/schemas/MarketingFixedPriceBundle'
        budgetLimits:
          nullable: true
          description: Budget Limits limit the total discount that can be redeemed for an offer
          $ref: '#/components/schemas/MarketingBudgetLimit'
        runningPeriod:
          nullable: false
          $ref: '#/components/schemas/MarketingSingleDayRunningPeriod'
        currency:
          nullable: true
          description: ISO currency code (e.g. GBP)
          type: string
      example:
        id: '1564'
        runningPeriod:
          dayOfWeek: wednesday
          daysOfWeek:
            - wednesday
          dateRunning:
            from: '2020-12-12T00:00:00.0000000+00:00'
            to: '2021-12-12T00:00:00.0000000+00:00'
        offerType: freeItem
        status: active
        consumerSegment: all
        qualifyingCriteria:
          minimumSpendValue:
            value: 5000
        offerDescription: Free Big Pizza on orders over 10 GBP
        freeItem:
          discount:
            discountPercentage: 100
          productSet:
            products:
              - name: Big Pizza
          maximumNumberOfRedemptions: 2
        currency: GBP
    MarketingOfferDescriptionRequest:
      description: Offer details that are used to generate offer description
      additionalProperties: false
      type: object
      title: OfferDescriptionRequest
      properties:
        offerTemplate:
          nullable: false
          description: Selected offer template
          $ref: '#/components/schemas/MarketingOfferTemplate'
        offerPeriod:
          nullable: true
          description: Selected running period of the offer
          $ref: '#/components/schemas/MarketingMultipleDaysRunningPeriod'
      example:
        offerTemplate:
          offerType: percent
          consumerSegment: all
          qualifyingCriteria:
            minimumSpendValue:
              value: 2500
          percent:
            discountPercent: 15
        offerPeriod:
          daysOfWeek:
            - monday
            - friday
          dateRunning:
            from: '2021-02-12T00:00:00.0000000+00:00'
            to: '2021-12-12T00:00:00.0000000+00:00'
          timeRunning:
            from: '00:10:00'
            to: '12:10:00'
    MarketingOfferDescriptionResponse:
      description: Offer description matching the offer description request
      additionalProperties: false
      type: object
      title: OfferDescriptionResponse
      properties:
        data:
          nullable: false
          description: Resolved offer description
          $ref: '#/components/schemas/MarketingResolvedOfferDescription'
      example:
        data:
          localizedDescription: Free big pizza with any beverage on orders over 50 GBP
          localizedShortDescription: Free item with selected orders
    MarketingOfferListEnvelope:
      description: Paginated list of offers
      additionalProperties: false
      type: object
      title: OfferListEnvelope
      properties:
        paging:
          $ref: '#/components/schemas/PagingAfterCursor'
        data:
          nullable: false
          description: Array of offers
          type: array
          items:
            $ref: '#/components/schemas/MarketingOffer'
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
        data:
          - id: '1564'
            runningPeriod:
              dayOfWeek: monday
              daysOfWeek:
                - monday
              dateRunning:
                from: '2021-02-12T00:00:00.0000000+00:00'
                to: '2021-12-12T00:00:00.0000000+00:00'
            offerType: freeItem
            consumerSegment: all
            qualifyingCriteria:
              minimumSpendValue:
                value: 5000
            offerDescription: Free Big Pizza on orders above 10 GBP
            freeItem:
              discount:
                discountPercentage: 100
              productSet:
                products:
                  - name: Big Pizza
              maximumNumberOfRedemptions: 2
            currency: GBP
    MarketingOfferStatus:
      description: Status of the offer
      enum:
        - active
        - deleted
        - scheduled
        - expired
      type: string
    MarketingOfferTemplate:
      description: Offer Template.
      additionalProperties: false
      type: object
      title: OfferTemplate
      properties:
        offerType:
          nullable: false
          $ref: '#/components/schemas/MarketingOfferType'
        consumerSegment:
          nullable: false
          $ref: '#/components/schemas/MarketingConsumerSegment'
        qualifyingCriteria:
          nullable: false
          description: Conditions that must be met in order to get the offer discount.
          $ref: '#/components/schemas/MarketingQualifyingCriteria'
        totalOrder:
          nullable: true
          description: Total Order offer template
          $ref: '#/components/schemas/MarketingTotalOrder'
        percent:
          nullable: true
          description: Percent offer template
          $ref: '#/components/schemas/MarketingPercent'
        freeItem:
          nullable: true
          description: FreeItem offer template
          $ref: '#/components/schemas/MarketingFreeItem'
        bogof:
          nullable: true
          description: Bogof offer template
          $ref: '#/components/schemas/MarketingBogof'
        bogofMixMatch:
          nullable: true
          description: BogofMixMatch offer template
          $ref: '#/components/schemas/MarketingBogofMixMatch'
        itemLevelDiscount:
          nullable: true
          description: ItemLevelDiscount offer template
          $ref: '#/components/schemas/MarketingItemLevelDiscount'
        buyXGetY:
          nullable: true
          description: BuyXGetY (mix and match) offer template
          $ref: '#/components/schemas/MarketingBuyXGetY'
        fixedPriceBundle:
          nullable: true
          description: Fixed-price bundle offer template
          $ref: '#/components/schemas/MarketingFixedPriceBundle'
        budgetLimits:
          nullable: true
          description: Budget Limits limit the total discount that can be redeemed for an offer
          $ref: '#/components/schemas/MarketingBudgetLimit'
        allowedPlatforms:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/MarketingCustomerAccessPlatform'
          nullable: true
      example:
        offerType: bogof
        consumerSegment: all
        qualifyingCriteria:
          minimumSpendValue:
            value: 5000
          productSet:
            categories:
              - name: Beverages
          productBundleQuantity: 3
        totalOrder:
          discount:
            discountAmount:
              value: 150
        percent:
          discountPercent: 20
        budgetLimits:
          maxDiscountAmountForOrder:
            value: 1200
        freeItem:
          productSet:
            categories:
              - name: Beverages
          maximumNumberOfRedemptions: 3
        itemLevelDiscount:
          discount:
            discountPercentage: 50
          productSet:
            categories:
              - name: Beverages
          maximumNumberOfRedemptions: 3
        bogof:
          productSet:
            categories:
              - name: Pizzas
          maximumNumberOfRedemptions: 3
        bogofMixMatch:
          productSet:
            categories:
              - name: Pizzas
        buyXGetY:
          productSet:
            categories:
              - name: Drinks
          discountBundleQuantity: 2
          maximumRedemptions: 2
          discount:
            discountPercentage: 100
        fixedPriceBundle:
          bundlePrice:
            value: 1000
          maximumRedemptions: 2
        allowedPlatforms:
          - android
          - ios
    MarketingOfferType:
      description: Type of the offer
      enum:
        - percent
        - freeItem
        - bogof
        - stampCard
        - bogofMixMatch
        - notification
        - itemLevelDiscount
        - totalOrder
        - buyXGetY
        - fixedPriceBundle
      type: string
    MarketingOptInBannerContent:
      description: Metadata for a partner-facing opt-in promotion banner.
      additionalProperties: false
      type: object
      title: OptInBannerContent
      properties:
        title:
          nullable: false
          description: Opt-in banner title shown to partners in the UI.
          type: string
        description:
          nullable: false
          description: Detailed body text displayed on the opt-in banner explaining the campaign to partners.
          type: string
        termsAndConditionsUrl:
          nullable: true
          description: Absolute URL linking to the campaign's terms and conditions.
          type: string
        thumbnailUrl:
          nullable: true
          description: Absolute URL of the banner thumbnail image.
          type: string
      example:
        title: 241 Tuesdays
        description: Give your customers a buy one get one free offer on main dishes �10
        termsAndConditionsUrl: https://partnerinfo.just-eat.co.uk/en/your-business/two-for-one-tuesdays-terms-and-conditions
        thumbnailUrl: https://partnerinfo.just-eat.co.uk/en/your-business/two-for-one-tuesdays.png
    MarketingPercent:
      description: Percent offer template.
      additionalProperties: false
      type: object
      title: Percent
      properties:
        discountPercent:
          nullable: true
          description: Discount percentage for offer
          type: number
          format: integer
          minimum: 1
          maximum: 100
      example:
        discountPercent: 10
    MarketingPlatformFunding:
      description: Platform co-funding details.
      additionalProperties: false
      type: object
      title: PlatformFunding
      properties:
        fundedAmount:
          nullable: true
          description: Money co-funded.
          $ref: '#/components/schemas/MarketingMoney'
        fundedPercentage:
          nullable: true
          description: Percent co-funded.
          type: number
          format: integer
          minimum: 1
          maximum: 100
      minProperties: 1
      maxProperties: 1
      oneOf:
        - required:
            - fundedAmount
          properties:
            fundedAmount:
              nullable: false
              type: object
        - required:
            - fundedPercentage
          properties:
            fundedPercentage:
              type: number
              format: integer
              nullable: false
      example:
        fundedAmount:
          value: 50
    MarketingPreferableModifier:
      description: Preferable product modifier.
      additionalProperties: false
      type: object
      title: PreferableModifier
      properties:
        name:
          nullable: true
          description: Modifier Name
          type: string
        modifierGroupName:
          nullable: true
          description: Modifier group name
          type: string
      example:
        name: Sweet Chilli Sauce
        modifierGroupName: Sides
    MarketingProduct:
      description: Product model.
      additionalProperties: false
      type: object
      title: Product
      properties:
        name:
          nullable: true
          description: Name of the product
          type: string
        variationName:
          nullable: true
          description: Name of the product variation
          type: string
        preferableModifiers:
          nullable: true
          description: Preferable modifiers for the product
          type: array
          items:
            $ref: '#/components/schemas/MarketingPreferableModifier'
      example:
        name: Ger Burger
        preferableModifiers:
          - name: Sweet Chilli Sauce
            modifierGroupName: Sides
    MarketingProductEligibilityRule:
      description: Defines basic min/max base price for products.
      additionalProperties: false
      type: object
      title: ProductEligibilityRule
      required:
        - basePriceThreshold
      properties:
        basePriceThreshold:
          nullable: false
          description: Minimum and maximum base price for the products in the product set.
          type: object
          required:
            - min
          properties:
            min:
              description: Minimum base price for the products in the product set in smallest unit of relevant currency.
              nullable: false
              type: object
              $ref: '#/components/schemas/MarketingMoney'
            max:
              description: Maximum base price for the products in the product set in smallest unit of relevant currency.
              nullable: true
              type: object
              $ref: '#/components/schemas/MarketingMoney'
      example:
        basePriceThreshold:
          min:
            value: 500
          max:
            value: 2000
    MarketingProductEligibilityRules:
      description: Product eligibility rules for qualifying and discount products.
      additionalProperties: false
      type: object
      title: ProductEligibilityRules
      properties:
        qualifyingProductRule:
          nullable: true
          type: object
          description: Eligibility rule for the qualifying product set.
          $ref: '#/components/schemas/MarketingProductEligibilityRule'
        discountProductRule:
          nullable: true
          type: object
          description: Eligibility rule for the discount product set.
          $ref: '#/components/schemas/MarketingProductEligibilityRule'
      anyOf:
        - required:
            - qualifyingProductRule
          properties:
            qualifyingProductRule:
              nullable: false
              type: object
        - required:
            - discountProductRule
          properties:
            discountProductRule:
              nullable: false
              type: object
      example:
        qualifyingProductRule:
          basePriceThreshold:
            min:
              value: 500
            max:
              value: 2000
        discountProductRule:
          basePriceThreshold:
            min:
              value: 700
            max:
              value: 3500
    MarketingProductEligibilitySelection:
      description: Product eligibility selection model
      additionalProperties: false
      type: object
      title: ProductEligibilitySelection
      properties:
        qualifyingProducts:
          nullable: true
          description: Products included in the qualifying product set
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/MarketingProduct'
        discountProducts:
          nullable: true
          description: Products included in the discount product set
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/MarketingProduct'
      example:
        qualifyingProducts:
          - name: Ger Burger
          - name: Veggie Pizza
            variationName: Large
        discountProducts:
          - name: Free Drink
          - name: Free Dessert
    MarketingProductSet:
      description: Set of products by brand names, categories, or specific products.
      additionalProperties: false
      type: object
      title: ProductSet
      properties:
        products:
          nullable: true
          description: The specific products.
          type: array
          items:
            $ref: '#/components/schemas/MarketingProduct'
        categories:
          nullable: true
          description: The categories product belongs to.
          type: array
          items:
            $ref: '#/components/schemas/MarketingCategory'
      minProperties: 1
      maxProperties: 3
      example:
        products:
          - name: Ger Burger
          - name: Fanta
    MarketingQualifyingCriteria:
      description: Conditions that must be met in order to get the offer discount.
      additionalProperties: false
      type: object
      title: QualifyingCriteria
      properties:
        benefits:
          nullable: true
          description: List of required membership benefits. Customer should be associated to one of those benefits to be eligible for the offer discount
          type: array
          minItems: 1
          maxItems: 10
          items:
            type: string
        minimumSpendValue:
          nullable: false
          description: The minimum spend value required to be eligible for the offer discount in smallest unit of relevant currency. Default value is 0.
          $ref: '#/components/schemas/MarketingMoney'
        productSet:
          nullable: true
          description: The basket product requirements to be eligible for the offer discount.
          $ref: '#/components/schemas/MarketingProductSet'
        productBundleQuantity:
          nullable: true
          description: The number of qualifying items from `productSet` that must be purchased to trigger the offer (the "buy X" quantity). Used by bundle offers such as `fixedPriceBundle` and `buyXGetY`.
          format: integer
          type: number
          minimum: 1
      example:
        minimumSpendValue:
          value: 5000
        productSet:
          categories:
            - name: Pizza
        productBundleQuantity: 3
    MarketingResolvedOfferDescription:
      description: Offer description matching the offer description request
      additionalProperties: false
      type: object
      title: ResolvedOfferDescription
      properties:
        localizedDescription:
          nullable: false
          description: Offer description localized for current tenant
          type: string
        localizedShortDescription:
          nullable: false
          description: Offer short description localized for current tenant
          type: string
      example:
        localizedDescription: Free big pizza with any beverage on orders over 50 GBP
        localizedShortDescription: Free item with selected orders
    MarketingRestaurant:
      description: Restaurant details.
      additionalProperties: false
      type: object
      title: Restaurant details
      properties:
        id:
          nullable: false
          description: Restaurant Id
          type: string
        name:
          nullable: false
          description: The name of the restaurant
          type: string
        brandName:
          nullable: true
          description: The name of the brand this restaurant is part of
          type: string
        city:
          nullable: true
          description: The city/town the restaurant is located in
          type: string
      example:
        id: '324567'
        name: pizza burger house
        brandName: Food Corp
        city: Newport
    MarketingRestrictions:
      description: Brand name restrictions.
      additionalProperties: false
      type: object
      title: Restrictions
      properties:
        byBrandNames:
          nullable: true
          description: Restaurant brands array
          type: array
          items:
            type: string
      example:
        byBrandNames: []
    MarketingSingleDayRunningPeriod:
      description: Structure that describes running date, time period, and days of the week.
      additionalProperties: false
      type: object
      title: SingleDayRunningPeriod
      properties:
        dayOfWeek:
          nullable: false
          description: Day of week
          $ref: '#/components/schemas/SharedDayOfWeek'
        daysOfWeek:
          nullable: true
          description: List of days of week
          type: array
          minItems: 1
          maxItems: 7
          items:
            $ref: '#/components/schemas/SharedDayOfWeek'
        dateRunning:
          nullable: true
          description: Date running period
          $ref: '#/components/schemas/MarketingDateTimePeriod'
        timeRunning:
          nullable: true
          description: Time running period
          $ref: '#/components/schemas/MarketingTimeSpanPeriod'
      example:
        dayOfWeek: monday
        daysOfWeek:
          - monday
        dateRunning:
          from: '2021-02-12T00:00:00.0000000+00:00'
          to: '2021-12-12T00:00:00.0000000+00:00'
        timeRunning:
          from: '08:10:00'
          to: '12:10:00'
    MarketingSubscription:
      description: Subscription details.
      additionalProperties: false
      type: object
      title: Subscription
      properties:
        campaignId:
          nullable: false
          description: Internal id of the campaign
          type: string
        restaurantId:
          deprecated: true
          nullable: false
          description: Restaurant Id.
          type: string
        restaurant:
          nullable: false
          description: Restaurant
          $ref: '#/components/schemas/MarketingRestaurant'
        status:
          description: Subscription status
          $ref: '#/components/schemas/MarketingSubscriptionStatus'
        changedBy:
          nullable: false
          description: Agent who changed status.
          type: string
        reason:
          nullable: true
          description: Reason why the status changed.
          type: string
        changedAt:
          nullable: false
          description: Subscribe/Unsubscribe timestamp.
          format: date-time
          type: string
        eligibleStatusChanges:
          nullable: false
          description: Eligible subscription statuses for restaurant.
          type: array
          items:
            $ref: '#/components/schemas/MarketingSubscriptionEligibleStatusChange'
        subscriptionStatusChangeLogs:
          description: Logs of the subscription status changes.
          type: array
          items:
            $ref: '#/components/schemas/MarketingSubscriptionStatusChangeLogs'
      example:
        campaignId: cheekyTuesday
        restaurantId: '324567'
        restaurant:
          id: '324567'
          name: pizza burger house
        status: subscribed
        changedBy: InternalUser
        reason: Need to stop the campaign
        changedAt: '2021-02-12T00:00:00.0000000+00:00'
        subscriptionStatusChangeLogs:
          - changedAt: '2021-02-12T00:00:00.0000000+00:00'
            changedBy: InternalUser
            reason: Need to stop the campaign
            status: unsubscribed
            jobId: test123
            productEligibilitySelection:
              qualifyingProducts:
                - name: Burger
                - name: Pizza
                  variationName: Large
              discountProducts:
                - name: Free Drink
        eligibleStatusChanges:
          - fromDateTime: '2021-01-12T00:00:00.0000000+00:00'
            toDateTime: '2021-02-12T00:00:00.0000000+00:00'
            status: optOutRequested
    MarketingSubscriptionBatch:
      description: Subscription Batch details.
      additionalProperties: false
      type: object
      title: SubscriptionBatch
      properties:
        id:
          nullable: false
          description: Batch Id.
          type: string
        batchType:
          nullable: false
          description: Batch operation type.
          $ref: '#/components/schemas/MarketingSubscriptionBatchType'
        status:
          nullable: false
          description: Batch status.
          $ref: '#/components/schemas/MarketingBatchStatus'
        lastModifiedDateTime:
          nullable: false
          description: Last modification timestamp.
          format: date-time
          type: string
        errors:
          nullable: true
          description: Bulk operation errors.
          type: array
          items:
            $ref: '#/components/schemas/MarketingSubscriptionBatchError'
      example:
        id: test123
        batchType: subscribe
        status: failed
        lastModifiedDateTime: '2021-03-12T00:00:00.0000000+00:00'
        errors:
          - restaurantId: '324567'
            error: Unable to subscribe
    MarketingSubscriptionBatchEnvelope:
      description: Restaurant Subscription Batches Response.
      additionalProperties: false
      type: object
      title: SubscriptionBatchEnvelope
      properties:
        paging:
          $ref: '#/components/schemas/PagingAfterCursor'
        data:
          nullable: false
          description: Array of subscription batches
          type: array
          items:
            $ref: '#/components/schemas/MarketingSubscriptionBatch'
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
        data:
          - id: test123
            batchType: subscribe
            status: scheduled
            lastModifiedDateTime: '2021-03-12T00:00:00.0000000+00:00'
            errors:
              - restaurantId: '324567'
                error: Unable to subscribe
    MarketingSubscriptionBatchError:
      description: Batch error details.
      additionalProperties: false
      type: object
      title: SubscriptionBatchError
      properties:
        restaurantId:
          nullable: false
          description: Restaurant Id.
          type: string
        error:
          nullable: false
          description: Error details.
          type: string
      example:
        restaurantId: '324567'
        error: Unable to subscribe
    MarketingSubscriptionBatchType:
      description: Batch type
      enum:
        - subscribe
        - unsubscribe
      type: string
    MarketingSubscriptionDateRestrictions:
      description: Restrictions that define how restaurant can be subscribed and unsubscribed from a campaign
      additionalProperties: false
      type: object
      title: SubscriptionDateRestrictions
      properties:
        subscribePeriod:
          nullable: true
          description: Period of time during which restaurants can subscribe to the campaign. If period is null a restaurant can subscribe anytime.
          $ref: '#/components/schemas/MarketingDateTimePeriod'
        allowUnsubscribe:
          description: Indicates whether unsubscribe is allowed
          type: boolean
        unsubscribePeriod:
          nullable: true
          description: Period of time during which restaurants can unsubscribe from the campaign. If period is null a restaurant can unsubscribe anytime.
          $ref: '#/components/schemas/MarketingDateTimePeriod'
    MarketingSubscriptionEligibleStatusChange:
      type: object
      description: Eligible status changes for the campaign
      properties:
        from:
          format: date-time
          description: Date and time when status change become eligible
          type: string
        to:
          format: date-time
          description: Date and time when status change become non-eligible
          type: string
        status:
          description: Eligible status.
          $ref: '#/components/schemas/MarketingSubscriptionStatus'
      example:
        from: '2021-01-12T00:00:00.0000000+00:00'
        to: '2021-02-12T00:00:00.0000000+00:00'
        status: optOutRequested
    MarketingSubscriptionEnvelope:
      description: Restaurant Subscriptions Response.
      additionalProperties: false
      type: object
      title: SubscriptionEnvelope
      properties:
        data:
          nullable: false
          description: Subscription details
          $ref: '#/components/schemas/MarketingSubscription'
      example:
        data:
          campaignId: cheekyTuesday
          restaurantId: '324567'
          restaurant:
            id: '324567'
            name: pizza burger house
          status: subscribed
          changedBy: InternalUser
          reason: Need to stop the campaign
          changedAt: '2021-02-12T00:00:00.0000000+00:00'
          subscriptionStatusChangeLogs:
            - changedAt: '2021-02-12T00:00:00.0000000+00:00'
              changedBy: InternalUser
              reason: Need to stop the campaign
              status: unsubscribed
              jobId: test123
    MarketingSubscriptionListEnvelope:
      description: Restaurant Subscriptions Response.
      additionalProperties: false
      type: object
      title: SubscriptionListEnvelope
      properties:
        paging:
          $ref: '#/components/schemas/PagingAfterCursor'
        data:
          nullable: false
          description: Array of subscriptions
          type: array
          items:
            $ref: '#/components/schemas/MarketingSubscription'
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
        data:
          - campaignId: cheekyTuesday
            restaurantId: '324567'
            restaurant:
              id: '324567'
              name: pizza burger house
            status: subscribed
            changedBy: InternalUser
            reason: Need to stop the campaign
            changedAt: '2021-02-12T00:00:00.0000000+00:00'
            subscriptionStatusChangeLogs:
              - changedAt: '2021-02-12T00:00:00.0000000+00:00'
                changedBy: InternalUser
                reason: Need to stop the campaign
                status: unsubscribed
                jobId: test123
    MarketingSubscriptionRules:
      description: Rules that define how a restaurant should be subscribed and unsubscribed from a campaign
      additionalProperties: false
      type: object
      title: SubscriptionRules
      properties:
        partnerSubscriptionEnabled:
          nullable: false
          default: false
          description: Whether Partner can manage campaign subscription via self-service tools.
          type: boolean
        minimumSubscribePeriod:
          nullable: true
          description: Period of time during which a restaurant cannot opt out from campaign. The period starts from when the restaurant is subscribed to the campaign.
          format: timespan
          type: string
        unsubscribeNoticePeriod:
          nullable: true
          description: Period of time from when opt out is requested to the when the restaurant is unsubscribed. Notice period includes cancellation period.
          format: timespan
          type: string
        cancelOptOutRequestPeriod:
          nullable: true
          description: Period of time during which a restaurant can cancel the opt-out and remain subscribed to the campaign. Cancellation period starts from when opt out is requested.
          format: timespan
          type: string
        unsubscribeOfferActiveDays:
          nullable: true
          description: Period of time during which the campaign offers remain active after the restaurant is unsubscribed from the campaign.
          format: integer
          minimum: 1
          type: number
        minimumResubscribePeriod:
          nullable: true
          description: Period of time during which a restaurant cannot opt back in. The period starts from when the restaurant is unsubscribed from the campaign.
          format: timespan
          type: string
      example:
        partnerSubscriptionEnabled: true
        minimumSubscribePeriod: 60.00:00:00
        unsubscribeNoticePeriod: 30.00:00:00
        cancelOptOutRequestPeriod: 7.00:00:00
        unsubscribeOfferActiveDays: 90
        minimumResubscribePeriod: 90.00:00:00
    MarketingSubscriptionStatus:
      description: Status of the subscription
      enum:
        - inactive
        - subscribed
        - optOutRequested
        - optOutConfirmed
        - unsubscribed
        - eligible
        - ineligible
      type: string
    MarketingSubscriptionStatusChangeLogs:
      description: Logs of the subscription status changes.
      additionalProperties: false
      type: object
      title: SubscriptionStatusChangeLogs
      properties:
        changedAt:
          nullable: false
          description: Subscription status change timestamp.
          format: date-time
          type: string
        changedBy:
          nullable: false
          description: Agent who changed status.
          type: string
        reason:
          nullable: true
          description: Reason why the status changed.
          type: string
        status:
          description: Subscription status
          $ref: '#/components/schemas/MarketingSubscriptionStatus'
        jobId:
          nullable: true
          description: Id of the job.
          type: string
        productEligibilitySelection:
          nullable: true
          description: Product eligibility selection for the subscription.
          $ref: '#/components/schemas/MarketingProductEligibilitySelection'
      example:
        changedAt: '2021-02-12T00:00:00.0000000+00:00'
        changedBy: InternalUser
        reason: Need to stop the campaign
        status: unsubscribed
        jobId: test123
        productEligibilitySelection:
          qualifyingProducts:
            - name: Burger
            - name: Pizza
              variationName: Large
          discountProducts:
            - name: Free Drink
    MarketingSubscriptionSummary:
      description: Subscription information.
      additionalProperties: false
      type: object
      title: SubscriptionSummary
      properties:
        topBrands:
          nullable: false
          minItems: 0
          maxItems: 10
          description: Top campaign brands
          type: array
          items:
            type: string
        total:
          nullable: false
          description: Total number of the subscriptions for the campaign
          format: integer
          minimum: 0
          type: number
        lastUpdated:
          nullable: true
          description: Timestamp of the last subscribe or unsubscribe. Value is null when there was no subscriptions yet.
          format: date-time
          type: string
      example:
        topBrands: []
        total: 123
        lastUpdated: '2021-02-12T00:00:00.0000000+00:00'
    MarketingTimeSpanPeriod:
      description: Time running period.
      additionalProperties: false
      type: object
      title: TimeSpanPeriod
      properties:
        from:
          nullable: false
          description: Start time.
          format: timespan
          type: string
        to:
          nullable: false
          description: End time.
          format: timespan
          type: string
      example:
        from: '00:10:00'
        to: '12:10:00'
    MarketingTotalOrder:
      description: TotalOrder offer template. Amount or percent discount applied to the order if qualifying criteria are met.
      additionalProperties: false
      type: object
      title: TotalOrder
      properties:
        discount:
          description: Discount details.
          $ref: '#/components/schemas/MarketingDiscount'
      example:
        discount:
          discountAmount:
            value: 150
    MarketingTranslation:
      description: translation of Campaign Offer
      additionalProperties: false
      required:
        - language
      type: object
      title: Translation
      properties:
        language:
          nullable: false
          description: ISO 639-1 language code (e.g., "en", "nl")
          type: string
        description:
          type: string
          nullable: true
        shortDescription:
          nullable: true
          type: string
    Marketplaceranking400MarketplaceRankingErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Invalid Request
          type: string
        error:
          description: Error Title
          example: Invalid Request
          type: string
      type: object
    Marketplaceranking401MarketplaceRankingErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Unauthorized Request
          type: string
        error:
          description: Error Title
          example: Unauthorized Request
          type: string
      type: object
    Marketplaceranking404MarketplaceRankingErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Marketplace Ranking Settings not found
          type: string
        error:
          description: Error Title
          example: Marketplace Ranking Settings not found
          type: string
      type: object
    Marketplaceranking500MarketplaceRankingErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Internal Server Error
          type: string
        error:
          description: Error Title
          example: Internal Server Error
          type: string
      type: object
    MarketplacerankingMarketplaceRank:
      description: The marketplace rank object used to build a Ranking for a given delivery zone.
      properties:
        enabled:
          description: Status of the corresponding rank
          type: boolean
        rank:
          format: integer
          description: Rank position of Average Assignable Job Load
          example: -20
          type: number
        aajl:
          format: integer
          description: Average Assignable Job Load
          example: 1
          type: number
      type: object
    MarketplacerankingMarketplaceRankingSettings:
      description: The marketplace ranking settings object for all endpoints.
      properties:
        ranks:
          maxItems: 9
          type: array
          minItems: 9
          items:
            $ref: '#/components/schemas/MarketplacerankingMarketplaceRank'
          description: Array of marketplace rank objects used to build a Ranking for a given delivery zone.
        marketplaceRankingStatus:
          description: Marketplace On/Off Status
          type: boolean
        id:
          description: Delivery Zone Id
          example: fc71ee27-608f-4223-b2ea-2774eb83c6b4
          type: string
      type: object
    MarketplacerankingMarketplaceRankingSettingsList:
      description: Marketplace Ranking Settings List
      properties:
        marketplaceRankSettingsList:
          maxItems: 3
          type: array
          minItems: 3
          items:
            $ref: '#/components/schemas/MarketplacerankingMarketplaceRankingSettings'
          description: List of Marketplace Ranking Settings
      type: object
    MembershipsAcquiredByAmazonPrimeConnection:
      description: Describing membership that has been acquired by amazon prime connection
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: How the membership has been acquired
          enum:
            - amazonPrimeConnection
    MembershipsAcquiredByGifted:
      description: Describing membership that has been gifted to the user
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: How the membership has been acquired
          enum:
            - gifted
        reference:
          nullable: false
          type: string
          description: Reference for the membership acquisition method (this will be a globally unique identifier)
          example: 918e5ee3-6896-4990-bd9c-6805747e800e
    MembershipsAcquiredByPartnerOrder:
      description: Describing membership that has been acquired by partner order
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: How the membership has been acquired
          enum:
            - partnerOrder
        reference:
          nullable: false
          type: string
          description: Reference for the membership acquisition method (order id for example)
          example: order123
    MembershipsAllowedActions:
      description: Actions allowed to the customer over the selected membership
      type: string
      format: enum
      enum:
        - apply
        - cancel
        - purchase
        - connectAmazonPrime
        - purchaseExtension
    MembershipsBenefitInfo:
      type: object
      properties:
        type:
          description: Type of the benefit.
          nullable: false
          type: string
          enum:
            - allPayments
            - allRestaurants
            - membersOnlyVouchers
            - partnerExclusiveOffers
            - unlimitedFreeDelivery
            - unlimitedOrders
        title:
          description: Title of the benefit.
          nullable: false
          type: string
        subtitle:
          description: Subtitle of the benefit.
          nullable: true
          type: string
        icon:
          $ref: '#/components/schemas/MembershipsIconInfo'
      required:
        - type
        - title
        - icon
    MembershipsBilling:
      description: Billing plan details including billing type
      additionalProperties: true
      type: object
      properties:
        type:
          nullable: false
          description: Billing type enum
          $ref: '#/components/schemas/MembershipsBillingType'
      required:
        - type
    MembershipsBillingType:
      description: Available billing plan types
      type: string
      format: enum
      enum:
        - oneTimePurchase
        - subscription
        - thirdParty
    MembershipsBrandingPlanBenefit:
      description: Branding plan benefit details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit type
          example: branding
        brand:
          type: string
          nullable: false
          description: Brand associated with the branding benefit
          enum:
            - jetPlusBasic
            - none
        restrictions:
          nullable: false
          type: array
          description: List of restrictions that apply to the benefit
          example: []
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsPartnerBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsOrderValueBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsDeliveryFeeBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsUsageLimitBenefitRestriction'
    MembershipsCheckoutLocation:
      description: Checkout location details.
      type: string
      enum:
        - deliveryOptions
        - membership
    MembershipsCheckoutScreen:
      description: Presentation details for the checkout screen.
      type: object
      properties:
        location:
          nullable: true
          description: Checkout location details.
          $ref: '#/components/schemas/MembershipsCheckoutLocation'
        savingsThreshold:
          nullable: true
          description: Savings threshold in minor currency units (e.g. cents/pence) that controls when the savings message is shown to the user
          type: number
          minimum: 0
          example: 100000
    MembershipsConsumerMembership:
      description: Details of memberships
      type: object
      properties:
        plan:
          nullable: false
          description: Consumer membership plan details along with timelines
          $ref: '#/components/schemas/MembershipsConsumerMembershipPlan'
        statuses:
          nullable: false
          description: Details about membership status for the consumer
          type: array
          example: []
          items:
            $ref: '#/components/schemas/MembershipsConsumerMembershipStatus'
    MembershipsConsumerMembershipPlan:
      description: Consumer membership plan details
      type: object
      title: Plan
      properties:
        planId:
          type: string
          nullable: false
          description: Unique identifier of the plan across markets
          example: UK_DELIVERY_PASS_90DAYS
        name:
          type: string
          nullable: false
          description: Name of the plan
          example: Basic Plan
        consumptionModel:
          $ref: '#/components/schemas/MembershipsPlanConsumptionModel'
        type:
          $ref: '#/components/schemas/MembershipsPlanTypes'
        timeline:
          $ref: '#/components/schemas/MembershipsPlanTimeline'
        billing:
          $ref: '#/components/schemas/MembershipsBilling'
        trial:
          $ref: '#/components/schemas/MembershipsTrial'
    MembershipsConsumerMembershipStatus:
      description: Consumer membership status details
      type: object
      properties:
        membershipId:
          nullable: false
          type: string
          description: The id of the membership.
          example: fac3c618-f6c7-4a17-9a29-edace26d0b95
        timeline:
          nullable: false
          description: Timeline of the consumer membership in terms of start, end and cancellation dates
          $ref: '#/components/schemas/MembershipsConsumerStatusTimeline'
        acquired:
          nullable: false
          description: Details about how the membership has been acquired
          type: object
          oneOf:
            - $ref: '#/components/schemas/MembershipsAcquiredByPartnerOrder'
            - $ref: '#/components/schemas/MembershipsAcquiredByAmazonPrimeConnection'
            - $ref: '#/components/schemas/MembershipsAcquiredByGifted'
        trial:
          nullable: true
          description: Details about the membership trial
          $ref: '#/components/schemas/MembershipsMembershipStatusTrial'
    MembershipsConsumerMembershipsResponse:
      description: Display list of memberships along with the allowed actions per each membership
      type: object
      properties:
        currency:
          nullable: false
          type: string
          description: Currency code
          example: GBP
        memberships:
          nullable: false
          description: List of memberships the consumer is eligible for
          type: array
          example: []
          items:
            $ref: '#/components/schemas/MembershipsMembership'
    MembershipsConsumerMembershipsStatusResponse:
      description: Displays a list of the consumer's memberships along with their statuses.
      type: object
      properties:
        data:
          description: List of consumer memberships
          type: array
          items:
            type: object
            properties:
              userId:
                nullable: false
                type: string
                description: User Id
                example: '123456'
              currency:
                nullable: false
                type: string
                description: Currency code
                example: GBP
              memberships:
                nullable: false
                description: List of memberships acquired by the consumer
                type: array
                example: []
                items:
                  $ref: '#/components/schemas/MembershipsConsumerMembership'
    MembershipsConsumerStatusTimeline:
      description: Timeline of the consumer membership, including start, expiry, and cancellation dates.
      type: object
      properties:
        startDate:
          nullable: false
          description: The start date of the consumer membership
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
        expiryDate:
          nullable: false
          description: The expiry date of the consumer membership
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
        cancelledDate:
          nullable: true
          description: The cancellation date of the consumer membership
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
        nextBillingDate:
          nullable: true
          description: The next billing date of the consumer membership
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
    MembershipsConsumerStatusTrial:
      description: Trial of the consumer membership, including current state.
      type: object
      properties:
        state:
          type: string
          description: The current state of the trial
          nullable: false
          enum:
            - available
            - active
            - used
    MembershipsDeliveryFeeBenefitRestriction:
      description: Delivery fee benefit restrictions' details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit restriction type
          enum:
            - deliveryFee
          example: deliveryFee
        displayText:
          nullable: true
          type: string
          description: Benefit restriction display text
          example: Maximum delivery fee discounted is £25.00.
        maximumAmount:
          nullable: false
          type: number
          description: Maximum amount in minor currency (e.g. cents)
          example: 100
    MembershipsGetBenefitSummaryResponse:
      description: Benefit summary response for a user's specific benefit.
      type: object
      properties:
        title:
          description: Title of the benefit.
          nullable: false
          type: string
        icon:
          $ref: '#/components/schemas/MembershipsIconInfo'
        instructions:
          description: Instructions for using the benefit.
          nullable: false
          type: string
        usageInstructions:
          description: List of instructions about how a benefit can be used.
          nullable: false
          type: object
          properties:
            title:
              description: Title of the usage instructions section.
              nullable: false
              type: string
            items:
              description: List of usage instruction items.
              nullable: false
              type: array
              items:
                type: string
          required:
            - title
            - items
        summary:
          description: Summary of the benefit usage for a consumer.
          nullable: false
          type: object
          properties:
            title:
              description: Title of the summary section.
              nullable: false
              type: string
            items:
              description: List of summary items showing usage breakdown.
              nullable: false
              type: array
              items:
                type: object
                properties:
                  copy:
                    description: Label for the summary item.
                    nullable: false
                    type: string
                  value:
                    description: Value of the summary item.
                    nullable: false
                    type: string
                required:
                  - copy
                  - value
          required:
            - title
            - items
        disclaimer:
          description: Disclaimer related to the benefit.
          nullable: false
          type: string
        faq:
          description: Frequently asked questions about the benefit.
          nullable: false
          type: object
          properties:
            title:
              description: Title of the FAQ section.
              nullable: false
              type: string
            questions:
              description: List of questions and answers.
              nullable: false
              type: array
              items:
                type: object
                properties:
                  id:
                    description: Identifier of the question.
                    nullable: true
                    type: string
                  topic:
                    description: Topic of the question.
                    nullable: false
                    type: string
                  content:
                    description: Content of the question.
                    nullable: false
                    type: string
                required:
                  - topic
                  - content
          required:
            - title
            - questions
      required:
        - title
        - icon
        - instructions
        - usageInstructions
        - summary
        - disclaimer
        - faq
      example:
        title: Just Eat+ Credit
        icon:
          url: https://www.just-eat.co.uk/jetplus-account-credit.svg
          name: TitleLogo
          id: jetplus-account-credit
        instructions: 'With Just Eat+, you get £10 in credit every month. Here''s how it works:'
        usageInstructions:
          title: 'Here''s how it works:'
          items:
            - You can use up to £5 of your credit daily
            - Unused credit expires, so make sure to use it within a month
        summary:
          title: 'This month''s summary:'
          items:
            - copy: 'Monthly credit:'
              value: £10.00
            - copy: 'Used:'
              value: £5.00
            - copy: 'Remaining:'
              value: £5.00
        disclaimer: 'Credit refreshes monthly. Next refresh: 12 Aug 2025'
        faq:
          title: FAQs
          questions:
            - id: faq-credit-id
              topic: What can I use my credit for?
              content: Your credit is valid at stores and restaurants on Just Eat. It goes towards your order total, including basket items and delivery fees. Just Eat+ credit applies automatically at checkout, and you can use up to £5 of your monthly credit per day. Credit can't be used with cash payments.
    MembershipsGetConsumerMembershipPlanDetailsResponse:
      description: Consumer membership plan details.
      type: object
      properties:
        membership:
          description: Membership plan.
          type: object
          properties:
            membershipId:
              description: Unique identifier for the membership.
              type: string
            title:
              description: Title of the membership plan.
              type: string
            type:
              description: Type of the membership plan.
              type: string
            status:
              description: Status of the membership plan.
              type: string
              enum:
                - active
                - cancellationRequested
                - cancelled
            endDate:
              description: The ISO-8601 datetime end date of the membership plan.
              format: date-time
              type: string
            currency:
              description: Currency of the payment.
              type: string
            minimumOrderPrice:
              description: Minimum order price for the membership plan.
              type: integer
            billingInfo:
              description: Billing information for the membership plan.
              type: object
              properties:
                paymentDetails:
                  description: Payment details for the membership plan.
                  type: object
                  properties:
                    amount:
                      description: Amount to be paid.
                      type: string
                    period:
                      description: ISO 8601 duration for billing period.
                      type: string
                    isRecurring:
                      description: Indicates if the payment is recurring.
                      type: boolean
                    lastPaymentStatus:
                      description: Status of the last payment.
                      type: string
                      enum:
                        - pending
                        - succeeded
                        - failed
                    paymentFailureMessage:
                      description: Message displayed when payment fails.
                      type: string
                  required:
                    - amount
                    - period
                    - isRecurring
                    - lastPaymentStatus
                    - paymentFailureMessage
                cardInfo:
                  description: Card information for the membership plan.
                  type: object
                  properties:
                    cardIcon:
                      $ref: '#/components/schemas/MembershipsIconInfo'
                    cardType:
                      description: Type of the card.
                      type: string
                    lastFourDigits:
                      description: Last four digits of the card number.
                      type: string
                  required:
                    - cardIcon
                    - cardType
                    - lastFourDigits
                presentation:
                  description: Presentation details for the membership plan.
                  type: object
                  properties:
                    title:
                      description: Title of the membership plan.
                      type: string
                    planDescription:
                      description: Description of the membership plan.
                      type: string
                  required:
                    - title
                    - planDescription
              required:
                - presentation
            cancellation:
              description: Cancellation information for the membership plan.
              type: object
              nullable: true
              oneOf:
                - type: object
                  description: Simple cancellation button.
                  properties:
                    preCancellationButtonText:
                      description: Text for the pre-cancellation button.
                      type: string
                  required:
                    - preCancellationButtonText
                  additionalProperties: false
                - $ref: '#/components/schemas/MembershipsGetConsumerMembershipPlanFullCancellationDetailsResponse/properties/cancellation'
            links:
              description: Links related to the membership plan.
              type: object
              properties:
                termsAndConditions:
                  description: Terms and conditions link.
                  type: object
                  properties:
                    url:
                      description: URL of the terms and conditions.
                      type: string
                    text:
                      description: Text for the terms and conditions.
                      type: string
                  required:
                    - url
                    - text
                faqsAndHelp:
                  description: FAQs and help link.
                  type: object
                  properties:
                    url:
                      description: URL of the FAQs and help.
                      type: string
                    text:
                      description: Text for the FAQs and help.
                      type: string
                  required:
                    - url
                    - text
              required:
                - faqsAndHelp
            benefits:
              description: Benefits of the membership plan.
              type: array
              items:
                type: object
                properties:
                  type:
                    description: Type of the benefit.
                    type: string
                  title:
                    description: Title of the benefit.
                    type: string
                  subtitle:
                    description: Subtitle of the benefit.
                    type: string
                  icon:
                    $ref: '#/components/schemas/MembershipsIconInfo'
                required:
                  - type
                  - title
                  - subtitle
                  - icon
            activeBenefits:
              description: Active benefits of the membership plan.
              type: array
              items:
                type: object
                properties:
                  type:
                    description: Type of benefit.
                    type: string
                  header:
                    description: Display header of the benefit.
                    type: string
                  body:
                    description: Display body of the benefit.
                    type: string
                  icon:
                    $ref: '#/components/schemas/MembershipsIconInfo'
                  action:
                    description: Action associated with the benefit.
                    type: object
                    properties:
                      type:
                        description: Type of action.
                        type: string
                      destination:
                        description: Destination of the action.
                        type: string
                      animations:
                        description: List of animations to display.
                        type: array
                        items:
                          type: string
                required:
                  - type
                  - body
                  - icon
            isTrial:
              description: Indicates if the membership plan is a trial.
              type: boolean
          required:
            - benefits
            - isTrial
            - membershipId
            - status
            - type
        screenTitle:
          description: Title of the screen.
          type: object
          properties:
            title:
              description: Title text.
              type: string
            icon:
              $ref: '#/components/schemas/MembershipsIconInfo'
              nullable: true
          required:
            - title
      required:
        - membership
      example:
        membership:
          membershipId: e6263f9d-9b70-4a9d-9c3c-9502cd148cb2
          title: My subscription
          type: trial
          status: active
          endDate: '2025-04-09T12:00:00.000Z'
          currency: GBP
          minimumOrderPrice: 1500
          billingInfo:
            paymentDetails:
              amount: '599'
              period: P1M
              isRecurring: true
              lastPaymentStatus: pending
              paymentFailureMessage: We couldn't process your payment. Please check your card details - we'll try again within the next X days
            cardInfo:
              cardIcon:
                url: https://www.just-eat.co.uk/mastercard.svg
                name: icon-mastercard
                id: mastercard
              cardType: Mastercard
              lastFourDigits: '5395'
            presentation:
              title: My payment
              planDescription: Free trial ends 4 April 2025, then £1.99 per month
          links:
            termsAndConditions:
              url: https://www.just-eat.co.uk/terms-and-conditions
              text: Terms and Conditions
            faqsAndHelp:
              url: https://www.just-eat.co.uk/help
              text: FAQs and Help
          benefits:
            - type: unlimitedFreeDelivery
              title: Free delivery
              subtitle: from your favourites when you spend £15
              icon:
                url: https://www.just-eat.co.uk/free-delivery.svg
                name: icon-free-delivery
                id: free-delivery
            - type: exclusiveOffers
              title: Exclusive offers
              subtitle: from best-loved brands
              icon:
                url: https://www.just-eat.co.uk/exclusive-offers.svg
                name: icon-exclusive-offers
                id: exclusive-offers
            - type: membersVouchers
              title: Members-only vouchers
              subtitle: you won't find anywhere else
              icon:
                url: https://www.just-eat.co.uk/members-vouchers.svg
                name: icon-members-vouchers
                id: members-vouchers
          activeBenefits:
            - type: jetplusupfrontcredit
              header: £10.00
              body: Just Eat+ Credit
              icon:
                url: https://www.just-eat.co.uk/jetplus-wallet.svg
                name: JetPlus Wallet
                id: jetplus-wallet
              action:
                type: click
                destination: CREDIT_INFO
                animations:
                  - confetti
          isTrial: true
    MembershipsGetConsumerMembershipPlanFullCancellationDetailsResponse:
      description: Consumer membership plan full cancellation details.
      type: object
      properties:
        cancellation:
          type: object
          properties:
            preCancellationTitle:
              description: Title for the pre-cancellation screen.
              type: string
            preCancellationText:
              description: Text for the pre-cancellation screen.
              type: string
            preCancellationButtonText:
              description: Text for the pre-cancellation button.
              type: string
            postCancellationTitle:
              description: Title for the post-cancellation screen.
              type: string
            postCancellationText:
              description: Text for the post-cancellation screen.
              type: string
            postCancellationButtonText:
              description: Text for the post-cancellation button.
              type: string
            contactUsLink:
              description: Contact us link URL.
              type: string
              format: uri
            isImmediateCancellation:
              description: Indicates if the cancellation is immediate.
              type: boolean
          required:
            - contactUsLink
            - isImmediateCancellation
            - postCancellationButtonText
            - postCancellationText
            - postCancellationTitle
            - preCancellationButtonText
            - preCancellationText
            - preCancellationTitle
          additionalProperties: false
        benefits:
          description: List of benefits.
          nullable: false
          type: array
          items:
            $ref: '#/components/schemas/MembershipsBenefitInfo'
      required:
        - benefits
      additionalProperties: false
    MembershipsGetConsumerMembershipSavingsBreakdownResponse:
      description: Consumer membership savings breakdown details.
      type: object
      properties:
        data:
          description: Data object containing the savings breakdown details.
          type: object
          properties:
            header:
              description: Header information for the savings breakdown.
              type: object
              properties:
                title:
                  description: Title for the savings breakdown.
                  type: string
                subtitle:
                  description: Subtitle for the savings breakdown.
                  type: string
                accessibilityText:
                  description: Accessibility text for the savings breakdown.
                  type: string
              required:
                - title
                - subtitle
                - accessibilityText
            heroSection:
              description: Hero section of the savings breakdown.
              type: object
              properties:
                animatedIcon:
                  description: Animated icon for the hero section.
                  type: object
                  properties:
                    url:
                      description: URL of the animated icon.
                      type: string
                    name:
                      description: Name of the animated icon.
                      type: string
                    id:
                      description: ID of the animated icon.
                      type: string
                  required:
                    - url
                    - name
                    - id
                staticIcon:
                  description: Static icon for the hero section.
                  type: object
                  properties:
                    url:
                      description: URL of the static icon.
                      type: string
                    name:
                      description: Name of the static icon.
                      type: string
                    id:
                      description: ID of the static icon.
                      type: string
                  required:
                    - url
                    - name
                    - id
                text:
                  description: Localised total savings amount, including currency symbol. Currency is determined by the tenant.
                  type: string
                  nullable: true
              required:
                - animatedIcon
                - staticIcon
            savingsList:
              description: List of savings details.
              type: array
              items:
                type: object
                properties:
                  id:
                    description: Identifies the savings type.
                    type: string
                    enum:
                      - deliverySavings
                      - jetPlusOffersSavings
                      - jetPlusUpfrontCreditSavings
                  key:
                    description: Localised display label for the savings type.
                    type: string
                  displayValue:
                    description: Localised formatted monetary amount saved, including currency symbol. Currency is determined by the tenant.
                    type: string
                  icon:
                    description: Icon details for the savings item.
                    type: object
                    properties:
                      url:
                        description: URL of the icon.
                        type: string
                      name:
                        description: Name of the icon.
                        type: string
                      id:
                        description: ID of the icon.
                        type: string
                    required:
                      - url
                      - name
                      - id
                required:
                  - id
                  - key
                  - displayValue
                  - icon
            footer:
              description: Footer information for the savings breakdown.
              type: object
              properties:
                text:
                  description: Localised total savings amount, including currency symbol. Currency is determined by the tenant.
                  type: string
                  nullable: true
          required:
            - header
            - heroSection
            - savingsList
            - footer
      required:
        - data
      example:
        data:
          header:
            title: Your savings with Just Eat+
            subtitle: since 12 April 2025
            accessibilityText: You have saved £22.29 with Just Eat+ since 12 April 2025
          heroSection:
            animatedIcon:
              url: https://www.just-eat.co.uk/savings-animated.gif
              name: icon-savings-animated
              id: jetplus-savings-animated
            staticIcon:
              url: https://www.just-eat.co.uk/savings.svg
              name: icon-savings
              id: jetplus-savings
            text: £22.29
          savingsList:
            - id: deliverySavings
              key: Delivery Fee Savings
              displayValue: £9.45
              icon:
                url: https://www.just-eat.co.uk/free-delivery.svg
                name: icon-free-delivery
                id: jetplus-freedelivery
            - id: jetPlusOffersSavings
              key: JET+ Offers Savings
              displayValue: £12.84
              icon:
                url: https://www.just-eat.co.uk/exclusive-offers.svg
                name: icon-exclusive-offers
                id: jetplus-exclusive-offers-1
          footer:
            text: 'Total: £22.29'
    MembershipsGetMembershipAfterOrderUpsellContentResponse:
      description: Membership content for after order upsell.
      type: object
      properties:
        banner:
          description: Content to be shown in the banner.
          nullable: true
          type: object
          properties:
            header:
              description: Header text for the banner.
              nullable: false
              type: string
            body:
              description: Body content for the banner.
              nullable: false
              type: string
            icon:
              $ref: '#/components/schemas/MembershipsIconInfo'
          required:
            - header
            - body
            - icon
        information:
          nullable: true
          type: object
          properties:
            text:
              description: Remaining usage information
              nullable: false
              type: string
            icon:
              $ref: '#/components/schemas/MembershipsIconInfo'
          required:
            - text
            - icon
      example:
        banner:
          header: Your £10 Credit is ready to use!
          icon:
            id: jetplus-account-credit
            name: Jet Plus Credit
            url: https://something
          body: A max of £5 Just Eat+ credit will be automatically applied on your next order
        information:
          text: You’ve got 2/5 free deliveries remaining.
          icon:
            id: bike
            name: Delivery Bike
            url: https://www.just-eat.co.uk/bike.svg
    MembershipsGetMembershipPlanDetailsForUpsellResponse:
      description: Membership plan details for upsell.
      type: object
      properties:
        membership:
          description: Membership plan.
          nullable: false
          type: object
          properties:
            title:
              description: Title of the membership plan.
              nullable: false
              type: string
            icon:
              $ref: '#/components/schemas/MembershipsIconInfo'
            intro:
              description: Introductory text for the membership plan.
              nullable: false
              type: string
            benefits:
              description: List of benefits associated with the membership plan.
              nullable: false
              type: object
              properties:
                title:
                  description: Title of the benefits section.
                  nullable: true
                  type: string
                list:
                  description: List of benefits.
                  nullable: false
                  type: array
                  items:
                    $ref: '#/components/schemas/MembershipsBenefitInfo'
              required:
                - title
                - list
          required:
            - title
            - icon
            - intro
            - benefits
        faq:
          description: Frequently asked questions.
          nullable: true
          type: object
          properties:
            id:
              description: Identifier of the question.
              type: string
            title:
              description: Title of the FAQ section.
              type: string
            questions:
              description: List of questions and answers.
              type: array
              items:
                type: object
                properties:
                  topic:
                    description: Topic of the question.
                    nullable: false
                    type: string
                  content:
                    description: Content of the question.
                    nullable: false
                    type: string
                required:
                  - topic
                  - content
          required:
            - title
            - questions
        terms:
          description: Terms and conditions.
          nullable: true
          type: object
          properties:
            text:
              description: Text of the terms and conditions.
              nullable: false
              type: string
            link:
              description: Link to the terms and conditions.
              nullable: true
              type: object
              properties:
                text:
                  description: Text of the link.
                  nullable: false
                  type: string
                url:
                  description: URL of the link.
                  nullable: false
                  type: string
              required:
                - text
                - url
          required:
            - text
            - link
        callToAction:
          description: Call to action.
          nullable: true
          type: object
          properties:
            text:
              description: Text of the call to action.
              nullable: false
              type: string
          required:
            - text
      required:
        - membership
        - faq
        - terms
        - callToAction
      example:
        membership:
          title: Unlock with Just Eat+
          icon:
            url: https://www.notfound.com
            name: TitleLogo
            id: jetplusHouse
          intro: No subscription required, no automatic renewals. After 90 days, the choice to buy another 90 days of free delivery is up to you! Upgrade to Just Eat+ at checkout.
          benefits:
            title: 'Start saving with £0 delivery fees on:'
            list:
              - type: allRestaurants
                title: From almost every shop and restaurant
                icon:
                  url: https://www.just-eat.co.uk/all-restaurants.svg
                  name: restaurantIcon
                  id: restaurantIcon
              - type: allPayments
                title: All payment methods
                subtitle: except cash
                icon:
                  url: https://www.just-eat.co.uk/all-payments.svg
                  name: appSuccessIcon
                  id: appSuccesIcon
              - type: unlimitedOrders
                title: Unlimited orders
                subtitle: when you spend £15
                icon:
                  url: https://www.just-eat.co.uk/unlimited-orders.svg
                  name: thumbsUpIcon
                  id: thumbUpIcon
        faq:
          title: FAQ's
          questions:
            - topic: Which Just Eat+ option is right for me?
              content: depends if you want to subscribe or do a one time purchase.
            - topic: Can I cancel my Just Eat+ membership?
              content: on the cancelation page.
            - topic: What payment methods can I use?
              content: everything except cash.
        terms:
          text: You can cancel Just Eat+ anytime. By joining, you agree to the Just Eat+ {link}, a free trial, and £1.99/month after. Cancel 48 hours before the trial ends to avoid charges.
          link:
            text: terms
            url: https://just-eat.co.uk/terms
        callToAction:
          text: Add for £5.99
    MembershipsIconInfo:
      type: object
      description: Icon associated with the benefit.
      properties:
        name:
          description: Name of the icon.
          nullable: false
          type: string
        id:
          description: ID of the icon.
          nullable: false
          type: string
        url:
          description: URL of the icon.
          nullable: true
          type: string
      required:
        - name
        - id
    MembershipsJetPlusUpfrontCreditPlanBenefit:
      description: Jet Plus upfront credit plan benefit details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit type
          example: jetPlusUpfrontCredit
        restrictions:
          nullable: false
          type: array
          description: List of restrictions that apply to the benefit
          example: []
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsPartnerBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsOrderValueBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsDeliveryFeeBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsUsageLimitBenefitRestriction'
    MembershipsJetPlusUpfrontCreditStatusBenefit:
      description: Jet Plus upfront credit benefit details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit type
          example: jetPlusUpfrontCredit
        restrictedBy:
          nullable: false
          type: array
          description: List of restrictions that apply to the benefit
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsPartnerBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsDeliveryFeeBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsOrderValueBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsUsageLimitBenefitRestriction'
    MembershipsLatestPayment:
      description: Latest payment details
      type: object
      properties:
        status:
          nullable: false
          type: string
          enum:
            - success
            - failure
          description: Status of the latest payment attempt
        date:
          nullable: false
          type: string
          description: Date of the latest payment attempt
          example: '2026-06-31T00:00:00Z'
    MembershipsMembersOnlyVouchersPlanBenefit:
      description: Members only vouchers plan benefit details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit type
          example: membersOnlyVouchers
        restrictions:
          nullable: false
          type: array
          description: List of restrictions that apply to the benefit
          example: []
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsPartnerBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsOrderValueBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsDeliveryFeeBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsUsageLimitBenefitRestriction'
    MembershipsMembersOnlyVouchersStatusBenefit:
      description: Members only vouchers benefit details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit type
          example: membersOnlyVouchers
        restrictedBy:
          nullable: false
          type: array
          description: List of restrictions that apply to the benefit
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsPartnerBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsDeliveryFeeBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsOrderValueBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsUsageLimitBenefitRestriction'
    MembershipsMembership:
      description: Details of memberships
      type: object
      properties:
        plan:
          nullable: false
          description: Membership plan details which include timeline, price, benefits and restrictions
          $ref: '#/components/schemas/MembershipsMembershipPlan'
        status:
          nullable: false
          description: Details about membership status of the consumer
          $ref: '#/components/schemas/MembershipsMembershipConsumerStatus'
    MembershipsMembershipBenefitUsage:
      description: Usage data for the benefit, including limit, used, and remaining.
      type: object
      properties:
        limit:
          type: integer
          format: int32
          nullable: false
          minimum: 1
          description: The maximum number of uses for the benefit.
        used:
          type: integer
          format: int32
          nullable: false
          minimum: 0
          description: The number of benefit uses.
        remaining:
          type: integer
          format: int32
          nullable: false
          minimum: 0
          description: The remaining number of uses for the benefit.
    MembershipsMembershipBenefitUsageResponse:
      description: Details of membership benefit usage
      type: object
      properties:
        currency:
          type: string
          nullable: false
          description: The currency in which the usage values are represented.
        totalUsageCount:
          type: integer
          format: int32
          description: The total count of all benefit usages.
        totalUsageValue:
          type: number
          format: int32
          description: The total value of all benefit usages.
        benefits:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                description: The type of benefit to which the savings applies.
                enum:
                  - jetPlusUpfrontCredit
                  - membersOnlyVouchers
                  - partnerExclusiveOffers
                  - unlimitedFreeDelivery
              usageCount:
                type: integer
                format: int32
                description: The count of times this benefit has been used.
              usageValue:
                type: number
                format: int32
                description: The total value associated with the usage of this benefit.
            required:
              - type
              - usageCount
              - usageValue
          nullable: false
      required:
        - currency
        - totalUsageCount
        - totalUsageValue
        - benefits
      additionalProperties: false
    MembershipsMembershipConsumerStatus:
      description: Membership consumer status details
      type: object
      properties:
        membershipId:
          nullable: true
          type: string
          description: The id of the membership.
          example: fac3c618-f6c7-4a17-9a29-edace26d0b95
        allowedActions:
          nullable: false
          type: array
          example: []
          description: |
            "The actions that are available to the customer on a membership, for example the customer will be able purchase it"
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsAllowedActions'
        timeline:
          nullable: true
          description: Timeline of the consumer membership in terms of start, end and cancellation dates
          $ref: '#/components/schemas/MembershipsConsumerStatusTimeline'
        acquired:
          nullable: true
          description: Details about how the membership has been acquired
          type: object
          oneOf:
            - $ref: '#/components/schemas/MembershipsAcquiredByPartnerOrder'
            - $ref: '#/components/schemas/MembershipsAcquiredByAmazonPrimeConnection'
            - $ref: '#/components/schemas/MembershipsAcquiredByGifted'
        benefits:
          type: array
          nullable: false
          description: Benefits the customer has access to through the membership
          example: []
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsUnlimitedFreeDeliveryStatusBenefit'
              - $ref: '#/components/schemas/MembershipsPartnerExclusiveOffersStatusBenefit'
              - $ref: '#/components/schemas/MembershipsMembersOnlyVouchersStatusBenefit'
              - $ref: '#/components/schemas/MembershipsJetPlusUpfrontCreditStatusBenefit'
        trial:
          nullable: true
          description: Details about the membership trial
          $ref: '#/components/schemas/MembershipsConsumerStatusTrial'
        effectivePrice:
          nullable: true
          description: The price presented to the user based on their eligibility. Will either be the plan price or trial price
          $ref: '#/components/schemas/MembershipsPrice'
        latestPayment:
          nullable: true
          description: Details about the latest payment attempt
          $ref: '#/components/schemas/MembershipsLatestPayment'
        membershipState:
          nullable: true
          description: Current state of the membership
          type: string
          enum:
            - active
            - cancellationRequestPending
            - cancellationRequestComplete
    MembershipsMembershipPlan:
      description: Membership plan details which include timeline restrictions, price, benefits and restrictions
      type: object
      title: Plan
      properties:
        planId:
          type: string
          nullable: false
          description: Unique identifier of the plan across markets
          example: UK_DELIVERY_PASS_90DAYS
        name:
          type: string
          nullable: false
          description: Name of the plan
          example: Basic Plan
        brandName:
          type: string
          nullable: true
          description: Brand name of the plan
          example: JustEat+
        type:
          nullable: false
          description: Type of the plan
          $ref: '#/components/schemas/MembershipsPlanTypes'
        displayText:
          type: string
          nullable: true
          description: Short description of membership plan
          example: Basic Plan
        billing:
          nullable: false
          description: Billing information of the plan
          $ref: '#/components/schemas/MembershipsPlanBilling'
        trial:
          nullable: true
          description: Trial information of the plan
          $ref: '#/components/schemas/MembershipsPlanTrial'
        termsAndConditions:
          nullable: true
          description: Terms and conditions of the plan
          $ref: '#/components/schemas/MembershipsTermsAndConditions'
        timeline:
          nullable: false
          description: Timeline of the plan in terms of duration and cancellation deadlines
          $ref: '#/components/schemas/MembershipsPlanTimeline'
        price:
          nullable: true
          description: Price of the plan
          $ref: '#/components/schemas/MembershipsPrice'
        benefits:
          type: array
          nullable: false
          description: List of benefits of the plan
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsUnlimitedFreeDeliveryPlanBenefit'
              - $ref: '#/components/schemas/MembershipsPartnerExclusiveOffersPlanBenefit'
              - $ref: '#/components/schemas/MembershipsMembersOnlyVouchersPlanBenefit'
              - $ref: '#/components/schemas/MembershipsJetPlusUpfrontCreditPlanBenefit'
              - $ref: '#/components/schemas/MembershipsBrandingPlanBenefit'
        notIntendedForRepurchase:
          type: boolean
          nullable: true
          description: Not intended for repurchase
        presentation:
          nullable: true
          description: Presentation details for the membership plan.
          $ref: '#/components/schemas/MembershipsPresentation'
    MembershipsMembershipStatusTrial:
      description: Trial of the consumer membership, including current state.
      type: object
      properties:
        isActive:
          type: boolean
          description: The current state of the trial
          nullable: false
        startDate:
          nullable: false
          description: The start date of the consumer membership
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
        endDate:
          nullable: false
          description: The end date of the consumer membership
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
    MembershipsOrderValueBenefitRestriction:
      description: Order value restrictions' details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit restriction type
          enum:
            - basketTotal
          example: basketTotal
        displayText:
          nullable: true
          type: string
          description: Benefit restriction display text
          example: Free delivery only available if you spend £15.00 or more.
        minimumAmount:
          nullable: false
          type: number
          description: Minimum amount in minor currency (e.g. cents)
          example: 0
        firstOrderMinimumAmount:
          nullable: true
          type: number
          description: First order minimum amount in minor currency (e.g. cents)
          example: 0
    MembershipsPartnerBenefitRestriction:
      description: Partner benefit restrictions' details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit restriction type
          enum:
            - partner
          example: partner
        displayText:
          nullable: true
          type: string
          description: Benefit restriction display text
          example: Only applicable for selected stores.
    MembershipsPartnerExclusiveOffersPlanBenefit:
      description: Partner exclusive offers plan benefit details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit type
          example: partnerExclusiveOffers
        restrictions:
          nullable: false
          type: array
          description: List of restrictions that apply to the benefit
          example: []
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsPartnerBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsOrderValueBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsDeliveryFeeBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsUsageLimitBenefitRestriction'
    MembershipsPartnerExclusiveOffersStatusBenefit:
      description: Partner exclusive offers benefit details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit type
          example: partnerExclusiveOffers
        restrictedBy:
          nullable: false
          type: array
          description: List of restrictions that apply to the benefit
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsPartnerBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsDeliveryFeeBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsOrderValueBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsUsageLimitBenefitRestriction'
    MembershipsPlanBilling:
      allOf:
        - $ref: '#/components/schemas/MembershipsBilling'
        - type: object
          properties:
            partnerName:
              type: string
              nullable: true
              description: Name of the partner
              example: AmazonPrime
            period:
              nullable: true
              type: string
              description: Billing period
              example: P1M
    MembershipsPlanConsumptionModel:
      description: Plan consumption model types
      type: string
      enum:
        - duration
        - usage
    MembershipsPlanTimeline:
      description: Details about the plan timeline in terms of validity and cancellation
      type: object
      properties:
        duration:
          nullable: true
          type: string
          description: Duration of the membership plan
          example: P90D
        cancellationPeriodDuration:
          nullable: true
          type: string
          description: Duration of the legal period for cancellation
          example: P14D
        expiryDate:
          nullable: true
          type: string
          description: Date when the membership plan expires
          example: '2026-06-31T00:00:00Z'
    MembershipsPlanTrial:
      allOf:
        - $ref: '#/components/schemas/MembershipsTrial'
        - type: object
          required:
            - price
          properties:
            price:
              nullable: false
              description: Price for the trial
              $ref: '#/components/schemas/MembershipsPrice'
    MembershipsPlanTypes:
      description: Available plan types
      type: string
      format: enum
      enum:
        - deliveryPass
        - plus
    MembershipsPresentation:
      description: Presentation details for the membership plan.
      type: object
      properties:
        checkoutScreen:
          nullable: false
          description: Presentation details for the checkout screen.
          $ref: '#/components/schemas/MembershipsCheckoutScreen'
      required:
        - checkoutScreen
    MembershipsPrice:
      description: Price details
      type: object
      properties:
        amount:
          nullable: false
          type: number
          description: Price amount in minor currency (e.g. cents)
          example: 100
    MembershipsTermsAndConditions:
      type: object
      description: Terms and conditions of the plan
      properties:
        url:
          type: string
          nullable: false
          description: URL of the terms and conditions
          example: https://www.example.com/terms-and-conditions
        consentRequired:
          type: boolean
          nullable: false
          description: If the membership plan requires consent
    MembershipsTrial:
      description: Details about the plan trial
      additionalProperties: true
      type: object
      properties:
        duration:
          nullable: false
          type: string
          description: Duration of the trial
          example: P14D
    MembershipsUnlimitedFreeDeliveryPlanBenefit:
      description: Unlimited free delivery plan benefit details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit type
          example: unlimitedFreeDelivery
        code:
          nullable: false
          type: string
          description: Voucher code that can be used to apply the benefit
          example: ABC123
        restrictions:
          nullable: false
          type: array
          description: List of restrictions that apply to the benefit
          example: []
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsPartnerBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsOrderValueBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsDeliveryFeeBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsUsageLimitBenefitRestriction'
    MembershipsUnlimitedFreeDeliveryStatusBenefit:
      description: Unlimited free delivery benefit details
      type: object
      properties:
        type:
          nullable: false
          type: string
          description: Benefit type
          example: unlimitedFreeDelivery
        code:
          nullable: false
          type: string
          description: Voucher code that can be used to apply the benefit
          example: ABC123
        usage:
          nullable: true
          $ref: '#/components/schemas/MembershipsMembershipBenefitUsage'
        restrictedBy:
          nullable: false
          type: array
          description: List of restrictions that apply to the benefit
          items:
            anyOf:
              - $ref: '#/components/schemas/MembershipsPartnerBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsDeliveryFeeBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsOrderValueBenefitRestriction'
              - $ref: '#/components/schemas/MembershipsUsageLimitBenefitRestriction'
    MembershipsUsageLimitBenefitRestriction:
      description: Usage limit benefit restrictions' details
      type: object
      required:
        - type
        - maximumAmount
      properties:
        type:
          nullable: false
          type: string
          description: Benefit restriction type
          enum:
            - usageLimit
          example: usageLimit
        displayText:
          nullable: true
          type: string
          description: Benefit restriction display text
          example: Maximum usage allowed is 5 times.
        maximumAmount:
          nullable: false
          type: number
          description: Maximum amount number
          example: 5
    MembershipsGiftingGetGiftingInviteResponse:
      description: Gifted membership invite response schema.
      type: object
      properties:
        icon:
          $ref: '#/components/schemas/MembershipsIconInfo'
        welcome:
          description: Welcome message for the gifted membership invite, null unless the user is logged-in.
          type: string
          nullable: true
        title:
          description: Main heading for the invite.
          type: string
        benefits:
          description: List of benefits associated with the membership.
          type: array
          items:
            $ref: '#/components/schemas/MembershipsBenefitInfo'
        urgency:
          description: Provides a message indicating how long the invite is valid for
          type: string
        assurance:
          description: Assurance message that no payment is required for the gifted membership.
          type: string
        invalidGiftingInfo:
          $ref: '#/components/schemas/MembershipsGiftingInvalidGiftingInfo'
        actions:
          type: array
          items:
            type: object
            properties:
              type:
                $ref: '#/components/schemas/MembershipsGiftingGiftingActionType'
              text:
                description: Text to display for the action.
                nullable: false
                type: string
        confirmation:
          description: Confirmation section.
          type: object
          properties:
            icon:
              $ref: '#/components/schemas/MembershipsIconInfo'
            title:
              description: Title for the confirmation message.
              type: string
            body:
              description: Body texts for the confirmation message.
              type: array
              items:
                type: string
            cta:
              type: object
              properties:
                text:
                  description: Text to display for the call to action.
                  nullable: false
                  type: string
    MembershipsGiftingGiftingActionType:
      description: Available actions for gifting memberships
      type: string
      enum:
        - loginAndRedeem
        - redeemGift
        - skip
        - close
    MembershipsGiftingInvalidGiftingInfo:
      type: object
      description: Describes why the invite is not valid (e.g. expired, already claimed, etc).
      nullable: true
      properties:
        title:
          description: The high-level reason for the invalid invite.
          type: string
        description:
          description: More information about why the invite is invalid.
          type: string
    MenuAddMenuView:
      type: object
      description: A menu viewed event.
      allOf:
        - $ref: '#/components/schemas/MenuAddMenuViewBase'
        - properties:
            deliveryArea:
              type: string
              example: NW6
              description: The location that the click applies to.
            isPromoted:
              type: boolean
              description: Indicates whether the restaurant was promoted.
            sortApplied:
              type: boolean
              description: Indicates whether the restaurant list was sorted.
            resultMode:
              description: Indicates whether the restaurant list was filtered when the click happened or it was organic SERP results.
              type: string
              enum:
                - filtered
                - organic
            positionInRestaurantList:
              type: integer
              format: int32
              minimum: 1
              description: The position in the search results as that have been seen. [one-based]
            positionInCandidateList:
              type: integer
              format: int32
              nullable: true
              minimum: 1
              description: The current position of the restaurant in the filtered list of candidates for Promoted Placement. Available if the restaurant was promoted. [one-based]
          required:
            - isPromoted
            - sortApplied
            - resultMode
            - positionInRestaurantList
    MenuAddMenuViewBase:
      type: object
      properties:
        menuDisplayedTimestampUtc:
          nullable: true
          format: date-time
          type: string
          description: The UTC date and time at which the menu was displayed.
        app:
          type: string
          description: The type of client making the request.
          enum:
            - android
            - ios
            - web
        latitude:
          nullable: true
          format: double
          type: number
          example: 51.516445
          description: The latitude value of the position.
        longitude:
          nullable: true
          format: double
          type: number
          example: -0.103125
          description: The longitude value of the position.
        globalUserId:
          type: string
          description: The user's hashed globally unique ID.
          example: 8It2lEaJjG82nJtxO00Iab0CoF0=
        gaUserId:
          type: string
          description: The Google Analytics user ID.
          example: GA1.1.46b5465f-33ed-4eab-aeb9-fa0d034d274b
        anonymousUserId:
          type: string
          description: The legacy Just Eat anonymous user ID.
          example: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
        searchDisplayedTimestampUtc:
          nullable: true
          format: date-time
          type: string
          description: The UTC date and time at which the search page was displayed.
        conversationId:
          nullable: true
          type: string
          description: The correlation ID of the request, used to trace the request when viewing logs.
          example: 1fb5a510-1dd9-47fb-a053-6840d6f59130
      required:
        - app
        - anonymousUserId
      additionalProperties: true
      x-abstract: true
    MenuLegacyAddMenuView:
      type: object
      description: A menu viewed event.
      deprecated: true
      allOf:
        - $ref: '#/components/schemas/MenuAddMenuViewBase'
        - properties:
            isSponsored:
              type: boolean
              description: Indicates whether the restaurant was sponsored. This property has been deprecated and should not be used. Please use a new contract instead.
              deprecated: true
            outcode:
              type: string
              example: NW6
              description: The out component of the postcode. This property has been deprecated and should not be used. Please use a new contract instead.
              deprecated: true
          required:
            - isSponsored
    MenugeneratorapiMenuUploadInstructions:
      type: object
      properties:
        instructions:
          type: array
          description: The file upload instructions for a set of menu files. There will be an instruction item for each file.
          items:
            type: object
            description: Upload instructions for a single menu file. The instructions enable clients to construct a HTTP request to perform an upload.
            properties:
              url:
                type: string
                description: The URL to perform a PUT request to with the file as the request body.
              headers:
                type: object
                description: The headers to send with the request. The property names are the header names and the property values are the header values.
            required:
              - url
              - headers
      required:
        - instructions
    MenugeneratorapiMenuUploadProcess:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/MenugeneratorapiMenuUploadProcessStatus'
        summary:
          type: string
          description: A short summary that provides additional context to the process status.
          nullable: true
        partnerName:
          type: string
          description: The name of the partner that the menu generator process is for.
        menuTypist:
          type: string
          description: The name of the agent that initiated the menu generator process.
        menuId:
          type: string
          description: The unique identifier of the menu in Skip Menu Builder.
        partnerId:
          type: string
          description: The unique identifier of the restaurant partner belonging to this menu generation process.
        cuisines:
          type: array
          items:
            type: string
          description: The partner's cuisines that will be used as contextual metadata for the menu files.
      required:
        - status
        - description
        - partnerName
        - cuisines
    MenugeneratorapiMenuUploadProcessStatus:
      type: string
      enum:
        - uploading
        - uploaded
        - parsed
        - readyForReview
        - generating
        - generated
        - reviewing
        - reviewed
        - complete
        - error
      description: |
        The status of the menu generator process. It can take the following items:
          * `uploading`      - The user is still in the process of uploading the menu files.
          * `uploaded`       - The user has finished uploading menu files.
          * `parsed`         - The provided menu files have been parsed and a draft menu is ready to be generated.
          * `readyForReview` - The status to move to when it's ready to generate and review the draft menu.
          * `generating`     - Draft menu is being generated using the parsed files.
          * `generated`      - Draft menu is generated.
          * `reviewing`      - Draft menu is being reviewed by the user.
          * `reviewed`       - The status to move to when user is finishing reviewing the draft menu.
          * `complete`       - The status to move to when user published the menu.
          * `error`          - The status to move to when provided menu files could not be processed in such a way to produce a draft menu.
    MenugeneratorapiMenuUploadProcesses:
      type: object
      properties:
        processes:
          items:
            $ref: '#/components/schemas/MenugeneratorapiMenuUploadProcess'
          type: array
          description: List of menu generator processes limited to 100 results.
        after:
          type: string
          description: The last key to use in the next request to get the next page of results.
          nullable: true
    MenugeneratorapiRequestsCreateMenuUploadInstructionsRequest:
      type: object
      properties:
        fileCount:
          type: integer
          description: The number of menu files that need to be uploaded.
      required:
        - fileCount
    MenugeneratorapiRequestsUpdateMenuUploadProcessRequest:
      type: object
      properties:
        status:
          type: string
          enum:
            - uploaded
            - readyForReview
            - reviewed
            - complete
          description: The status to update the menu generator process to.
      required:
        - status
    NotificationstatusConversationStatusResponse:
      title: ConversationStatusResponse
      type: object
      description: Represents the status of a conversation.
      properties:
        conversationId:
          type: string
          description: The unique identifier for the conversation.
        notifications:
          type: array
          description: The list of notification statuses for the conversation.
          items:
            $ref: '#/components/schemas/NotificationstatusNotificationStatusResponse'
      required:
        - conversationId
        - notifications
    NotificationstatusErrorResponse:
      title: ErrorResponse
      type: object
      properties:
        message:
          type: string
          description: Error message describing the problem.
      required:
        - message
    NotificationstatusNotificationChannelType:
      type: string
      description: The channel used to send the notification.
      enum:
        - None
        - Email
        - Push
        - Sms
        - Feed
      example: Sms
    NotificationstatusNotificationStatusResponse:
      type: object
      properties:
        SendId:
          type: string
          description: The unique identifier for the notification send operation.
        SmsId:
          type: string
          nullable: true
          description: The unique identifier for the SMS, if applicable.
        EmailStatusChangedAt:
          type: string
          format: date-time
          nullable: true
          description: The date and time in UTC when the email status last changed.
        EmailFailureDetail:
          type: string
          nullable: true
          description: |
            Stores specific failure details for Email channel from SES (e.g., "Complaint", "Bounce").
            Populated when a detailed failure occurs from AWS SES.
        PushStatusChangedAt:
          type: string
          format: date-time
          nullable: true
          description: The date and time in UTC when the push status last changed.
        SmsStatusChangedAt:
          type: string
          format: date-time
          nullable: true
          description: The date and time in UTC when the SMS status last changed.
        EmailStatus:
          description: The status of the email notification.
          $ref: '#/components/schemas/NotificationstatusNotificationStatusType'
        PushStatus:
          description: The status of the push notification.
          $ref: '#/components/schemas/NotificationstatusNotificationStatusType'
        SmsStatus:
          description: The status of the SMS notification.
          $ref: '#/components/schemas/NotificationstatusNotificationStatusType'
        FeedStatus:
          description: The status of the feed notification.
          $ref: '#/components/schemas/NotificationstatusNotificationStatusType'
      required:
        - SendId
        - EmailStatus
        - PushStatus
        - SmsStatus
        - FeedStatus
      example:
        SendId: 50b5bc30-5c3b-4c34-910c-66d4413c87d2
        SmsId: null
        EmailStatusChangedAt: '2025-08-06T09:28:25.468Z'
        EmailFailureDetail: null
        PushStatusChangedAt: null
        SmsStatusChangedAt: null
        EmailStatus: Sent
        PushStatus: None
        SmsStatus: None
        FeedStatus: None
    NotificationstatusNotificationStatusType:
      description: The notification status type
      enum:
        - None
        - Sending
        - Sent
        - Skipped
        - Locked
        - Delivered
      type: string
    NotificationstatusSfmcCallback:
      title: SfmcCallback
      type: object
      description: Represents a callback event from SFMC (Salesforce Marketing Cloud).
      properties:
        eventCategoryType:
          description: The category type of the event.
          $ref: '#/components/schemas/NotificationstatusSfmcEventCategoryType'
        timestampUTC:
          type: integer
          format: int64
          description: The event timestamp in UTC as a Unix epoch.
        info:
          $ref: '#/components/schemas/NotificationstatusSfmcCallbackInfo'
          description: Additional information about the SFMC event.
      required:
        - eventCategoryType
        - timestampUTC
        - info
    NotificationstatusSfmcCallbackArray:
      title: SfmcCallbackArray
      type: array
      description: List of SFMC callback objects
      items:
        $ref: '#/components/schemas/NotificationstatusSfmcCallback'
    NotificationstatusSfmcCallbackInfo:
      title: SfmcCallbackInfo
      type: object
      description: Additional information about the SFMC event callback.
      properties:
        MessageKey:
          type: string
          description: The unique key identifying the message related to the event.
      required:
        - MessageKey
    NotificationstatusSfmcEventCategoryType:
      type: string
      description: The category type of the event.
      enum:
        - TransactionalSendEvents.EmailSent
        - TransactionalSendEvents.EmailNotSent
        - TransactionalSendEvents.EmailBounced
      example: TransactionalSendEvents.EmailSent
    NotificationstatusUpdateStatusRequest:
      type: object
      required:
        - sendId
        - channel
        - status
        - updatedAt
      properties:
        sendId:
          type: string
          description: The unique identifier for the notification send operation.
          example: abc123
        smsId:
          type: string
          description: The SMS identifier, if applicable.
          nullable: true
          example: sms-456
        channel:
          $ref: '#/components/schemas/NotificationstatusNotificationChannelType'
        status:
          $ref: '#/components/schemas/NotificationstatusNotificationStatusType'
        updatedAt:
          type: string
          format: date-time
          description: The timestamp in UTC when the status was updated.
          example: '2025-08-11T12:34:56Z'
        failureReason:
          type: string
          description: The reason for failure, if any.
          nullable: true
          example: Bounce
      example:
        sendId: abc123
        smsId: sms-456
        channel: Email
        status: Skipped
        updatedAt: '2025-08-11T12:34:56Z'
        failureReason: Bounce
    OcusMissionStatusChangedRequest:
      type: object
      properties:
        type:
          description: The type of webhook
          type: string
        id:
          description: The identifier of the notification
          type: string
        attributes:
          properties:
            mission_reference_id:
              description: The unique identifier of OCUS mission
              type: string
            organization_id:
              description: The unique identifier of OCUS organization
              type: string
            public_status:
              description: The status of OCUS mission. For possible values see https://developer.ocus.io/docs/data-types#mission-public_status
              type: string
          description: The notification attributes
          type: object
      nullable: false
    OcusWebhookRequest:
      type: object
      properties:
        type:
          description: The type of webhook
          type: string
        id:
          description: The identifier of the notification
          type: string
          format: enum
          enum:
            - project.updated
            - project.status.updated
        attributes:
          properties:
            project_id:
              description: The unique identifier of OCUS project
              type: string
            organization_id:
              description: The unique identifier of OCUS organization
              type: string
            status:
              description: The status of OCUS project
              type: string
              format: enum
              enum:
                - not_assigned
                - assigned
                - waiting_for_visuals
                - pending_validation
                - completed
                - canceled
                - archived
          description: The notification attributes
          type: object
      nullable: false
    OperationssupportCreateTicketCommentModel:
      properties:
        htmlBody:
          description: Field used to create a comment on the ticket, formatted as HTML
          type: string
          nullable: true
        body:
          description: Field used to create a comment on the ticket, as a string
          type: string
          nullable: true
        author:
          description: The ID of the comment author
          type: integer
          format: int64
          nullable: true
        isPublic:
          description: True if the comment should be public, false if it should be an internal note
          type: boolean
        attachmentKeys:
          description: Field used to store S3 object keys referencing files to be attached to the ticket comment.
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
      type: object
      description: Object that represents a comment in a Zendesk ticket
    OperationssupportCreateTicketModel:
      properties:
        operationsSupportTicketId:
          description: The unique ID of the generated ticket
          type: string
          format: uuid
        subject:
          description: The subject of the ticket
          type: string
          nullable: true
        comment:
          description: Adds a comment to the ticket
          $ref: '#/components/schemas/OperationssupportCreateTicketCommentModel'
        requesterId:
          description: The identifier of the ticket requester
          type: integer
          format: long
          nullable: true
        submitterId:
          description: The Zendesk agent's user ID
          type: integer
          format: long
          nullable: true
        assigneeId:
          description: The ID of the agent assigned to the ticket
          type: integer
          format: long
          nullable: true
        groupId:
          description: The group identifier (usually if requester is a Customer or Partner)
          type: integer
          format: long
          nullable: true
        group:
          description: Identifies whether the ticket relates to consumers or chains
          $ref: '#/components/schemas/OperationssupportGroup'
        type:
          description: The type of ticket being created
          $ref: '#/components/schemas/OperationssupportTicketType'
        priority:
          description: Describes the severity/priority of resolution for the ticket
          $ref: '#/components/schemas/OperationssupportPriority'
        status:
          description: The current ticket status
          $ref: '#/components/schemas/OperationssupportTicketStatus'
        tags:
          description: A list of Zendesk related tags
          type: array
          items:
            type: string
          nullable: true
        externalId:
          description: Ticket identifier to be used externally
          type: string
          nullable: true
        forumTopicId:
          description: The topic in the Zendesk Web portal this ticket originated from, if any. The Web portal is deprecated
          type: integer
          format: long
          nullable: true
        problemId:
          description: For tickets of type 'incident', the ID of the problem the incident is linked to
          type: integer
          format: long
          nullable: true
        due:
          description: The DateTime a resolution to the ticket is due by (if ticket is of type 'task'). Uses ISO8601
          type: string
          format: date-time
          nullable: true
        customFields:
          description: Includes a series of custom fields specific to the JET's Zendesk Instance
          type: object
          additionalProperties:
            type: string
            nullable: true
          nullable: true
        requester:
          description: The requester can be specified using name and email. Creates a new account if user does not exist in the system
          $ref: '#/components/schemas/OperationssupportTicketRequesterModel'
        organisationId:
          description: The organization of the requester. You can only specify the ID of an organization associated with the requester.
          type: integer
          format: long
          nullable: true
        integration:
          description: The origin of the Ticket request
          $ref: '#/components/schemas/OperationssupportIntegration'
        brandId:
          description: The id of the brand this ticket is associated with
          type: integer
          format: int64
          nullable: true
      required:
        - subject
        - requesterId
      additionalProperties: false
      type: object
    OperationssupportGroup:
      enum:
        - CustomerOperations
        - Chains
      type: string
      description: Ticket Group Type Options
    OperationssupportIntegration:
      enum:
        - ChatBot
        - ServiceAutomationRestaurantCompensation
        - ConsumerHelp
        - LogisticsRestaurantOffline
        - LogisticsOrderFailure
        - LogisticsPointOfSaleFailure
        - RestaurantManagementTask
        - RestaurantMenuManager
        - RatingWorker
        - PartnerHelpApi
        - ConsumerHelpLambda
        - ConsumerHelpApi
        - PartnerCentre
        - ConsumerOrderQueriesLambda
        - PaymentWorker
        - ValidateAllergenUrl
        - ScooberOperationsIntegration
        - AllergenUrlValidator
        - RestaurantClaims
        - DeliveryRadiusManager
        - OpeningHoursManager
        - LogisticsCancellationFailure
        - ReviewProcessingWorker
        - RestaurantCreationLambdas
        - RestaurantZendeskSyncLambda
        - OrderManagement
        - RestmanWorker
        - RestaurantManagement
        - CustomerManagement
        - RestaurantOrderQueries
        - OrderManagementApi
        - CreationService
      type: string
      description: The origin of the Ticket request
    OperationssupportPriority:
      enum:
        - Urgent
        - High
        - Normal
        - Low
      type: string
      description: Ticket Priority Options
    OperationssupportTicketRequesterModel:
      properties:
        name:
          description: The name of the ticket requester
          type: string
          nullable: true
        email:
          description: The email of the ticket requester
          type: string
          nullable: true
      additionalProperties: false
      type: object
      description: A operation support ticket requester
    OperationssupportTicketStatus:
      enum:
        - New
        - Open
        - Closed
        - Pending
        - Solved
        - Hold
        - Deleted
      type: string
      description: Ticket Status Options
    OperationssupportTicketType:
      enum:
        - Task
        - Incident
        - Problem
        - Question
      type: string
      description: Ticket Type Options
    OperationssupportValidationErrorModel:
      properties:
        field:
          description: The field type that contains an error
          type: string
          nullable: true
        description:
          description: The description of the error
          type: string
          nullable: true
        error:
          description: The error encountered
          type: string
          nullable: true
      additionalProperties: false
      type: object
    OpsorderprojectionAppAddress:
      type: object
      description: An address
      properties:
        lines:
          type: array
          description: Address lines.
          items:
            type: string
        city:
          type: string
          description: Address city.
        country:
          type: string
          description: Address country.
        postcode:
          type: string
          description: Address postcode.
    OpsorderprojectionAppChildItem:
      type: object
      description: A menu sub item
      properties:
        id:
          type: string
          description: The id of the item
        itemReference:
          type: string
          description: The reference for the item
        name:
          type: string
          description: The name of the item
        description:
          type: string
          description: The description of the item
        customerNote:
          type: string
          description: A note from the customer in relation to this item
        unitPrice:
          format: money
          type: integer
          description: The unit price of the item
        unitDepositAmount:
          format: money
          type: integer
          description: The deposit amount for the item
        quantity:
          type: integer
          description: The quantity of items requested
        subItems:
          items:
            $ref: '#/components/schemas/OpsorderprojectionAppChildItem'
          type: array
    OpsorderprojectionAppGetOrderResponse:
      type: object
      description: Details of an order
      properties:
        tenant:
          type: string
          description: The tenant of the restaurant the order was placed at
        orderId:
          description: The id of the order.
          type: string
        customer:
          description: The customer details
          type: object
          properties:
            id:
              type: string
              description: The id of the customer.
            name:
              type: string
              description: The name of the customer that placed the order.
            emailAddress:
              type: string
              description: The email address of the customer.
            phoneNumber:
              type: string
              description: The phone number of the customer in n E.164 format.
            timeZone:
              type: string
              description: The timezone in IANA format.
            accountType:
              type: string
              description: The type of account that the customer has.
              enum:
                - default
                - guest
                - unknown
            address:
              type: object
              description: The customer's delivery address
              $ref: '#/components/schemas/OpsorderprojectionAppAddress'
        restaurant:
          description: The restaurant details
          type: object
          properties:
            id:
              type: string
              description: The id for restaurant that the order was placed at.
            supportTeam:
              type: object
              description: The support team that applied to this order at the point of order creation.
              properties:
                name:
                  type: string
                  enum:
                    - premier
                    - core
                    - delco
                    - thirdParty
                    - scoober
                  description: The name of the support team that applied to this order at the point of order creation.
            name:
              type: string
              description: The name for restaurant that the order was placed at.
            phoneNumber:
              type: string
              description: The phone number for restaurant in n E.164 format.
            emailAddress:
              type: string
              description: The email address for the restaurant.
            timeZone:
              type: string
              description: The timezone for the restaurant in IANA format.
            storefrontType:
              type: string
              description: The type of storefront.
              enum:
                - restaurant
                - grocery
            address:
              type: object
              description: The restaurant's address
              $ref: '#/components/schemas/OpsorderprojectionAppAddress'
        fulfillment:
          description: The fulfillment details for the order
          type: object
          properties:
            isDineIn:
              type: boolean
              description: Whether the order is a dine in order or not.
            method:
              type: string
              description: The method of fulfillment for the order.
              enum:
                - delivery
                - collection
                - dineIn
            dineInFulfillmentInfo:
              type: object
              description: Dine in specific details
              properties:
                tableNumber:
                  type: string
                  description: The table number for the dine in order
        items:
          type: array
          items:
            $ref: '#/components/schemas/OpsorderprojectionAppParentItem'
        orderItemsModifications:
          type: array
          description: Items which were modified
          nullable: true
          items:
            $ref: '#/components/schemas/OpsorderprojectionAppOrderItemsModification'
        payment:
          description: Payment details for the order
          type: object
          properties:
            paidDate:
              description: The datetime that this payment line was paid in ISO 8601 format.
              type: string
              format: date-time
            tips:
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    description: The type of the tip
                  value:
                    format: money
                    type: integer
                    description: The amount of the tip in the minor unit of the currency. E.g. if the UK this value would be in pence.
            fees:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: The name of the fee
                  description:
                    type: string
                    description: The description of the fee
                  type:
                    type: string
                    description: The type of the fee
                  value:
                    format: money
                    type: integer
                    description: The amount of the fee in the minor unit of the currency. E.g. if the UK this value would be in pence.
            taxes:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: The name of the tax
                  percentage:
                    type: number
                    format: double
                    description: The percentage of the tax
                  value:
                    format: money
                    type: integer
                    description: The amount of the tax in the minor unit of the currency. E.g. if the UK this value would be in pence.
            donations:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: The name of the donation
                  value:
                    format: money
                    type: integer
                    description: The amount of the donation in the minor unit of the currency. E.g. if the UK this value would be in pence.
            lines:
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    description: The type of the payment
                  subType:
                    type: string
                    description: The subtype of the payment
                  value:
                    format: money
                    type: integer
                    description: The value of the payment in the minor unit of the currency. E.g. if the UK this value would be in pence.
                  totalValue:
                    format: money
                    type: integer
                    description: The total value of the payment in the minor unit of the currency. E.g. if the UK this value would be in pence.
                  paymentServiceProviderName:
                    type: string
                    description: The name of the of the payment service provider
                  payOnFulfillment:
                    type: boolean
                    description: Whether this payment line is paid on the fulfillment of the order
            vouchers:
              type: array
              items:
                type: object
                properties:
                  discountType:
                    type: string
                    description: The type of the vouchers.
                    enum:
                      - absolute
                      - percentage
                      - deliveryFee
                  usageType:
                    type: string
                    nullable: true
                    description: The type of the voucher usage. Optional.
                    enum:
                      - unlimited
                  amount:
                    format: money
                    type: integer
                    description: The value of the voucher in the minor unit of the currency. E.g. if the UK this value would be in pence.
                  name:
                    type: string
                    description: The name of the voucher
                  voucherCode:
                    type: string
                    description: The code of the voucher
            isCashPayment:
              type: boolean
              description: Whether any payment lines are of type cash
            isCardPayment:
              type: boolean
              description: Whether any payment lines are of type card
        priceBreakdown:
          properties:
            totalPrice:
              format: money
              type: integer
              description: The total value of the order in the minor unit of the currency. E.g. if the UK this value would be in pence.
            discount:
              format: money
              type: integer
              description: The total value of all discounts in the minor unit of the currency. E.g. if the UK this value would be in pence.
            fees:
              format: money
              type: integer
              description: The total value of all fees in the minor unit of the currency. E.g. if the UK this value would be in pence.
            tips:
              format: money
              type: integer
              description: The total value of all tips in the minor unit of the currency. E.g. if the UK this value would be in pence.
            taxes:
              format: money
              type: integer
              description: The total value of all taxes in the minor unit of the currency. E.g. if the UK this value would be in pence.
            items:
              format: money
              type: integer
              description: The total value of all items in the minor unit of the currency. E.g. if the UK this value would be in pence.
            donations:
              format: money
              type: integer
              description: The total value of all discounts in the minor unit of the currency. E.g. if the UK this value would be in pence.
        deliveryPartner:
          properties:
            id:
              type: string
              description: The id of the delivery partner for this order
            name:
              type: string
              description: The name of the delivery partner for this order
        notes:
          description: A container for order kitchen and courier notes
          type: object
          properties:
            order:
              description: A note from the customer for the order
              $ref: '#/components/schemas/OpsorderprojectionAppNoteDetail'
            kitchen:
              description: A note from the customer for the kitchen
              $ref: '#/components/schemas/OpsorderprojectionAppNoteDetail'
            courier:
              description: A note from the customer for the courier
              $ref: '#/components/schemas/OpsorderprojectionAppNoteDetail'
        partnerReferenceId:
          description: The id the the partner understands the order to known by
          type: string
        customerOrderId:
          description: The id the the customer understands the order to known by
          type: string
        state:
          description: The current state of the order
          type: string
          enum:
            - new
            - accepted
            - cancelled
            - problematic
        source:
          description: The source for this order i.e. JustEat etc
          type: string
        dispatchMethod:
          description: The dispatch method for the order e.g. phone
          type: string
        previousOrderCounts:
          type: object
          description: The number of previous order made by a customer
          properties:
            justeatOrderCount:
              description: The number of previous orders with JustEat
              type: integer
            restaurantOrderCount:
              description: The number of previous orders with this restaurant
              type: integer
        isAsap:
          description: Whether the order should be delivered as soon as possible
          type: boolean
        discounts:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                description: The type of the discount
              qualifyingValue:
                format: money
                type: integer
                description: The monetary amount required to qualify for the offer in the minor unit of the currency. E.g. if the UK this value would be in pence.
        applicationInformation:
          type: object
          description: Application and device details that the order was placed from
          properties:
            name:
              type: string
              description: The name of the application (client) that placed the order.
            version:
              type: string
              description: The version of the application (client) that placed the order.
        partnerSubscriptionId:
          type: string
          description: The partner subscription id
        initialDueDateRequestedByCustomer:
          description: The date time that the customer request the initial due date in ISO 8601 format.
          type: string
          format: date-time
        placedDate:
          description: The date time that order was placed in ISO 8601 format.
          type: string
          format: date-time
        acceptedAtDate:
          description: The date time that order accepted at in ISO 8601 format.
          type: string
          format: date-time
        currentDueDate:
          description: The date time that the order is currently due in ISO 8601 format.
          type: string
          format: date-time
        refund:
          type: object
          description: Refunds that have been applied to the order
          properties:
            serviceFee:
              description: A service fee refund
              type: object
              properties:
                refundedAmount:
                  description: The amount of service fee that was refunded in the minor unit of the currency (pence, cents etc)
                  format: money
                  type: integer
                updatedAmount:
                  description: The new amount of the service fee  minor unit of the currency (pence, cents etc)
                  format: money
                  type: integer
        currencyCode:
          description: The ISO-4217 currency code associated with the order.
          type: string
        proofOfDelivery:
          type: object
          description: Details about courier proof of delivery
          properties:
            deliveryCode:
              description: The delivery code (PIN) that the customer should supply to the courier
              type: string
    OpsorderprojectionAppItemAdded:
      type: object
      description: Item added to the order
      properties:
        id:
          type: string
          description: Modification item id
        menuItemId:
          type: string
          description: Menu item id
        name:
          type: string
          description: Name of the item
        description:
          type: string
          description: Description of the item
        basePrice:
          format: money
          type: integer
          description: Base price of the item
        depositAmount:
          format: money
          type: integer
          description: Deposit amount paid for the item
    OpsorderprojectionAppItemRemoved:
      type: object
      description: Item removed from the order
      nullable: true
      properties:
        totalPrice:
          format: money
          type: integer
          description: The total price for the item
        totalDiscount:
          format: money
          type: integer
          description: The total discount for the item
        discountedPrice:
          format: money
          type: integer
          description: The discounted price for the item
        id:
          type: string
          description: The id of the item
        itemReference:
          type: string
          description: The reference for the item
        name:
          type: string
          description: The name of the item
        description:
          type: string
          description: The description of the item
        customerNote:
          type: string
          description: A note from the customer in relation to this item
        unitPrice:
          format: money
          type: integer
          description: The unit price of the item
        unitDepositAmount:
          format: money
          type: integer
          description: The deposit amount for the item
        quantity:
          type: integer
          description: The quantity of items requested
        subItems:
          items:
            $ref: '#/components/schemas/OpsorderprojectionAppChildItem'
          type: array
    OpsorderprojectionAppNoteDetail:
      type: object
      description: A note from the customer
      properties:
        note:
          type: string
          description: The note supplied by the customer
    OpsorderprojectionAppOrderItemsModification:
      type: object
      description: Order items modification
      properties:
        refundAmount:
          format: money
          type: integer
          description: The total refund amount for the modification pair, this amount does not include deposit refunded
        depositRefundAmount:
          format: money
          type: integer
          description: The total refund amount of deposit for all removed items and all their sub-items for the modification pair
        removedItems:
          type: array
          description: Items removed from the order
          nullable: true
          items:
            $ref: '#/components/schemas/OpsorderprojectionAppItemRemoved'
        addedItems:
          type: array
          description: Items added to the order
          nullable: true
          items:
            $ref: '#/components/schemas/OpsorderprojectionAppItemAdded'
    OpsorderprojectionAppParentItem:
      type: object
      description: A menu item
      properties:
        totalPrice:
          format: money
          type: integer
          description: The total price for the item
        totalDiscount:
          format: money
          type: integer
          description: The total discount for the item
        discountedPrice:
          format: money
          type: integer
          description: The discounted price for the item
        id:
          type: string
          description: The id of the item
        itemReference:
          type: string
          description: The reference for the item
        name:
          type: string
          description: The name of the item
        description:
          type: string
          description: The description of the item
        customerNote:
          type: string
          description: A note from the customer in relation to this item
        unitPrice:
          format: money
          type: integer
          description: The unit price of the item
        unitDepositAmount:
          format: money
          type: integer
          description: The deposit amount for the item
        quantity:
          type: integer
          description: The quantity of items requested
        subItems:
          items:
            $ref: '#/components/schemas/OpsorderprojectionAppChildItem'
          type: array
    OpspoolingserviceGetPoolResponse:
      type: object
      description: Details of the delivery pool of an order
      properties:
        sequence:
          type: array
          description: Sequence of pick up and delivery activities of the orders in the pool
          items:
            $ref: '#/components/schemas/OpspoolingserviceSequenceItem'
    OpspoolingserviceSequenceItem:
      type: object
      description: Item representing a courier activity performed for an order
      properties:
        type:
          type: string
          description: Courier activity type
          enum:
            - pickup
            - delivery
        orderId:
          type: string
          description: The id of an order
        completed:
          description: Indicates whether the activity has been completed
          type: boolean
    OrderAcceptanceBeingPreparedRequest:
      type: object
      description: Refers to an order being prepared
    OrderAcceptanceOrderAcceptRequest:
      type: object
      description: An order acceptance request
      properties:
        TimeAcceptedFor:
          format: date-time
          type: string
          description: When the order is accepted for
        OrderPreparationTime:
          type: string
          format: timespan
          description: Restaurant preparation time at the moment when order was accepted
        CourierPickupTime:
          format: date-time
          type: string
          description: When restaurant expects courier to pick up food. Used only for Takeaway order updates.
        UserId:
          type: integer
          description: The ID of the customer care agent making the request.
      example:
        TimeAcceptedFor: '2018-03-10T14:45:28.0000000+00:00'
        OrderPreparationTime: '00:13:00'
        CourierPickupTime: '2023-03-10T14:45:28.0000000+00:00'
        UserId: 12345
    OrderAcceptanceOrderAccepted:
      description: An order acceptance message
      type: object
      properties:
        AcceptedFor:
          format: date-time
          type: string
          description: The time the order is accepted for
        OrderId:
          type: string
          description: The order Id
        Event:
          type: string
          description: Order Accepted
      example:
        AcceptedFor: '2018-03-10T14:45:28.0000000+00:00'
        OrderId: '123456'
        Event: OrderAccepted
    OrderAcceptanceOrderCancelRequest:
      type: object
      properties:
        Message:
          description: Reason why this order is being cancelled.
          type: string
      example:
        Message: Customer requested the order to be cancelled
    OrderAcceptanceOrderCancelled:
      type: object
      properties:
        Event:
          type: string
          description: The event
        OrderId:
          type: string
          description: The Id of the order
        Reason:
          description: The reason the order was cancelled.
          enum:
            - cust_cancelled_changed_mind
            - cust_cancelled_delivery_too_long
            - cust_cancelled_made_mistake
            - cust_cancelled_out_of_stock
            - 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
      example:
        Event: OrderCancelled
        OrderId: ijdhpy7bdusgtc28bapspa
        Reason: system_cancelled_other
    OrderAcceptanceOrderDueDateRequest:
      type: object
      properties:
        DueDate:
          description: The updated ETA for the order
          format: date-time
          type: string
      example:
        DueDate: '2019-12-25T14:45:28.0000000+00:00'
    OrderAcceptanceOrderRejectRequest:
      type: object
      description: Describes an order being rejected
      properties:
        Message:
          description: Reason why this order is being rejected.
          type: string
      example:
        Message: Kitchen overloaded
    OrderAcceptanceOrderRejected:
      type: object
      description: Details of an order being rejected
      properties:
        Event:
          type: string
          description: The event
        RejectedAt:
          format: date-time
          type: string
          description: Timestamp for the order being rejected
        RejectedReason:
          type: string
          description: Details reason for the rejections
        RejectedBy:
          type: string
          description: ID of the rejecter
      example:
        Event: OrderRejected
        RejectedAt: '2018-03-10T14:45:28.0000000+00:00'
        RejectedReason: Kitchen overloaded
        RejectedBy: '123456'
    OrderDeliveryEtaEstimate:
      required:
        - driverId
      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
        driverId:
          description: The driver identifier
          example: '123456'
          type: string
      type: object
    OrderLogsGetOrderLogsResponse:
      type: array
      description: Event logs for an order
      items:
        type: object
        description: Details of a log entry
        properties:
          category:
            type: string
            description: The category of this log entry
          date:
            type: string
            format: date-time
            description: The date that the log entry occurred
          logs:
            type: array
            description: List of log lines for this entry
            items:
              type: string
          logType:
            type: string
            description: The message that resulted in this log entry
          orderId:
            type: string
            description: The order id
          tenant:
            type: string
            description: The tenant
      example:
        - category: Order
          date: '2023-01-01T12:00:00+00:00'
          logs:
            - Created
            - 'Order total paid: £10.00'
          logType: OrderCreatedV2
          orderId: hxb6vkwr90uwgqftrher3a
          tenant: uk
        - category: Comms
          date: '2023-01-01T12:00:10+00:00'
          logs:
            - Sending order via OrderPad
          logType: DispatchMethodSelected
          orderId: hxb6vkwr90uwgqftrher3a
          tenant: uk
        - category: Ops
          date: '2023-01-01T12:05:00+00:00'
          logs:
            - Cancelled
          logType: OrderCancelled
          orderId: hxb6vkwr90uwgqftrher3a
          tenant: uk
    OrderSearchAggregateOrderSearchResponse:
      type: object
      properties:
        orderCount:
          type: number
          description: The number of orders that match the filter criteria
      example:
        orderCount: 57
    OrderSearchOrderSearchItem:
      type: object
      description: Details of an order
      properties:
        customer:
          description: The customer details
          type: object
          properties:
            emailAddress:
              type: string
              description: The email address of the customer.
            phoneNumber:
              type: string
              description: The phone number of the customer in n E.164 format.
            timeZone:
              type: string
              description: The timezone in IANA format.
            address:
              type: object
              description: The customer's delivery address
              properties:
                lines:
                  type: array
                  description: The customer delivery address lines.
                  items:
                    type: string
                city:
                  type: string
                  description: The customer delivery city.
                country:
                  type: string
                  description: The customer delivery country.
                postcode:
                  type: string
                  description: The customer delivery postcode.
            isGuest:
              type: boolean
              description: If the customer is a guest customer or not.
        restaurant:
          description: The restaurant details
          type: object
          properties:
            id:
              type: string
              description: The id of the restaurant that the order was placed at.
            name:
              type: string
              description: The name of the restaurant that the order was placed at.
            postcode:
              type: string
              description: The postcode of the restaurant that the order was placed at.
        tenant:
          type: string
          description: The tenant of the restaurant the order was placed at.
        totalPrice:
          description: the total price of the order in the minor unit of the currency. E.g. if the uk this value would be in pence.
          type: number
          format: int
        placedDate:
          description: The datetime that the order was placed in ISO 8601 format.
          type: string
          format: date-time
        currentDueDate:
          description: The datetime that the order is due to be fulfilled in ISO 8601 format.
          type: string
          format: date-time
        acceptedAt:
          description: The datetime that the order was accepted in ISO 8601 format.
          type: string
          format: date-time
        payOnFulfilment:
          description: Whether payment is completed on fulfilment of the order.
          type: boolean
        status:
          description: The current status of the order as known by cse ops.
          type: string
          enum:
            - Good,
            - Cancelled
            - Problematic
        state:
          description: The current state of the order as known by cse ops.
          type: string
          enum:
            - New,
            - Accepted
            - Cancelled
            - Problematic
        orderId:
          description: The id of the order.
          type: string
        friendlyOrderReference:
          description: The friendly id of the order.
          type: string
        partnerOrderReference:
          description: The reference identifier supplied by a partner for this order.
          type: string
        partnerId:
          description: The identifier of a partner for this order.
          type: string
        resolutionReason:
          description: The reason that an order has been resolved.
          type: string
    OrderSearchPagedOrderSearchResponse:
      allOf:
        - $ref: '#/components/schemas/PagingPagedAfterOnlyCursorResponse'
        - type: object
          description: List of all matching orders
          properties:
            orders:
              type: array
              items:
                $ref: '#/components/schemas/OrderSearchOrderSearchItem'
      example:
        orders:
          - customer:
              emailAddress: bob@justeattakeaway.com
              phoneNumber: '+441234567890'
              timeZone: Europe/London
              address:
                lines:
                  - Address Line 1
                  - Address Line 2
                  - Address Line 3
                  - Address Line 4
                  - Address Line n
                city: Bristol
                country: UK
                postcode: BS1 1AA
              isGuest: true
            restaurant:
              id: '6401389'
              name: Best Burgers
              postcode: BS1 1AA
            tenant: uk
            totalPrice: 1234
            placedDate: '2021-05-26T09:54:05.863Z'
            currentDueDate: '2021-05-26T09:54:05.863Z'
            acceptedAt: '2021-05-26T09:54:05.863Z'
            payOnFulfilment: true
            status: Good
            state: New
            orderId: 724nicxtnekdkzgr1opseg
            friendlyOrderReference: '306721801'
            partnerOrderReference: 724nicxtnekdkzgr1opseg
            partnerId: '219'
            resolutionReason: some-reason
          - customer:
              emailAddress: alice@justeattakeaway.com
              phoneNumber: '+449876543210'
              timeZone: Europe/London
              address:
                lines:
                  - 1 Address Line
                  - 2 Address Line
                  - 3 Address Line
                  - 4 Address Line
                  - 5 Address Line
                city: Bristol
                country: UK
                postcode: BS41 1AA
              isGuest: true
            restaurant:
              id: '301389'
              name: Best Burgers
              postcode: BS1 1AA
            tenant: uk
            totalPrice: 1234
            placedDate: '2021-05-26T09:54:05.863Z'
            currentDueDate: '2021-05-26T09:54:05.863Z'
            acceptedAt: '2021-05-26T09:54:05.863Z'
            payOnFulfilment: true
            status: Good
            state: New
            orderId: 858nicxtnekdkzgr1opseg
            friendlyOrderReference: '404721801'
            partnerOrderReference: 858nicxtnekdkzgr1opseg
            partnerId: '213'
            resolutionReason: some-reason
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    OrderitemsOrderItemAdded:
      type: object
      description: An item added to the order from menu. Represents a substitution for a 'removed' item.
      nullable: true
      required:
        - menuItemId
        - menuItemVariationId
      properties:
        menuItemId:
          type: string
          description: Id of the item as defined in menu master
        menuItemVariationId:
          type: string
          description: Item variation id as defined in menu master
        netQuantity:
          description: The picked weight of the order item. Required when adding a weighed item as a substitute. The unit must be 'g'
          $ref: '#/components/schemas/OrderitemsOrderItemNetQuantity'
    OrderitemsOrderItemAdjusted:
      type: object
      description: An adjustment to an existing order item's weight
      required:
        - orderItemId
        - netQuantityValue
      properties:
        orderItemId:
          type: string
          description: The id of the order item whose weight is being adjusted
        netQuantityValue:
          type: number
          format: decimal
          description: The new weight of the item in the unit defined on the original order item
          minimum: 0
          exclusiveMinimum: true
    OrderitemsOrderItemNetQuantity:
      type: object
      description: The net quantity (weight) of a weighed item
      required:
        - value
        - unit
      properties:
        value:
          type: number
          format: decimal
          description: The weight value of the item
          minimum: 0
          exclusiveMinimum: true
        unit:
          type: string
          description: The unit of measurement. Must be 'g' (grams)
          enum:
            - g
    OrderitemsOrderItemRemoved:
      type: object
      description: An item removed from the order (out of stock) or an item being substituted with an 'added' item
      required:
        - orderItemId
      properties:
        orderItemId:
          type: string
          description: The id of the removed order item, based on provided order entity
    OrderitemsOrderItemSubstitutionRecommendations:
      type: object
      properties:
        recommendations:
          type: array
          description: The recommended items for substitution
          maxItems: 10
          uniqueItems: true
          items:
            type: object
            properties:
              menuItemId:
                type: string
                description: The id of the recommended item
                example: d16def13-bf4d-5d28-83d6-cf8f9c93695f
              menuItemVariationId:
                type: string
                description: The id of the recommended item variation
                example: a976f180-7015-4103-a42c-47a69e455946
              rank:
                type: integer
                description: The order of the recommended item
                minimum: 1
                maximum: 10
            required:
              - menuItemId
              - menuItemVariationId
              - rank
    OrderitemsOrderItemsModification:
      type: object
      description: 'A modification for order items. Valid combinations are: (1) ''removed'' only — item marked as out of stock; (2) ''removed'' and ''added'' — item substitution; (3) ''adjusted'' only — weight adjustment for a weighed item.'
      minProperties: 1
      properties:
        removed:
          type: array
          items:
            $ref: '#/components/schemas/OrderitemsOrderItemRemoved'
        added:
          type: array
          items:
            $ref: '#/components/schemas/OrderitemsOrderItemAdded'
        adjusted:
          type: array
          description: Weight adjustments for weighed items. When provided, 'removed' and 'added' must be empty
          items:
            $ref: '#/components/schemas/OrderitemsOrderItemAdjusted'
    OrderitemsOrderItemsModificationRejection:
      type: object
      required:
        - errorCode
      properties:
        errorCode:
          type: string
          description: The rejection reason.
          enum:
            - badRequestFormat
            - orderNotFound
            - removedItemNotFound
            - removedItemDuplicate
            - removedItemSubstitutionNotEnabled
            - addedItemNotFound
            - addedPriceIsGreaterThanRemoved
            - newTotalPriceLessThanOrEqualToZero
            - notSupported
            - afterModificationOrderShouldHaveAtLeastOneItem
            - weighedItemPriceMoreThanAllowedThreshold
            - weighedItemHasDepositAmount
            - adjustmentIncludesSubOrOutOfStock
            - weighedItemHasSubItems
            - weighedItemHasFees
            - weighedItemHasUnsupportedMeasurementUnit
            - other
        removed:
          type: object
          description: Supplied when error code is removedItemNotFound, removedItemDuplicate or removedItemSubstitutionNotEnabled
          $ref: '#/components/schemas/OrderitemsOrderItemRemoved'
        added:
          type: object
          description: Supplied when error code is addedItemNotFound
          $ref: '#/components/schemas/OrderitemsOrderItemAdded'
        pricing:
          type: object
          description: Detailed information when rejection happened due to pricing. Supplied when error code is addedPriceIsGreaterThanRemoved
          properties:
            orderItemsModification:
              type: object
              $ref: '#/components/schemas/OrderitemsOrderItemsModification'
            currency:
              type: string
              description: The currency of the items on the menu in ISO 4217 format, i.e. GBP, EUR, AUD or NZD
            priceDifference:
              type: number
              format: integer
              description: Price difference in the minor unit of the currency
        orderItemsModification:
          type: object
          description: Supplied when error code is equal to notSupported
          $ref: '#/components/schemas/OrderitemsOrderItemsModification'
        reasons:
          type: array
          description: A list of reasons. Supplied when error code is notSupported. The collection could be extended in the future as it is not finite hence clients should handle unknown enum values gracefully. 'other' reason should be used as a fallback
          items:
            type: string
            description: The reason
            enum:
              - oneToManySubstitution
              - manyToOneSubstitution
              - manyToManySubstitution
              - removedComplexItemInSubstitution
              - removedMealDealInSubstitution
              - addedMealDealInSubstitution
              - other
      example:
        errorCode: addedPriceIsGreaterThanRemoved
        pricing:
          orderItemsModification:
            removed:
              - orderItemId: i1-7370d231-7eca-493b-9a1a-ef22e69fcb7a
            added:
              - menuItemId: 5810d672-de4d-4add-ba94-a50057df1bf2
                menuItemVariationId: 9632192e-0b3f-4ddb-bc9b-554edccd05f2
          priceDifference: 7500
          currency: GBP
    OrderitemsOrderItemsModificationSubmitRequest:
      type: object
      description: 'Request body for submitting an order items modification and triggering the customer resolution flow. Valid combinations are: (1) ''removed'' only — out of stock; (2) ''removed'' and ''added'' — substitution; (3) ''adjusted'' only — weight adjustment for a weighed item.'
      required:
        - items
      properties:
        items:
          type: object
          description: Contains the items to be modified (removed as out of stock, substituted, or weight-adjusted)
          minProperties: 1
          properties:
            removed:
              type: array
              description: Items marked as out of stock or removed from the order
              items:
                $ref: '#/components/schemas/OrderitemsOrderItemRemoved'
            added:
              type: array
              description: Items to be added as substitutions
              items:
                $ref: '#/components/schemas/OrderitemsOrderItemAdded'
            adjusted:
              type: array
              description: Weight adjustments for weighed items. When provided, 'removed' and 'added' must be empty
              items:
                $ref: '#/components/schemas/OrderitemsOrderItemAdjusted'
      example:
        items:
          removed:
            - orderItemId: i1-7370d231-7eca-493b-9a1a-ef22e69fcb7a
          added: []
    OrderitemsOrderItemsModificationSubmitResponse:
      type: object
      description: Response body for a successful order items modification submit request
      properties:
        traceId:
          type: string
          description: |-
            The trace id of the response, used to trace the request when viewing logs.
            This will be the `x-jet-conversation` header if it's available.
      example:
        traceId: 84bef5ee-7265-47f8-9aee-28bc74f00b13
    OrderitemsOrderItemsModificationValidation:
      type: object
      description: Order Items Modification Validation Endpoint Response Schema
      properties:
        errors:
          type: array
          description: Details provided when the validation result is 'invalid'. Aligned with the rejection reasons for submission
          items:
            $ref: '#/components/schemas/OrderitemsOrderItemsModificationRejection'
    OrderpadAppAdded:
      description: Details of items added to the order
      additionalProperties: false
      properties:
        menuItemVariationId:
          description: The unique identifier for the menu item variation
          type: string
        name:
          description: The name of the added item
          type: string
        basePrice:
          description: The base price of the added item
          type: number
          format: decimal
          nullable: true
        depositAmount:
          description: The deposit amount for the added item
          type: number
          format: decimal
          nullable: true
        gtin:
          $ref: '#/components/schemas/RestaurantsGtin'
          nullable: true
        externalId:
          description: An external identifier for the added item
          type: string
      type: object
    OrderpadAppAdjustedPaymentInfo:
      description: Adjusted payment details for the order
      additionalProperties: false
      properties:
        totalPrice:
          description: The total price of the order after adjustments
          type: number
          format: decimal
        refundAmount:
          description: The amount refunded to the customer for the order
          type: number
          format: decimal
        voucherAmount:
          description: The value of vouchers applied to the order
          type: number
          format: decimal
        accountCreditAmount:
          description: The amount paid using account credit
          type: number
          format: decimal
        cardAmount:
          description: The amount paid using a card
          type: number
          format: decimal
        leftToPay:
          description: The remaining amount the customer needs to pay for the order
          type: number
          format: decimal
      type: object
    OrderpadAppAppType:
      description: Application type
      enum:
        - Orderpad
        - OrdertrackerDroid
        - OrdertrackerTouch
        - Orderbox
        - OrderDeliveryService
        - OrderpadDroid
        - OrderpadTouch
        - None
      type: string
    OrderpadAppApproveCancellationQuery:
      additionalProperties: false
      properties:
        fee:
          nullable: true
          description: Approved fee
          format: decimal
          type: number
        notes:
          nullable: true
          description: Notes about this cancellation
          type: string
      type: object
    OrderpadAppArtifact:
      additionalProperties: false
      properties:
        id:
          nullable: false
          description: The id of the artifact.
          type: string
        artifactVersion:
          nullable: true
          description: The version of the artifact.
          type: string
        createdAt:
          nullable: false
          description: The date and time the artifact was created.
          format: date-time
          type: string
      type: object
    OrderpadAppAttemptedDeliveryQuery:
      description: Details of any attempted delivery query attached to the order
      type: object
      properties:
        response:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppAttemptedDeliveryResponse'
        timeStamp:
          type: string
          format: date-time
          description: DateTime that the query was created in ISO 8601 format
        requestType:
          enum:
            - problem_with_address
            - no_answer
          type: string
          nullable: true
          description: Type of attempted delivery request
        resolution:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppAttemptedDeliveryResolution'
      additionalProperties: false
    OrderpadAppAttemptedDeliveryRequest:
      additionalProperties: false
      properties:
        reasonCode:
          description: Reason for requesting attempted delivery
          enum:
            - problem_with_address
            - no_answer
          type: string
      type: object
    OrderpadAppAttemptedDeliveryResolution:
      description: The restaurants resolution to the query
      additionalProperties: false
      properties:
        redeliveryTime:
          nullable: true
          description: Estimated redelivery time in ISO 8601 format
          format: date-time
          type: string
        cancellationReason:
          nullable: true
          description: Reason for cancelling order
          enum:
            - new_address_not_within_area
            - unable_to_reprepare
            - driver_not_available
            - area_unsafe
            - customer_doesnt_want_anymore
          type: string
        redeliveryStatus:
          nullable: true
          description: Status of the redelivery request
          enum:
            - driver_at_address
            - repreparing
          type: string
        hasBeenMarkedAsOnItsWay:
          description: Flag to indicate whether redelivery is on it's way
          type: boolean
      type: object
    OrderpadAppAttemptedDeliveryResolutionCancellationRequest:
      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
    OrderpadAppAttemptedDeliveryResolutionRedeliveryRequest:
      additionalProperties: false
      properties:
        status:
          nullable: true
          description: New status of attempted delivery
          enum:
            - driver_at_address
            - repreparing
          type: string
        newDueDate:
          nullable: true
          description: New date and time in ISO 8601 format the order is due to be delivered
          format: date-time
          type: string
      type: object
    OrderpadAppAttemptedDeliveryResponse:
      description: The customers response to the query
      additionalProperties: false
      properties:
        isViewed:
          description: Has the response been viewed
          type: boolean
        responseType:
          nullable: true
          description: Response code from the customer for attempted delivery
          enum:
            - response
            - already_delivered
          type: string
        message:
          nullable: true
          description: Response message from customer
          type: string
      type: object
    OrderpadAppBadItem:
      additionalProperties: false
      properties:
        name:
          nullable: true
          description: Name of the item
          type: string
        unitPrice:
          description: Price of a single item in local currency
          format: decimal
          type: number
        quantity:
          description: Quantity of bad items
          format: int32
          type: integer
        totalCost:
          description: Total cost of all bad items
          format: decimal
          type: number
      type: object
    OrderpadAppBadItemClaim:
      additionalProperties: false
      properties:
        status:
          description: Current status of the claim
          $ref: '#/components/schemas/OrderpadAppBadItemClaimStatus'
        issues:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppBadItemsGroupedByIssue'
          description: Bad item issues
          type: array
        id:
          nullable: true
          description: Id of the claim
          type: string
        totalCost:
          description: Total cost of the claim in local currency
          format: decimal
          type: number
        refundRefusedReasonCode:
          nullable: true
          description: If claim is refused, the reason for refusal
          type: string
      type: object
    OrderpadAppBadItemClaimStatus:
      description: Current status of a bad item claim
      enum:
        - Pending
        - Viewed
        - RefundAccepted
        - RefundRefused
      type: string
    OrderpadAppBadItemsGroupedByIssue:
      additionalProperties: false
      properties:
        items:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppBadItem'
          description: Group of items which have the same issue type
          type: array
        issue:
          nullable: true
          description: Bad item issue type
          enum:
            - Missing
            - Cold
            - Damaged
          type: string
      type: object
    OrderpadAppBringOnlineRequest:
      additionalProperties: false
      properties:
        comment:
          nullable: true
          description: Any additional information
          type: string
      type: object
    OrderpadAppCancellationInfo:
      description: Details of any cancellation attached to the order
      additionalProperties: false
      properties:
        canRequestCompensation:
          description: Can the restaurant claim compensation for this cancellation
          type: boolean
        restaurantTransaction:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppCancellationRestaurantTransaction'
        hasRequestedCompensation:
          description: Has the restaurant claimed compensation for this cancellation
          type: boolean
        reason:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppCancellationReason'
        initiatedBy:
          description: Whether cancellation has been initiated by restaurant or consumer
          $ref: '#/components/schemas/OrderpadAppCancellationInitiatedBy'
        restaurantAware:
          description: Is restaurant already aware of the cancellation
          type: boolean
      type: object
    OrderpadAppCancellationInitiatedBy:
      description: Who initiated the cancellation
      enum:
        - Unknown
        - Restaurant
        - Customer
        - System
      type: string
    OrderpadAppCancellationQueryResponse:
      type: object
      properties:
        resolution:
          $ref: '#/components/schemas/OrderpadAppCancellationResolution'
        state:
          enum:
            - New
            - Offered
            - Declined
            - Approved
          type: string
          nullable: true
          description: Cancellation query outcome
        createdAt:
          type: string
          format: date-time
          description: Cancellation query creation date and time in ISO 8601 format
        reasonCode:
          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
          type: string
          nullable: true
          description: Reason for order cancellation
        comments:
          type: string
          nullable: true
          description: Additional comments
        orderId:
          type: string
          nullable: true
          description: The id of the order
        policyResult:
          $ref: '#/components/schemas/OrderpadAppPolicyResult'
      additionalProperties: false
    OrderpadAppCancellationReason:
      description: Reason for cancellation
      additionalProperties: false
      properties:
        description:
          nullable: true
          description: Any additional comments
          type: string
        code:
          nullable: true
          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
            - cust_cancelled_out_of_stock
            - deleted_system_error
            - deleted_test_order
            - deleted_rejected_by_restaurant
          type: string
      type: object
    OrderpadAppCancellationResolution:
      description: Resolution of this cancellation query
      additionalProperties: false
      properties:
        feeApplied:
          description: Approved amount
          format: decimal
          type: number
        by:
          nullable: true
          description: Role of cancellation requester
          enum:
            - Agent
            - Restaurant
            - System
          type: string
        userName:
          nullable: true
          description: User name who created this cancellation
          type: string
        at:
          description: Creation date and time of the cancellation in ISO 8601 format
          format: date-time
          type: string
        notes:
          nullable: true
          description: Additional notes
          type: string
        state:
          nullable: true
          description: State of the cancellation resolution
          enum:
            - Approved
          type: string
      type: object
    OrderpadAppCancellationRestaurantTransaction:
      description: Potential compensation or fee applied to the restaurant for the cancellation
      additionalProperties: false
      properties:
        percentage:
          description: The percentage of the order value of the transaction
          format: decimal
          type: number
        amount:
          description: The total amount of the transaction
          format: decimal
          type: number
        type:
          description: The type of cancellation transaction
          $ref: '#/components/schemas/OrderpadAppCancellationRestaurantTransactionType'
      type: object
    OrderpadAppCancellationRestaurantTransactionType:
      description: The transaction type
      enum:
        - Unknown
        - Compensation
        - Fee
      type: string
    OrderpadAppClientOrderState:
      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
    OrderpadAppCompensationReason:
      additionalProperties: false
      properties:
        description:
          nullable: true
          description: Additional description
          type: string
        comments:
          nullable: true
          description: Additional comments
          type: string
        code:
          description: Compensation reason code
          $ref: '#/components/schemas/OrderpadAppCompensationReasonCode'
      type: object
    OrderpadAppCompensationReasonCode:
      description: Compensation reason code
      enum:
        - Unknown
        - NotSet
        - BeingPrepared
        - OnItsWay
        - Delivered
      type: string
    OrderpadAppCourierAppInfo:
      description: Information about the courier's app during the delivery
      additionalProperties: false
      properties:
        courierAppUrl:
          description: The URL for the courier's app
          type: string
          format: uri
      type: object
    OrderpadAppCourierFeedback:
      description: Feedback provided by the courier for this order
      additionalProperties: false
      properties:
        received:
          description: Indicates whether feedback was received from the courier
          type: boolean
      type: object
    OrderpadAppCreateAuthTokenRequest:
      type: object
      required:
        - emailAddress
        - loginCode
      properties:
        emailAddress:
          description: Restaurant owner email address
          type: string
        loginCode:
          description: Login code obtained on Orderpad Login
          type: string
        pushNotificationId:
          description: Push Notification Id
          type: string
      description: Request for Orderpad token creation
      example:
        emailAddress: myemail@justeattakeway.com
        loginCode: X874C5
        pushNotificationId: '1234'
    OrderpadAppCreateAuthTokenResponse:
      type: object
      required:
        - orderpadToken
      properties:
        orderpadToken:
          description: Orderpad authentication token
          type: string
      description: Orderpad authentication token
      example:
        orderpadToken: 1234abc
    OrderpadAppCreateCancellationQuery:
      additionalProperties: false
      properties:
        comments:
          nullable: true
          description: Additional comments
          type: string
        reasonCode:
          nullable: true
          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
          type: string
      type: object
    OrderpadAppCustomerAddress:
      description: Detailed customer address information
      additionalProperties: false
      properties:
        city:
          description: The city of the customer's address
          type: string
        postcode:
          description: The postcode of the customer's address
          type: string
        streetName:
          description: The street name of the customer's address
          type: string
        houseNumber:
          description: The house number of the customer's address
          type: string
        intercom:
          description: The intercom details for accessing the customer's address
          type: string
          nullable: true
        floor:
          description: The floor number of the customer's address
          type: string
          nullable: true
        apartmentName:
          description: The apartment name of the customer's address
          type: string
          nullable: true
        entrance:
          description: The entrance details for accessing the customer's address
          type: string
          nullable: true
        flatNumber:
          description: The flat number of the customer's address
          type: string
          nullable: true
        accessCode:
          description: The access code for the customer's address
          type: string
          nullable: true
        companyName:
          description: The company name associated with the customer's address
          type: string
          nullable: true
        nip:
          description: The NIP (tax identification number) associated with the customer's address
          type: string
          nullable: true
        door:
          description: Additional details about the door at the customer's address
          type: string
          nullable: true
      type: object
    OrderpadAppDeliveryDriverInfo:
      description: Delivery driver information
      additionalProperties: false
      properties:
        arrivalTimeAtRestaurant:
          nullable: true
          description: The ISO-8601 datetime arrival time of the driver
          format: date-time
          type: string
        estimatedArrivalTime:
          nullable: true
          description: The ISO-8601 datetime estimated arrival of the driver
          format: date-time
          type: string
        deliveryState:
          nullable: true
          description: Current state of the delivery
          enum:
            - Accepted
            - TransmissionFailed
          type: string
        driverName:
          nullable: true
          description: The driver's first name
          type: string
        driverContactNumber:
          nullable: true
          description: The driver's contact telephone number
          type: string
        dynamicArrivalEstimate:
          nullable: true
          description: The ISO-8601 datetime dynamic estimated arrival of the driver
          format: date-time
          type: string
        unlockCodeImageUrl:
          nullable: true
          description: Presigned Url for an unlock code image that should to be added to the receipt.
          type: string
      type: object
    OrderpadAppDueTimeChange:
      additionalProperties: false
      properties:
        newTimeDue:
          description: New DateTime of the order due in ISO 8601 format
          format: date-time
          type: string
      type: object
    OrderpadAppEposState:
      description: Current state of sending Order to EPOS system
      enum:
        - None
        - Failed
        - FailedAcknowledged
        - FailedDismissed
      type: string
    OrderpadAppFailedToReleaseToKitchen:
      description: A record of POS status events related to the order
      additionalProperties: false
      properties:
        acknowledged:
          description: Indicates whether the POS status event was acknowledged
          type: boolean
      type: object
    OrderpadAppGeoLocation:
      description: Location details
      additionalProperties: false
      properties:
        speed:
          description: The speed of travel
          format: double
          type: number
        latitude:
          nullable: true
          description: The latitude component of the location
          format: double
          type: number
        heading:
          description: The direction of travel
          format: double
          type: number
        accuracy:
          description: How accurate the location is
          format: double
          type: number
        longitude:
          nullable: true
          description: The longitude component of the location
          format: double
          type: number
      type: object
    OrderpadAppIoTClientUpdateAttributesRequest:
      description: The client's attributes to be replaced
      additionalProperties: false
      properties:
        attributes:
          type: object
          description: Key-value pairs of client's attributes be updated.
          additionalProperties:
            type: string
      type: object
    OrderpadAppIoTCredentialsResponse:
      additionalProperties: false
      type: object
      properties:
        privateKey:
          nullable: false
          description: Private key for signing device's certificate
          type: string
        deviceCertificate:
          nullable: false
          description: Device's certificate identifying the client
          type: string
        certificateAuthority:
          nullable: false
          description: The certificate authority for identifying the client
          type: string
        expiresAt:
          nullable: false
          description: Expiration date of the device certificate
          type: string
          format: date-time
        createdAt:
          nullable: false
          description: Creation date of the device certificate
          type: string
          format: date-time
        loginUrl:
          nullable: false
          description: IoT broker's login URL
          type: string
      example:
        privateKey: a6f7b874ea69329372ad75353314d7bcacd8c0be365023dab195bcac015d6009
        deviceCertificate: a6f7b874ea69329372ad75353314d7bcacd8c0be365023dab195bcac015d6009
        certificateAuthority: a6f7b874ea69329372ad75353314d7bcacd8c0be365023dab195bcac015d6009
        expiresAt: '2021-01-01T00:00:00Z'
        createdAt: '2020-01-01T00:00:00Z'
        loginUrl: https://login.example.com
    OrderpadAppLateOrderCompensationOption:
      additionalProperties: false
      properties:
        isRecommended:
          description: Whether this option is the recommended option
          type: boolean
        amount:
          description: Cost of the option in local currency
          format: decimal
          type: number
      type: object
    OrderpadAppLateOrderCompensationQuery:
      description: Details of any late order compensation query attached to the order
      additionalProperties: false
      properties:
        isViewed:
          description: Has this compensation query been viewed
          type: boolean
        compensationOptions:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppLateOrderCompensationOption'
          description: List of possible options for compensation
          type: array
        queryId:
          nullable: true
          description: The ID of the late order compensation query
          type: string
        response:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppLateOrderCompensationResponse'
      type: object
    OrderpadAppLateOrderCompensationResolutionRequest:
      additionalProperties: false
      properties:
        acceptedAmount:
          nullable: true
          description: Accepted compensation amount
          format: double
          type: number
        isAccepted:
          description: Is compensation accepted
          type: boolean
        rejectedReasonCode:
          nullable: true
          description: Reason code for rejection
          enum:
            - ExtraItem
            - StuckInTraffic
            - BusierThanExpected
            - BadWeather
            - UnexpectedProblems
          type: string
      type: object
    OrderpadAppLateOrderCompensationResponse:
      additionalProperties: false
      description: The restaurants response to the late order compensation query
      properties:
        acceptedAmount:
          nullable: true
          description: The amount of compensation if accepted
          format: decimal
          type: number
        isAccepted:
          description: Has the late order compensation request been accepted
          type: boolean
        rejectedReasonCode:
          nullable: true
          description: The rejection reason if not accepted
          enum:
            - ExtraItem
            - StuckInTraffic
            - BusierThanExpected
            - BadWeather
            - UnexpectedProblems
          type: string
      type: object
    OrderpadAppLateOrderInfo:
      description: Details of any late order query attached to the order
      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
    OrderpadAppLateOrderRequest:
      additionalProperties: false
      properties:
        lateOrderStatus:
          nullable: true
          description: Reason to adding minutes
          enum:
            - None
            - Preparing
            - OnItsWay
            - Delivered
          type: string
        additionalMinutesToAdd:
          nullable: true
          description: Amount of minutes added
          format: int32
          type: integer
      type: object
    OrderpadAppListRollout:
      additionalProperties: false
      properties:
        id:
          nullable: true
          description: The id of the release.
          type: string
        devices:
          nullable: false
          description: The ids of the devices to be rolled out.
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/OrderpadAppRolloutDevice'
              - type: string
        status:
          nullable: false
          description: The status of the release.
          $ref: '#/components/schemas/OrderpadAppReleaseRolloutStatus'
      type: object
    OrderpadAppLoginSessionRequest:
      type: object
      required:
        - emailAddress
      properties:
        emailAddress:
          description: Restaurant owner email address
          type: string
      description: Request from restaurant owner to log in the self onboarding UI
      example:
        emailAddress: myemail@justeattakeway.com
    OrderpadAppMenuCategory:
      additionalProperties: false
      properties:
        name:
          nullable: true
          description: Name of category
          type: string
          readOnly: true
        description:
          nullable: true
          description: Description of category
          type: string
          readOnly: true
        productGroups:
          type: array
          readOnly: true
          description: Product group
          items:
            $ref: '#/components/schemas/OrderpadAppProductGroup'
          nullable: true
      type: object
    OrderpadAppMergedMenuCard:
      description: Menu items of the restaurant with offline/online statuses grouped by category
      additionalProperties: false
      properties:
        categories:
          nullable: true
          description: Menu items of the restaurant with offline/online statuses grouped by category
          additionalProperties:
            $ref: '#/components/schemas/OrderpadAppMenuCategory'
          type: object
      type: object
    OrderpadAppMergedMenuResponse:
      additionalProperties: false
      properties:
        menuCard:
          $ref: '#/components/schemas/OrderpadAppMergedMenuCard'
      type: object
    OrderpadAppMergedProduct:
      additionalProperties: false
      properties:
        ids:
          type: array
          description: Deprecated, not in use
          deprecated: true
          items:
            format: int32
            type: integer
          nullable: true
        name:
          nullable: true
          description: Product name
          type: string
        isOffline:
          description: Is this product offline?
          type: boolean
        id:
          nullable: true
          description: The id of the product
          type: string
      type: object
    OrderpadAppMissingItem:
      additionalProperties: false
      properties:
        itemReference:
          nullable: true
          description: Product reference of missing item
          type: string
        refundAmount:
          description: Total cost of missing item
          format: decimal
          type: number
        name:
          nullable: true
          description: Name of the missing item
          type: string
        quantity:
          description: Number of items missing
          format: int32
          type: integer
      type: object
    OrderpadAppMissingItemClaim:
      additionalProperties: false
      properties:
        status:
          description: Current status of the missing item claim
          $ref: '#/components/schemas/OrderpadAppMissingItemClaimStatus'
        totalAmount:
          description: Total cost of the claim
          format: decimal
          type: number
        id:
          nullable: true
          description: Id of the missing item claim
          type: string
        missingItems:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppMissingItem'
          description: Items that are missing
          type: array
        totalNumberItems:
          description: Total quantity of items in the claim
          format: int32
          type: integer
        refundRefusedReasonCode:
          nullable: true
          description: Reason for refusing if status is refused
          type: string
      type: object
    OrderpadAppMissingItemClaimStatus:
      description: Status of missing item claim
      enum:
        - Unknown
        - Pending
        - Viewed
        - RefundAccepted
        - RefundRefused
      type: string
    OrderpadAppModifiedItem:
      description: Details about any modified items in the order
      additionalProperties: false
      properties:
        added:
          description: A list of items that were added to the order
          type: array
          items:
            $ref: '#/components/schemas/OrderpadAppAdded'
        removed:
          description: A list of items that were removed from the order
          type: array
          items:
            $ref: '#/components/schemas/OrderpadAppRemoved'
        refundAmount:
          description: The refund amount related to the modified items
          type: number
          format: decimal
          nullable: true
        depositRefundAmount:
          description: The deposit refund amount related to the modified items
          type: number
          format: decimal
          nullable: true
      type: object
    OrderpadAppOfflineProductsResponse:
      additionalProperties: false
      properties:
        offlineProducts:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppOrderpadOfflineProduct'
          description: Array of men items which are offline currently
          type: array
      type: object
    OrderpadAppOptimizelyData:
      additionalProperties: false
      properties:
        cdnUrl:
          nullable: true
          description: Location of the Optimizely data file
          type: string
        dataFileRevision:
          description: The index of the Optimizely revision
          format: int32
          type: integer
      type: object
    OrderpadAppOrderHistoryItem:
      additionalProperties: false
      properties:
        detail:
          nullable: true
          description: Additional information about status update
          type: string
        orderState:
          description: State order was set to
          $ref: '#/components/schemas/OrderpadAppClientOrderState'
        occurredAt:
          description: ISO 8601 Date/Time of status update
          format: date-time
          type: string
        updatedBy:
          nullable: true
          description: User who made the status update
          type: string
      type: object
    OrderpadAppOrderItem:
      additionalProperties: false
      properties:
        id:
          nullable: true
          description: Basket Id of the order item
          type: string
        orderItemAccessories:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppOrderItemAccessory'
          description: Array of accessories for this item
          type: array
        totalPrice:
          description: Total price of this item
          format: decimal
          type: number
        menuIdentifier:
          nullable: true
          description: Just Eat menu identifier
          type: string
        menuNumber:
          nullable: true
          description: Just Eat menu number
          type: string
        itemReference:
          nullable: true
          description: Item reference uniquely identifying a product on the menu but not basket instance of a product
          type: string
        quantity:
          description: Quantity of the item
          format: int32
          type: integer
        comment:
          nullable: true
          description: Additional comments
          type: string
        basketIds:
          nullable: true
          items:
            type: string
          description: Array of basket id's that make up the item. Can be multiple due to Zeus' grouping of items
          type: array
        name:
          nullable: true
          description: Name of the item
          type: string
        productTypeId:
          description: Just Eat product type id
          format: int32
          type: integer
        orderItems:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppOrderItem'
          description: Array of sub items for this item
          type: array
        productCategory:
          nullable: true
          description: Just Eat product category
          type: string
      type: object
    OrderpadAppOrderItemAccessory:
      additionalProperties: false
      properties:
        name:
          nullable: true
          description: Name of the accessory
          type: string
        id:
          nullable: true
          description: Id of the accessory
          type: string
        itemReference:
          nullable: true
          description: Item reference uniquely identifying a product on the menu but not basket instance of a product
          type: string
        quantity:
          description: Quantity of accessories
          format: int32
          type: integer
        accessoryName:
          nullable: true
          description: Name of the accessory
          type: string
        groupId:
          description: Group id of the accessory
          format: int32
          type: integer
        totalPrice:
          description: Total price of the accessory
          format: decimal
          type: number
      type: object
    OrderpadAppOrderPadClientOrder:
      additionalProperties: false
      properties:
        postcode:
          nullable: true
          description: Customer postcode
          type: string
        previousOrdersToRestaurant:
          nullable: true
          description: Number of previous orders by the customer to this restaurant
          type: string
        asSoonAsPossible:
          description: Will be false if order was a preorder
          type: boolean
        orderItems:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppOrderItem'
          description: A list of order items
          type: array
        id:
          nullable: true
          description: Id used to identify the order in Zeus
          type: string
        phone:
          nullable: true
          description: Customer phone number (will be phone masking number in markets when enabled)
          type: string
        rdsPickupTime:
          nullable: true
          description: ISO 8601 Date/Time when order will be picked up by RDS partner
          format: date-time
          type: string
        customerId:
          nullable: true
          description: Platform customer id
          type: string
        timeDue:
          description: Current agreed delivery time of the order
          format: date-time
          type: string
        addressLines:
          nullable: true
          items:
            type: string
          description: Customer address
          type: array
        cancellationInfo:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppCancellationInfo'
        missingItemClaims:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppMissingItemClaim'
          description: A list of missing item claims attached to the order
          type: array
        lateOrderInfo:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppLateOrderInfo'
        previousOrders:
          nullable: true
          description: Number of previous Just Eat orders by the customer
          type: string
        city:
          nullable: true
          description: Customer city
          type: string
        prepareOrderFor:
          nullable: true
          description: ISO 8601 Date/Time when order should be prepared for
          format: date-time
          type: string
        startOrderPreparationAt:
          nullable: true
          description: ISO 8601 Date/Time for restaurant to start preparing the order
          format: date-time
          type: string
        location:
          nullable: true
          description: Geo location of the customers address
          $ref: '#/components/schemas/OrderpadAppGeoLocation'
        sourcePartner:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppPartnerInfo'
        deliveryDriverUsername:
          nullable: true
          description: Delivery drivers user name (usually their phone number)
          type: string
        phoneMaskingCode:
          nullable: true
          description: Code to use when calling customer phone masking number about this order
          type: string
        paymentInfo:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppPaymentInfo'
        name:
          nullable: true
          description: Customer name
          type: string
        deliveredAt:
          nullable: true
          description: ISO 8601 Date/Time order was delivered
          format: date-time
          type: string
        orderHistory:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppOrderHistoryItem'
          description: Ordered history of status updates to the order and when they happened
          type: array
        notes:
          nullable: true
          description: General order notes
          type: string
        preferredTimeDue:
          description: Current agreed delivery time of the order
          format: date-time
          type: string
        badItemClaims:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppBadItemClaim'
          description: A list of bad item claims attached to the order
          type: array
        lateOrderCompensationQuery:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppLateOrderCompensationQuery'
        deliveryDriverInfo:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppDeliveryDriverInfo'
        restaurantInformation:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppRestaurantInfo'
        restaurantId:
          nullable: true
          description: Restaurant Id of the order
          type: string
        receivedAt:
          description: ISO 8601 Date/Time order was paid
          format: date-time
          type: string
        acceptedAt:
          description: ISO 8601 Date/Time order was accepted by the restaurant
          format: date-time
          type: string
        eposState:
          description: Current state of sending the order to the restaurants EPOS system
          $ref: '#/components/schemas/OrderpadAppEposState'
        modernId:
          nullable: true
          description: Just Eat modern order id
          type: string
        deliveryNote:
          nullable: true
          description: Delivery specific notes
          type: string
        externalCustomerId:
          nullable: true
          description: Customer id restaurants can use to identify customer
          type: string
        customerNote:
          nullable: true
          description: Customer added notes
          type: string
        attemptedDeliveryQuery:
          nullable: true
          $ref: '#/components/schemas/OrderpadAppAttemptedDeliveryQuery'
        isPreorder:
          description: Whether order is a preorder
          type: boolean
        acceptedFor:
          description: ISO 8601 Date/Time time due at the point of acceptance
          format: date-time
          type: string
        isRdsOrder:
          description: Will be true if delivery is being arranged by Just Eat
          type: boolean
        orderState:
          description: Current state of the order
          $ref: '#/components/schemas/OrderpadAppClientOrderState'
        withDriverAt:
          nullable: true
          description: ISO 8601 Date/Time order was handed over to driver
          format: date-time
          type: string
        orderType:
          description: Type of order (collection or delivery)
          $ref: '#/components/schemas/OrderpadAppOrderType'
        containsAlcohol:
          description: Indicates if the order contains alcohol
          type: boolean
        isContactFreeDelivery:
          description: Specifies if the delivery is contact-free
          type: boolean
        initialPreparationTimeMinutes:
          description: Initially estimated preparation time for the order in minutes
          type: integer
        streetName:
          description: Name of the street for the delivery address
          type: string
        posStatusEvents:
          description: A record of POS status events related to the order
          $ref: '#/components/schemas/OrderpadAppPosStatusEvents'
        courierFeedback:
          description: Feedback provided by the courier for this order
          $ref: '#/components/schemas/OrderpadAppCourierFeedback'
        adjustedPaymentInfo:
          description: Adjusted payment details for the order
          $ref: '#/components/schemas/OrderpadAppAdjustedPaymentInfo'
        courierAppInfo:
          description: Information about the courier's app during the delivery
          $ref: '#/components/schemas/OrderpadAppCourierAppInfo'
        customerAddress:
          description: Detailed customer address information
          $ref: '#/components/schemas/OrderpadAppCustomerAddress'
        modifiedItems:
          description: Details about any modified items in the order
          items:
            $ref: '#/components/schemas/OrderpadAppModifiedItem'
          type: array
        preparation:
          nullable: true
          description: Information about the preparation process of the order
          $ref: '#/components/schemas/OrderpadAppPreparation'
        featureFlags:
          description: Dictionary containing feature flags for the order
          type: object
          additionalProperties:
            type: boolean
      type: object
    OrderpadAppOrderStateChange:
      required:
        - newState
      additionalProperties: false
      properties:
        newState:
          description: New order state
          $ref: '#/components/schemas/OrderpadAppClientOrderState'
        timeAcceptedFor:
          description: If accepting order what date time (with offset) are you accepting it for
          format: date-time
          type: string
      type: object
    OrderpadAppOrderType:
      description: Type of order
      enum:
        - Collection
        - Delivery
        - Unknown
      type: string
    OrderpadAppOrderpadOfflineProduct:
      additionalProperties: false
      properties:
        createdOn:
          description: Date and time in ISO 8601 format taken offline
          format: date-time
          type: string
        createdBy:
          nullable: true
          description: Application which requested operation e.g. Orderpad, RestaurantApp
          type: string
        restaurantId:
          description: The Id of the restaurant
          format: int32
          type: integer
        productId:
          nullable: true
          description: The id of the menu item
          type: string
        nextAvailableAt:
          nullable: true
          description: Date and time in ISO 8601 format when item will be brought back online
          format: date-time
          type: string
      type: object
    OrderpadAppOrderpadSetupType:
      description: Type of order pad set up
      enum:
        - Unknown
        - SignUp
        - Upgrade
        - Swap
      type: string
    OrderpadAppOrdersData:
      additionalProperties: false
      properties:
        unreceivedOrders:
          nullable: true
          items:
            type: string
          description: List of all changed orders for a restaurant
          type: array
      type: object
    OrderpadAppPagedArtifacts:
      allOf:
        - $ref: '#/components/schemas/PagingPagedCursorResponse'
        - type: object
          description: List of all available artifacts
          properties:
            artifacts:
              type: array
              items:
                $ref: '#/components/schemas/OrderpadAppArtifact'
    OrderpadAppPagedReleases:
      allOf:
        - $ref: '#/components/schemas/PagingPagedCursorResponse'
        - type: object
          description: List of all releases
          properties:
            releases:
              type: array
              items:
                $ref: '#/components/schemas/OrderpadAppRelease'
    OrderpadAppPartnerInfo:
      description: Information about the source of the order (Just Eat, Third Party etc.)
      additionalProperties: false
      properties:
        partnerId:
          nullable: true
          description: Partner id of the source
          type: string
        source:
          nullable: true
          description: Where did the order originate (Just Eat, third party etc.)
          type: string
        partnerName:
          nullable: true
          description: Partner name of the source
          type: string
        orderReference:
          nullable: true
          description: Reference that partner uses to identify the order
          type: string
        friendlyOrderReference:
          nullable: true
          description: Friendly order reference
          type: string
      type: object
    OrderpadAppPaymentInfo:
      description: Payment details for the order
      additionalProperties: false
      properties:
        voucherAmount:
          description: Total amount paid for with a voucher
          format: decimal
          type: number
        feeText:
          nullable: true
          description: Type of fee (`spanner`, `card`, `servicecharge`)
          type: string
        isCashPayment:
          description: Is it a cash order
          type: boolean
        totalPrice:
          description: Total price of the order
          format: decimal
          type: number
        currency:
          nullable: true
          description: Name of the currency used for the order
          type: string
        accountCreditAmount:
          description: Total amount paid for with account credit
          format: decimal
          type: number
        discountSource:
          nullable: true
          description: Source of discount (i.e. Just Eat or restaurant funded)
          type: string
        cardAmount:
          description: Amount paid by card
          format: decimal
          type: number
        leftToPay:
          description: Amount left for customer to pay in cash after all vouchers and discounts removed from total
          format: decimal
          type: number
        discount:
          description: Total amount of discount
          format: decimal
          type: number
        deliveryCharge:
          description: Amount of cost that comes from delivery
          format: decimal
          type: number
        cardNumberLast4Digits:
          nullable: true
          description: Last 4 digits of the payment card
          type: string
        cardFee:
          description: Card fee for the order
          format: decimal
          type: number
        taxes:
          nullable: true
          description: Tax information for the order
          additionalProperties:
            format: decimal
            type: number
          type: object
      type: object
    OrderpadAppPolicyEligibility:
      description: Eligibility details
      additionalProperties: false
      properties:
        code:
          nullable: true
          description: Policy rule name
          enum:
            - BlockBlacklistedRestaurants
            - BlockCashCancellationBlacklistedRestaurants
            - BlockCashOrders
            - CashCancellationsAreWithinAllowedThreshold
            - CashOrderInTheWindowAfterAcceptance
            - MaxCancellationsPerCustomer
            - MaxCancellationsPerRestaurant
            - EvaluateMaxOrderValue
            - NotInTheWindowAfterAcceptance
            - OrderCancelledStatePolicy
            - IsRestaurantCancellationCapable
          type: string
        passed:
          description: Passed or not
          type: boolean
      type: object
    OrderpadAppPolicyFee:
      description: Fee details after the policy run
      additionalProperties: false
      properties:
        percentage:
          description: Percentage to be returned
          format: decimal
          type: number
        justificationCode:
          nullable: true
          description: Justification code
          enum:
            - CancellationOutsideWindow
            - UnChargeableReason
            - EmptyAcceptedAt
            - CancellationInsideWindow
          type: string
        amount:
          description: Amount to be returned in local currency
          format: decimal
          type: number
      type: object
    OrderpadAppPolicyOutcome:
      description: Result of the policy run
      additionalProperties: false
      properties:
        fee:
          $ref: '#/components/schemas/OrderpadAppPolicyFee'
        decision:
          nullable: true
          description: Decision after policy run
          enum:
            - Offered
            - Declined
          type: string
      type: object
    OrderpadAppPolicyResult:
      description: Result of the policy run
      additionalProperties: false
      properties:
        outcome:
          $ref: '#/components/schemas/OrderpadAppPolicyOutcome'
        eligibility:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppPolicyEligibility'
          type: array
      type: object
    OrderpadAppPosStatusEvents:
      description: A record of POS status events related to the order
      additionalProperties: false
      properties:
        failedToReleaseToKitchen:
          description: Details about a failure to release the order to the kitchen
          $ref: '#/components/schemas/OrderpadAppFailedToReleaseToKitchen'
      type: object
    OrderpadAppPreparation:
      description: Information about the preparation process of the order
      additionalProperties: false
      properties:
        clientId:
          description: The unique identifier for the client associated with the preparation
          type: string
        preparationState:
          description: The current state of the preparation process
          enum:
            - started
            - finished
          type: string
      type: object
    OrderpadAppPreparationState:
      description: Information about the preparation state
      additionalProperties: false
      properties:
        preparationState:
          description: State of preparation of the order
          enum:
            - started
            - finished
          type: string
        itemCountryOrigins:
          description: Dictionary mapping item identifiers to their country of origin
          type: object
          additionalProperties:
            type: string
          nullable: true
      type: object
    OrderpadAppProductGroup:
      additionalProperties: false
      properties:
        products:
          nullable: true
          items:
            $ref: '#/components/schemas/OrderpadAppMergedProduct'
          description: List of products
          type: array
      type: object
    OrderpadAppPushNotificationRegistrationUpdate:
      additionalProperties: false
      properties:
        appType:
          description: Application type
          $ref: '#/components/schemas/OrderpadAppAppType'
        pushNotificationToken:
          nullable: true
          description: Push notification token
          type: string
      type: object
    OrderpadAppPutProductBackOnTheMenuCommand:
      additionalProperties: false
      properties:
        deletedBy:
          nullable: true
          description: Application which requested operation e.g. Orderpad, RestaurantApp
          type: string
        requestedAt:
          nullable: true
          description: Request date and time in ISO 8601 format
          format: date-time
          type: string
        productIds:
          nullable: true
          items:
            type: string
          description: List of product Ids to be brought back online
          type: array
      type: object
    OrderpadAppRegistrationCodeResponse:
      properties:
        restaurantId:
          nullable: false
          description: Restaurant id
          type: string
        registrationCode:
          nullable: true
          description: Registration code to pair device
          type: string
        registrationCodeId:
          nullable: false
          description: Registration code id generated on creation
          type: string
        durationInMinutes:
          nullable: false
          description: The duration of the registration code in minutes
          type: integer
          format: int32
        absoluteExpiry:
          nullable: false
          description: The absolute expiry of the registration code
          type: string
          format: date-time
      type: object
      description: Response to the Orderpad registration code for a given restaurant.
      additionalProperties: false
    OrderpadAppRegistrationRequest:
      additionalProperties: false
      properties:
        username:
          nullable: true
          description: Username
          type: string
        password:
          nullable: true
          description: Password
          type: string
        pushNotificationId:
          nullable: true
          description: The id used in push notification registration
          type: string
        appType:
          description: Application type
          $ref: '#/components/schemas/OrderpadAppAppType'
      type: object
    OrderpadAppRegistrationResponse:
      additionalProperties: false
      properties:
        appType:
          nullable: true
          description: Application type
          type: string
        token:
          nullable: true
          description: Created authentication token
          type: string
        restaurantId:
          nullable: true
          description: The Id of the restaurant
          type: string
        userId:
          nullable: true
          description: The Id of the user
          type: string
      type: object
    OrderpadAppRelease:
      additionalProperties: false
      properties:
        id:
          nullable: true
          description: The id of the release.
          type: string
        name:
          nullable: false
          description: The name of the release.
          type: string
        country:
          nullable: true
          description: The country code for country of the release.
          type: string
        artifactId:
          nullable: false
          description: The id of the artifact uses to create the release.
          type: string
        type:
          nullable: false
          description: The type of the release.
          $ref: '#/components/schemas/OrderpadAppReleaseType'
        status:
          nullable: false
          description: The status of the release.
          $ref: '#/components/schemas/OrderpadAppReleaseRolloutStatus'
        rollouts:
          nullable: true
          description: The rollouts of the release.
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/OrderpadAppStagedRollout'
              - $ref: '#/components/schemas/OrderpadAppListRollout'
      type: object
    OrderpadAppReleaseRolloutStatus:
      enum:
        - new
        - inProgress
        - cancelled
        - failed
        - success
      type: string
      default: new
      description: The status of the release or device rollout.
    OrderpadAppReleaseType:
      enum:
        - staged
        - list
      type: string
      description: The type of the release.
    OrderpadAppRemoved:
      description: Details of items removed from the order
      additionalProperties: false
      properties:
        orderItemId:
          description: The unique identifier for the removed order item
          type: string
      type: object
    OrderpadAppRestaurantConfiguration:
      additionalProperties: false
      description: The restaurant configuration details
      properties:
        addressLine1:
          nullable: true
          description: Address line 1
          type: string
        financeDetails:
          $ref: '#/components/schemas/OrderpadAppRestaurantFinanceDetails'
        website:
          nullable: true
          description: Web site address of the restaurant
          type: string
        geoLocation:
          $ref: '#/components/schemas/OrderpadAppGeoLocation'
        supportDetails:
          $ref: '#/components/schemas/OrderpadAppRestaurantSupportDetails'
        phoneNumber:
          nullable: true
          description: Phone number
          type: string
        isFlypayEposEnabled:
          description: Is Flypay enabled
          type: boolean
        isDmsEnabled:
          description: Is DMS enabled
          type: boolean
        addressCity:
          nullable: true
          description: Address city
          type: string
        logoUrl:
          nullable: true
          description: Logo URL
          type: string
        isRdsRestaurant:
          description: Is it RDS restaurant
          type: boolean
        brandName:
          nullable: true
          description: Name of the brand this restaurant belongs to
          type: string
        tempOffline:
          $ref: '#/components/schemas/OrderpadAppRestaurantTempOffline'
        name:
          nullable: true
          description: Name of the restaurant
          type: string
        postalCode:
          nullable: true
          description: Post code of the restaurant
          type: string
      type: object
    OrderpadAppRestaurantConfigurationDefinition:
      additionalProperties: false
      properties:
        Id:
          nullable: false
          description: The identifier of this configuration definitions
          type: string
        Name:
          nullable: false
          description: A user friendly label for this configuration setting
          type: string
        Description:
          nullable: false
          description: A more detailed description of what this setting is for and what it does
          type: string
        Category:
          nullable: false
          description: Provides a mechanism to group settings with the same category.
          type: string
        SystemOnly:
          nullable: false
          description: If true, indicates that this setting should not be configurable via UI, but should be set by the platform automatically.
          type: boolean
      type: object
    OrderpadAppRestaurantDetails:
      additionalProperties: false
      properties:
        RestaurantId:
          nullable: false
          description: Restaurant id
          type: string
        LogoUrl:
          nullable: true
          description: Restaurant Logo
          type: string
        Name:
          nullable: false
          description: Restaurant name
          type: string
        Address:
          type: object
          description: Restaurant address details
          properties:
            City:
              nullable: true
              description: Restaurant city
              type: string
            PostCode:
              nullable: true
              description: Restaurant post code
              type: string
      type: object
    OrderpadAppRestaurantFinanceDetails:
      description: Restaurant finance details
      additionalProperties: false
      properties:
        paymentMode:
          nullable: true
          description: Current payment mode
          enum:
            - CardOnly
            - CardAndCash
          type: string
      type: object
    OrderpadAppRestaurantInfo:
      description: Restaurant information for the order
      additionalProperties: false
      properties:
        addressCity:
          nullable: true
          description: Restaurant address city
          type: string
        name:
          nullable: true
          description: Restaurant name
          type: string
        postalCode:
          nullable: true
          description: Restaurant name
          type: string
        addressLine1:
          nullable: true
          description: Restaurant address line 1
          type: string
        website:
          nullable: true
          description: Restaurant website
          type: string
        geoLocation:
          nullable: true
          description: Restaurant geolocation
          oneOf:
            - $ref: '#/components/schemas/OrderpadAppGeoLocation'
        vatRegistrationNumber:
          nullable: true
          description: Restaurant VAT registration number
          type: string
        phoneNumber:
          nullable: true
          description: Restaurant phone number
          type: string
      type: object
    OrderpadAppRestaurantSupportDetails:
      description: Restaurant support details
      additionalProperties: false
      properties:
        phoneNumber:
          nullable: true
          description: Phone number of the restaurant
          type: string
      type: object
    OrderpadAppRestaurantTempOffline:
      description: The details for a restaurant being temporarily offline
      additionalProperties: false
      properties:
        categories:
          nullable: true
          items:
            type: string
          description: List of current temp offline categories
          type: array
        type:
          nullable: true
          description: Temp offline type
          enum:
            - CancellationOutsideWindow
            - Unset
            - TempOffline
            - ClosedToday
            - ClosedDueTo
            - OnVacationOpens
            - OnVacationClosed
            - None
            - ClosedDueToEvent
            - ClosedDueToEmergency
            - FailedJctConnection
            - NoTrOverride
            - IgnoredOrders
            - ClosedByTempOfflineTool
          type: string
      type: object
    OrderpadAppRestaurantUpdateResponse:
      additionalProperties: false
      properties:
        optimizelyData:
          nullable: true
          description: Details of current Optimizely data file and location
          oneOf:
            - $ref: '#/components/schemas/OrderpadAppOptimizelyData'
        ordersData:
          nullable: true
          description: Data containing all changed orders for a restaurant since last call
          oneOf:
            - $ref: '#/components/schemas/OrderpadAppOrdersData'
      type: object
    OrderpadAppRolloutDevice:
      additionalProperties: false
      properties:
        deviceId:
          nullable: false
          description: The id of the release.
          type: string
        status:
          nullable: false
          description: The status of the device rollout.
          $ref: '#/components/schemas/OrderpadAppReleaseRolloutStatus'
      type: object
    OrderpadAppSecretsResponse:
      additionalProperties: false
      properties:
        secrets:
          nullable: true
          description: Dictionary of secrets providers available
          additionalProperties:
            description: Key of a single secret
            additionalProperties:
              description: Secret value
              type: string
            type: object
          type: object
      type: object
    OrderpadAppSendSmsRequest:
      additionalProperties: false
      properties:
        message:
          nullable: true
          description: Message to send
          type: string
      type: object
    OrderpadAppSendSmsResponse:
      additionalProperties: false
      properties:
        mobileNumberUsed:
          nullable: true
          description: Mobile number to which message were sent
          type: string
      type: object
    OrderpadAppSetPaymentModeRequest:
      additionalProperties: false
      properties:
        paymentMode:
          nullable: true
          description: New payment mode
          enum:
            - CardOnly
            - CardAndCash
          type: string
      type: object
    OrderpadAppSetupOrderpadRequest:
      additionalProperties: false
      properties:
        postCode:
          nullable: true
          description: Set up postcode
          type: string
        phoneNumber:
          nullable: true
          description: Callback phone number
          type: string
        setupType:
          description: Orderpad set up type
          $ref: '#/components/schemas/OrderpadAppOrderpadSetupType'
      type: object
    OrderpadAppStagedRollout:
      additionalProperties: false
      properties:
        id:
          nullable: true
          description: The id of the release.
          type: string
        stageName:
          nullable: false
          description: The name of the stage.
          type: string
        status:
          nullable: false
          description: The status of the release.
          $ref: '#/components/schemas/OrderpadAppReleaseRolloutStatus'
      type: object
    OrderpadAppTakeOfflineRequest:
      additionalProperties: false
      properties:
        comment:
          nullable: true
          description: Any additional information
          type: string
        tempOfflineType:
          nullable: true
          description: Identifier of the reason for taking the restaurant offline
          enum:
            - TempOffline
            - ClosedToday
          type: string
      type: object
    OrderpadAppTakeProductOffTheMenuCommand:
      additionalProperties: false
      properties:
        requestedAt:
          nullable: true
          description: Request date and time in ISO 8601 format
          format: date-time
          type: string
        createdBy:
          nullable: true
          description: Application which requested operation e.g. Orderpad, RestaurantApp
          type: string
        productIds:
          nullable: true
          items:
            type: string
          description: List of product Ids to be taken offline
          type: array
      type: object
    OrderpadAppUpdateRestaurantsConfigurationsRequest:
      description: The configurations to be updated for the provided restaurants
      additionalProperties: false
      properties:
        restaurantIds:
          nullable: false
          items:
            type: string
          description: List of restaurant ids.
          type: array
        configurations:
          additionalProperties:
            type: boolean
          description: A set of configuration options to be updated.
      type: object
    OrderpadAppUserInfo:
      additionalProperties: false
      properties:
        id:
          nullable: false
          description: The Id of the user
          type: string
        restaurantId:
          nullable: false
          description: The Id of the restaurant that this user has access to
          type: string
        authorisedProductType:
          nullable: false
          description: The type of device that this user has access to
          type: number
        mobileContact:
          nullable: true
          description: The mobile number of this user
          type: string
        displayName:
          nullable: true
          description: The display name of the user
          type: string
        password:
          nullable: false
          description: The password that the user may use to login
          type: string
        passwordSalt:
          nullable: false
          description: The salt used to calculate the password hash for this user
          type: string
      type: object
    OrdersApiV2ItemV2:
      properties:
        Name:
          type: string
          description: The name of the item
        UnitPrice:
          format: money
          type: integer
          description: The unit price
        Reference:
          type: string
          description: The reference for the item
        Quantity:
          type: integer
          description: How many items
        Items:
          items:
            $ref: '#/components/schemas/OrdersApiV2ItemV2'
          type: array
      type: object
      description: A payment item
    OrdersApiV2LocationV2:
      required:
        - Latitude
        - Longitude
      properties:
        Longitude:
          format: double
          type: number
          description: Longitude
        Latitude:
          format: double
          type: number
          description: Latitude
      example:
        Longitude: -0.103198
        Latitude: 51.51641
      type: object
      description: Coordinates of a position
    OrdersWebhooksOrderReadyForPreparation:
      properties:
        OrderId:
          type: string
          description: The order ID
        CustomerNotes:
          additionalProperties:
            type: string
          type: object
          description: Any additional notes from the customer
        Restaurant:
          description: The restaurant fulfilling the order
          properties:
            Reference:
              type: string
              description: The restaurant reference
            Address:
              description: The address of the restaurant
              properties:
                City:
                  type: string
                  description: The city
                Lines:
                  description: The address lines
                  items:
                    type: string
                  type: array
                Geolocation:
                  $ref: '#/components/schemas/LogisticsLocation'
                PostalCode:
                  type: string
                  description: The postcode
              type: object
            PhoneNumber:
              type: string
              description: The phone number
            Id:
              type: string
              description: The id of the restaurant
            Name:
              type: string
              description: The name of the restaurant
          type: object
        Payment:
          description: The payment details
          properties:
            Lines:
              items:
                properties:
                  Value:
                    format: money
                    type: number
                    description: The value of the item
                  Paid:
                    type: boolean
                    description: true if already paid
                  Type:
                    description: The payment type
                    enum:
                      - card
                      - cash
                      - credit
                      - other
                    type: string
                type: object
              type: array
          type: object
        Customer:
          description: The customer details
          properties:
            Name:
              type: string
              description: The customer's name
            Id:
              type: string
              description: The customer's id
          type: object
        PlacedDate:
          description: The date the order was placed
          format: date-time
          type: string
        Currency:
          description: The currency the payment is in
          type: string
        Items:
          items:
            $ref: '#/components/schemas/OrdersApiV2ItemV2'
          type: array
        IsTest:
          type: boolean
          description: True if a test order
        Fulfilment:
          description: The details for fulfilment
          properties:
            PrepareFor:
              format: date-time
              type: string
              description: When the order will be prepared
            PreparationTime:
              format: timespan
              type: string
              description: The preparation time
            CustomerDueAsap:
              type: boolean
              description: The customer wants the order ASAP
            CustomerDueDate:
              format: date-time
              type: string
              description: The time due at the customer
            Address:
              description: The customer address
              properties:
                City:
                  type: string
                  description: The city
                Lines:
                  description: The address lines
                  items:
                    type: string
                  type: array
                Geolocation:
                  $ref: '#/components/schemas/LogisticsLocation'
                PostalCode:
                  type: string
                  description: The postcode
              type: object
            PhoneNumber:
              type: string
              description: The phone number
            Method:
              enum:
                - Delivery
                - Collection
              type: string
              description: The fulfilment method
          type: object
        TotalPrice:
          description: The total price
          format: money
          type: number
        PriceBreakdown:
          description: The breakdown of the price
          properties:
            Discount:
              format: money
              type: number
              description: Any applied discount
            Taxes:
              format: money
              type: number
              description: Any applied taxes
            Tips:
              format: money
              type: number
              description: Any tips
            Fees:
              description: The fees
              properties:
                Delivery:
                  format: money
                  type: number
                  description: The delivery charge
                ServiceCharge:
                  format: money
                  type: number
                  description: The service charge
                Other:
                  format: money
                  type: number
                  description: Any other charges
              type: object
            Items:
              format: money
              type: number
              description: Payment for items
          type: object
      description: Notification that the order is ready for preparation
      type: object
      example:
        OrderId: XYZ123456
        CustomerNotes:
          - Key: Floor
            Value: 5th floor
          - Key: Code
            Value: Code 1234
        Restaurant:
          Refererence: R99999
          Address:
            City: London
            Lines:
              - Oldridge Road
            Geolocation:
              Latitude: 51.4484
              Longitude: -0.1504
            PostalCode: SW12 8PW
          PhoneNumber: 441200000000
          Id: '99999'
          Name: Just Eat Test Restaurant
        Payment:
          Lines:
            - Value: 19.25
              Paid: false
              Type: card
        Customer:
          Name: Bruce Wayne
          Id: Batman
        PlacedDate: '2018-03-10T14:45:28.0000000+00:00'
        Currency: GBP
        Items:
          - TotalPrice: 10
            Reference: '1234'
            Synonym: ''
            UnitPrice: 5
            Items:
              - Reference: '9876'
                Synonym: Regular
                UnitPrice: 0
                Items: []
                Quantity: 1
                Name: Fries
              - Reference: '6789'
                Synonym: 330ml
                UnitPrice: 0
                Items: []
                Quantity: 2
                Name: Pepsi
            Quantity: 2
            Name: Chicken Box Meal
          - TotalPrice: 7.25
            Reference: '4321'
            Synonym: ''
            UnitPrice: 7.25
            Items: []
            Quantity: 1
            Name: Milkshake
        IsTest: true
        Fulfilment:
          CustomerDueAsap: false
          CustomerDueDate: '2018-03-10T14:45:28.0000000+00:00'
          Address:
            City: London
            Lines:
              - Fleet Place House
              - Fleet Pl
            Geolocation:
              Latitude: 51.51641
              Longitude: -0.103198
            PostalCode: EC4M 7RD
          PhoneNumber: 441234567890
          Method: Delivery
        TotalPrice: 19.25
        PriceBreakdown:
          Discount: 0
          Taxes: 3.85
          Tips: 0.5
          Fees:
            Delivery: 1
            ServiceCharge: 0.5
            Other: 0
          Items: 17.25
    OrdersWebhooksSendToPosFailed:
      properties:
        OrderId:
          type: string
          description: The id of the order
      type: object
    OutofstockorderitemsGetStatusResponse:
      type: object
      description: Status of the out of stock items request for the specific order
      properties:
        status:
          type: string
          description: Status
          enum:
            - submitted
            - processed
            - failed
        items:
          type: array
          items:
            $ref: '#/components/schemas/OutofstockorderitemsItem'
    OutofstockorderitemsItem:
      type: object
      description: An item marked as out of stock
      properties:
        itemId:
          type: string
          description: The id of the out of stock item
    PagingPagedAfterOnlyCursorResponse:
      type: object
      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
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    PagingPagedCursorResponse:
      type: object
      description: Cursor Paging information
      properties:
        paging:
          description: Consists of pagination information.
          properties:
            cursors:
              description: Consists of cursors markers used in pagination.
              properties:
                before:
                  description: Cursor parameter to use in the next request to the resource to fetch the previous page of data.
                  type: string
                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
      example:
        paging:
          cursors:
            before: KHt67IUVSDJDVLa
            after: NDMyNzQyODI3OTQw
    PartnerAppBulkUpdatePartnersConfigurationsRequest:
      description: The configurations to be updated for the provided restaurants
      additionalProperties: false
      properties:
        restaurantIds:
          nullable: false
          items:
            type: string
          description: List of restaurant ids.
          type: array
        configurations:
          additionalProperties:
            type: boolean
          description: A set of configuration options to be updated.
      type: object
    PartnerAppCategory:
      type: object
      additionalProperties: false
      properties:
        id:
          description: A unique identifier for a given category
          type: string
          minLength: 1
          nullable: false
        name:
          description: Name of category
          type: string
          nullable: false
        items:
          description: Menu items
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/PartnerAppMenuItem'
          nullable: false
    PartnerAppDealGroup:
      additionalProperties: false
      properties:
        id:
          description: A unique identifier for a deal group
          type: string
          minLength: 1
          nullable: false
        name:
          description: Name of deal group
          type: string
          nullable: false
        dealItemVariations:
          type: array
          description: List of deal item variations in this group
          items:
            $ref: '#/components/schemas/PartnerAppDealItemVariation'
          nullable: false
      type: object
    PartnerAppDealItemVariation:
      type: object
      additionalProperties: false
      properties:
        dealItemVariationId:
          type: string
          description: Unique identifier for the deal item variation
          nullable: false
    PartnerAppMenu:
      type: object
      additionalProperties: false
      properties:
        categories:
          items:
            $ref: '#/components/schemas/PartnerAppCategory'
          description: The categories for grouping menu items
          type: array
          minItems: 1
          nullable: false
      example:
        categories:
          - id: 0800b80e-76ca-48e5-89b6-11764ed62255
            name: Meal Deals
            items:
              - id: 51931e3c-3612-41bb-a2cd-df6bdeca167a
                name: Mini Mega Meal
                type: deal
                urlTemplate: https://just-eat-staging-eu-res.cloudinary.com/image/upload/c_fill,q_auto,{transformations}/v1/uk/databank-products/5016840102205/default
                gtin: null
                externalId: null
                variations:
                  - basePrice: 10.99
                    dealGroupsIds:
                      - 5684a418-af9e-4856-8237-3801e1c69063
                      - d862af8b-370e-4bd8-8d36-f3930d77ede4
                    id: 51931e3c-3612-41bb-a2cd-df6bdeca167a
                    kitchenNumber: '142'
                    modifierGroupsIds: []
                    name: ''
                    type: NoVariation
                    isOffline: false
                    nextAvailableAt: '2024-03-20T14:00:00+00:00'
                    gtin: null
                    externalId: null
                modifierGroups: []
                dealGroups:
                  - dealItemVariations:
                      - dealItemVariationId: c816d50e-cb9d-4e9f-baf7-2814e5f9e145
                    id: 5684a418-af9e-4856-8237-3801e1c69063
                    name: Choose your Sauce and Salad
                  - dealItemVariations:
                      - dealItemVariationId: 1ad505f5-395e-4cd5-a58c-ea01c04ce18b
                      - dealItemVariationId: 503aae5f-0e93-4d37-8e6d-c6038e0bef36
                    id: d862af8b-370e-4bd8-8d36-f3930d77ede4
                    name: Choose 1 drink
          - id: 837ee5bb-4a9a-4ff5-8452-b381ef3a01fe
            name: Modifiers
            items:
              - id: 2f206d19-ad95-42c7-b36d-cada2103b558
                name: Peri Peri Beef Pizza
                type: menuitem
                urlTemplate: https://example.com/some.jpg
                gtin: null
                externalId: null
                variations:
                  - basePrice: 9.99
                    dealGroupsIds: []
                    id: 2f206d19-ad95-42c7-b36d-cada2103b558-4
                    kitchenNumber: null
                    modifierGroupsIds:
                      - b4957ec7-86b2-458e-ac00-1ecb6b897cf1
                    name: 09"
                    type: Variation
                    isOffline: false
                    nextAvailableAt: '2024-03-20T14:00:00+00:00'
                    gtin: null
                    externalId: null
                  - basePrice: 10.99
                    dealGroupsIds: []
                    id: f206d19-ad95-42c7-b36d-cada2103b558-5
                    kitchenNumber: null
                    modifierGroupsIds:
                      - b4957ec7-86b2-458e-ac00-1ecb6b897cf2
                    name: 12"
                    type: Variation
                    isOffline: false
                    nextAvailableAt: '2024-03-20T14:00:00+00:00'
                    gtin: null
                    externalId: null
                modifierGroups:
                  - name: Choose your Crust
                    id: b4957ec7-86b2-458e-ac00-1ecb6b897cf1
                    modifiers:
                      - id: b8bcc206-7f4e-42da-8065-e22cf781edb6-4
                        isOffline: false
                        name: Regular Crust
                        nextAvailableAt: '2024-03-20T14:00:00+00:00'
                      - id: 20da28cc-8f3c-4d0b-89a1-f15903f143d5-4
                        isOffline: false
                        name: Stuffed Crust
                        nextAvailableAt: '2024-03-20T14:00:00+00:00'
                  - name: Choose your Crust
                    id: b4957ec7-86b2-458e-ac00-1ecb6b897cf2
                    modifiers:
                      - id: b8bcc206-7f4e-42da-8065-e22cf781edb6-5
                        isOffline: false
                        name: Regular Crust
                        nextAvailableAt: '2024-03-20T14:00:00+00:00'
                      - id: 20da28cc-8f3c-4d0b-89a1-f15903f143d5-5
                        isOffline: false
                        name: Stuffed Crust
                        nextAvailableAt: '2024-03-20T14:00:00+00:00'
                dealGroups: []
          - id: e17f0e16-003a-4804-80b6-f4cd803d342f
            name: One Variation
            items:
              - id: 1ad505f5-395e-4cd5-a58c-ea01c04ce18b
                name: 7UP 330ml
                type: menuitem
                urlTemplate: https://example.com/some.jpg
                gtin: '4060800309204'
                externalId: SoomeONEVariationsExternalId
                variations:
                  - basePrice: 1.49
                    dealGroupsIds: []
                    id: 1ad505f5-395e-4cd5-a58c-ea01c04ce18b
                    kitchenNumber: null
                    modifierGroupsIds: []
                    name: ''
                    type: NoVariation
                    isOffline: true
                    nextAvailableAt: null
                    gtin: '4060800309204'
                    externalId: SoomeONEVariationsExternalId
                modifierGroups: []
                dealGroups: []
              - id: 503aae5f-0e93-4d37-8e6d-c6038e0bef36
                name: Tango Orange Original Can 330ml
                type: menuitem
                urlTemplate: https://example.com/some.jpg
                gtin: '5010102003439'
                externalId: null
                variations:
                  - basePrice: 1.49
                    dealGroupsIds: []
                    id: 503aae5f-0e93-4d37-8e6d-c6038e0bef36
                    kitchenNumber: null
                    modifierGroupsIds: []
                    name: ''
                    type: NoVariation
                    isOffline: true
                    nextAvailableAt: '2025-12-24T23:59:00+00:00'
                    gtin: '5010102003439'
                    externalId: null
                modifierGroups: []
                dealGroups: []
          - id: 1a18843e-8174-4dd3-aa98-0ad2614d5d3a
            name: Multiple Variation
            items:
              - id: c3734373-6170-4a8e-bdcf-e5a75ac39118
                name: Onion Rings
                type: menuitem
                urlTemplate: https://example.com/some.jpg
                gtin: null
                externalId: null
                variations:
                  - basePrice: 2.99
                    dealGroupsIds: []
                    id: c3734373-6170-4a8e-bdcf-e5a75ac39118-19
                    kitchenNumber: null
                    modifierGroupsIds: []
                    name: 06 Pieces
                    type: Variation
                    isOffline: false
                    nextAvailableAt: '2024-03-20T14:00:00+00:00'
                    gtin: null
                    externalId: SoomeMultyVariationsExternalId-1
                  - basePrice: 5.99
                    dealGroupsIds: []
                    id: c3734373-6170-4a8e-bdcf-e5a75ac39118-20
                    kitchenNumber: null
                    modifierGroupsIds: []
                    name: 12 Pieces
                    type: Variation
                    isOffline: false
                    nextAvailableAt: '2024-03-20T14:00:00+00:00'
                    gtin: null
                    externalId: SoomeMultyVariationsExternalId-2
                  - basePrice: 7.99
                    dealGroupsIds: []
                    id: c3734373-6170-4a8e-bdcf-e5a75ac39118-21
                    kitchenNumber: null
                    modifierGroupsIds: []
                    name: 18 Pieces
                    type: Variation
                    isOffline: false
                    nextAvailableAt: '2024-03-20T14:00:00+00:00'
                    gtin: null
                    externalId: SoomeMultyVariationsExternalId-3
                modifierGroups: []
                dealGroups: []
          - id: 6be8d239-f8dc-46fa-8b3b-cc50c3d7ffea
            name: NOT_SHOWN
            items:
              - id: c816d50e-cb9d-4e9f-baf7-2814e5f9e145
                name: Sauce and Salad
                type: menuitem
                urlTemplate: https://example.com/some.jpg
                gtin: null
                externalId: null
                variations:
                  - basePrice: 0
                    dealGroupsIds: []
                    id: c816d50e-cb9d-4e9f-baf7-2814e5f9e145
                    kitchenNumber: null
                    modifierGroupsIds:
                      - 0c5ffa5d-47a6-4bf4-84e3-7c5af35e8fb9
                    name: ''
                    type: NoVariation
                    isOffline: false
                    nextAvailableAt: '2024-03-20T14:00:00+00:00'
                    gtin: null
                    externalId: null
                modifierGroups:
                  - name: Choose 1 Salat
                    id: 0c5ffa5d-47a6-4bf4-84e3-7c5af35e8fb9
                    modifiers:
                      - id: 59ecc7ee-d2ac-4d4a-971d-4a2e5f9c4fc2
                        isOffline: false
                        name: No lettuce
                        nextAvailableAt: '2024-03-20T14:00:00+00:00'
                      - id: e84c248d-a86c-4b8d-a6df-ee90f6ef2873
                        isOffline: false
                        name: Lettuce
                        nextAvailableAt: '2024-03-20T14:00:00+00:00'
                dealGroups: []
    PartnerAppMenuItem:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          description: A unique identifier of the menu item
          nullable: false
        name:
          type: string
          description: Name of the menu item
          nullable: false
        type:
          type: string
          description: Type of the menu item
          nullable: false
        urlTemplate:
          type: string
          description: URL template for the item's image
          nullable: true
        gtin:
          type: string
          description: Global Trade Item Number
          nullable: true
        externalId:
          type: string
          description: External identifier for the item
          nullable: true
        variations:
          type: array
          description: List of variations for this menu item
          minItems: 1
          items:
            $ref: '#/components/schemas/PartnerAppVariation'
          nullable: false
        modifierGroups:
          type: array
          description: List of modifier groups for this menu item
          items:
            $ref: '#/components/schemas/PartnerAppModifierGroup'
          nullable: false
        dealGroups:
          type: array
          description: List of deal groups for this menu item
          items:
            $ref: '#/components/schemas/PartnerAppDealGroup'
          nullable: false
    PartnerAppMenuSearchRequest:
      additionalProperties: false
      properties:
        criteria:
          nullable: false
          description: The search criteria object used to filter results
          type: object
          additionalProperties: false
          properties:
            ids:
              nullable: true
              description: A list of unique identifiers (UUIDs) to filter by
              type: array
              items:
                type: string
            name:
              nullable: true
              description: The name of the product or item to search for
              type: string
            gtin:
              nullable: true
              description: The Global Trade Item Number (GTIN) to filter by
              type: string
            sku:
              nullable: true
              description: The Stock Keeping Unit (SKU) to filter by
              type: string
      type: object
      required:
        - criteria
      example:
        criteria:
          name: Pizza Margherita
    PartnerAppModifier:
      additionalProperties: false
      properties:
        id:
          description: A unique identifier for a modifier
          type: string
          nullable: false
        name:
          description: Name of modifier
          type: string
          nullable: false
        isOffline:
          type: boolean
          description: Whether this variation is currently offline
          nullable: false
        nextAvailableAt:
          type: string
          description: Time when item will be brought back online (ISO-8601 Date Time UTC)
          format: date-time
          nullable: true
      type: object
    PartnerAppModifierGroup:
      additionalProperties: false
      properties:
        id:
          description: A unique identifier for a modifier group
          type: string
          nullable: false
        name:
          description: Name of modifier group
          type: string
          nullable: false
        modifiers:
          description: List of modifiers in this group
          type: array
          items:
            $ref: '#/components/schemas/PartnerAppModifier'
          nullable: false
      type: object
    PartnerAppOfflineItemsResponse:
      type: array
      items:
        type: object
        properties:
          id:
            type: string
            description: Item identifier
          nextAvailableAt:
            type: string
            format: date-time
            nullable: true
            description: Time when item(s) will be brought back online (ISO-8601 Date Time UTC)
      example:
        - id: '111'
          nextAvailableAt: '2025-01-01T05:00:00.0000000'
        - id: '222'
          nextAvailableAt: null
    PartnerAppPartnerAppConfigurations:
      description: A dictionary with partner app configurations
      additionalProperties:
        type: boolean
      type: object
      example:
        AutoAcceptOrder: false
        ReduceTimeOnAcceptanceDisabled: false
        HardAlertOnCookNow: false
    PartnerAppPartnerConfigurationPropertyDefinition:
      additionalProperties: false
      properties:
        Id:
          nullable: false
          description: The identifier of this configuration property
          type: string
        Name:
          nullable: false
          description: A user friendly label for this configuration property
          type: string
        Description:
          nullable: false
          description: A more detailed description of what this configuration is for and what it does
          type: string
        Category:
          nullable: false
          description: Provides a mechanism to group configurations with the same category.
          type: string
        SystemOnly:
          nullable: false
          description: If true, indicates that this setting should not be configurable via UI, but should be set by the platform automatically.
          type: boolean
      type: object
    PartnerAppPostNewPushToken:
      type: object
      additionalProperties: false
      required:
        - partnerIds
        - appType
        - token
        - tenant
        - clientId
      properties:
        partnerIds:
          type: array
          items:
            type: string
          default: []
          description: A list of partner ids associated with this push token
          nullable: false
        appType:
          description: App type that the token belongs to
          type: string
          nullable: false
        token:
          description: Push notification token
          type: string
          nullable: false
        tenant:
          description: Tenant that the partners belong to
          type: string
          nullable: false
        clientId:
          description: A unique identifier of a device
          type: string
          nullable: false
      example:
        partnerIds:
          - '11111'
          - '22222'
          - '33333'
        appType: Orderpad
        token: e2o5cQlaRYyaRhaqLi6RpH:APA91bFa8ih55jrTfc5kUBZ_ZW01EJRFc1lVJGbm5fjTw6F6ytAIHeorrs-6KHv0FCdsWbco3vt_s_lA-nWwuz7leOKIj-BAbCLuu2oDopgYNF2N89xP_uM
        tenant: uk
        clientId: op_0322384a-4949-4ee2-837f-b0212e867bc1
    PartnerAppTakeItemsOfflineRequest:
      type: object
      properties:
        modifierIds:
          type: array
          items:
            type: string
          default: []
          description: A list of modifier IDs to take offline
        variationIds:
          type: array
          items:
            type: string
          default: []
          description: A list of variation IDs to take offline
        nextAvailableAt:
          type: string
          format: date-time
          nullable: true
          description: Time when item(s) will be brought back online (ISO-8601 Date Time with timezone offset)
      example:
        modifierIds:
          - '11111'
          - '22222'
          - '33333'
        variationIds:
          - '44444'
          - '55555'
          - '66666'
        nextAvailableAt: '2025-03-25T18:00:00+00:00'
    PartnerAppTakeItemsOnlineRequest:
      type: object
      properties:
        modifierIds:
          type: array
          items:
            type: string
          default: []
          description: A list of modifier IDs to take online
        variationIds:
          type: array
          items:
            type: string
          default: []
          description: A list of variation IDs to take online
      example:
        modifierIds:
          - '11111'
          - '22222'
          - '33333'
        variationIds:
          - '44444'
          - '55555'
          - '66666'
    PartnerAppVariation:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          description: A unique identifier of variation
          nullable: false
        name:
          type: string
          description: Name of variation
          nullable: false
        basePrice:
          type: number
          description: Base price for this variation
          nullable: false
        kitchenNumber:
          type: string
          description: Kitchen number for this variation
          nullable: true
        dealGroupsIds:
          type: array
          description: List of deal group IDs associated with this variation
          items:
            type: string
          nullable: false
        modifierGroupsIds:
          type: array
          description: List of modifier group IDs associated with this variation
          items:
            type: string
          nullable: false
        type:
          type: string
          description: Type of the variation
          nullable: false
        isOffline:
          type: boolean
          description: Whether this variation is currently offline
          nullable: false
        nextAvailableAt:
          type: string
          description: Time when item will be brought back online (ISO-8601 Date Time UTC)
          format: date-time
          nullable: true
        gtin:
          type: string
          description: Global Trade Item Number for this variation
          nullable: true
        externalId:
          type: string
          description: External identifier for this variation
          nullable: true
    PartnerconnectBulkRestaurantPickupNotes:
      type: object
      additionalProperties: false
      properties:
        restaurantIds:
          type: array
          description: The restaurant ids
          nullable: true
          items:
            type: string
        notes:
          type: string
          nullable: true
          description: The restaurant pick up notes
    PartnerconnectCertificationStatus:
      type: string
      description: The certification status of the onboarding partner
      x-enumNames:
        - none
        - inProgress
        - techApproved
        - inTrial
        - approved
      enum:
        - none
        - inProgress
        - techApproved
        - inTrial
        - approved
    PartnerconnectContentType:
      type: string
      description: Content type expected by partner
      x-enumNames:
        - json
        - xml
        - html
        - text
      enum:
        - json
        - xml
        - html
        - text
    PartnerconnectDetailedRestaurantPartnerSubscription:
      type: object
      additionalProperties: false
      properties:
        restaurantId:
          type: string
          nullable: true
          description: The restaurant id
        name:
          type: string
          nullable: true
          description: The name of partner
        partnerSubscriptionId:
          type: integer
          format: int32
          nullable: true
          description: The partner subscription id
        partnerRestaurantId:
          type: string
          nullable: true
          description: The partner restaurant id
        restaurantPartnerSubscriptionId:
          type: integer
          format: int32
          nullable: true
          description: The restaurant partner subscription id
        status:
          type: string
          nullable: true
          description: The subscription status
        currentPartnerName:
          type: string
          nullable: true
          description: The current partner name
        currentPartnerServiceType:
          type: string
          nullable: true
          description: The current partner service type
    PartnerconnectEndpointProtocol:
      type: string
      description: The communication protocol the partner expects
      x-enumNames:
        - http
        - sms
        - smtp
        - sns
      enum:
        - http
        - sms
        - smtp
        - sns
    PartnerconnectPartner:
      type: object
      properties:
        id:
          type: integer
          description: The partner id
        name:
          type: string
          maxLength: 255
          description: The name of the partner
          example: Partner Name
        partnerGroup:
          type: string
          maxLength: 255
          description: The partner group
          example: Partner Group
        partnerGroupId:
          type: integer
          description: The partner group id
        phone:
          type: string
          maxLength: 255
          description: The phone number of the partner
          example: '1234567890'
        email:
          type: string
          maxLength: 255
          description: The email address of the partner
          example: partner@example.com
        numberOfRestaurants:
          type: integer
          description: The number of restaurants
        addressLine1:
          type: string
          maxLength: 128
          description: The first line of the address
        addressLine2:
          type: string
          maxLength: 128
          description: The second line of the address
        addressLine3:
          type: string
          maxLength: 128
          description: The third line of the address
        stateRegionTerritory:
          type: string
          maxLength: 128
          description: The state, region, or territory
        postCode:
          type: string
          maxLength: 24
          description: The postal code
        countryCode:
          type: string
          maxLength: 2
          description: The country code
        restaurantMappingRequired:
          type: boolean
          description: Indicates if restaurant mapping is required
        tags:
          type: array
          items:
            type: string
          description: The tags associated with the partner
        isTest:
          type: boolean
          description: Indicates if the partner is a test partner
        created:
          type: string
          format: date-time
          description: The creation date and time of the partner
        updated:
          type: string
          format: date-time
          description: The last update date and time of the partner
      example:
        id: 1
        name: Partner Name
        partnerGroup: Partner Group
        partnerGroupId: 1
        phone: '1234567890'
        email: partner@example.com
        numberOfRestaurants: 1
        addressLine1: 123 Fake Street
        addressLine2: Fakeville
        addressLine3: Fakeland
        stateRegionTerritory: Fakelandia
        postCode: FA1 2KE
        countryCode: FK
        restaurantMappingRequired: true
        tags:
          - tag1
          - tag2
        isTest: false
        created: '2020-01-01T00:00:00Z'
        updated: '2020-01-01T00:00:00Z'
    PartnerconnectPartnerGroup:
      type: object
      additionalProperties: false
      required:
        - name
      properties:
        id:
          type: integer
          format: int32
          description: Partner group id
        name:
          type: string
          maxLength: 255
          minLength: 1
          description: Partner group name
    PartnerconnectPartnerLight:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          format: int32
          description: Partner id
        name:
          type: string
          nullable: true
          description: Partner name
        partnerGroup:
          type: string
          nullable: true
          description: The partner group
        partnerSubscriptions:
          type: array
          nullable: true
          description: The light partner subscriptions
          items:
            $ref: '#/components/schemas/PartnerconnectPartnerSubscriptionLight'
    PartnerconnectPartnerRestaurantMoveScheduleEditModel:
      type: object
      additionalProperties: false
      properties:
        sourcePartnerSubscriptionId:
          type: integer
          format: int32
          description: Source partner subscription Id
          nullable: true
        targetPartnerSubscriptionId:
          type: integer
          description: Target partner subscription id
          format: int32
          nullable: true
        scheduledDate:
          type: string
          format: date-time
          description: The scheduled date to move the edit the partner restaurant
          nullable: true
        restaurantIds:
          type: array
          nullable: true
          description: The affected restaurant ids
          items:
            type: string
    PartnerconnectPartnerRestaurantMoveScheduleViewModel:
      allOf:
        - $ref: '#/components/schemas/PartnerconnectPartnerRestaurantMoveScheduleEditModel'
        - type: object
          additionalProperties: false
          properties:
            id:
              type: integer
              format: int32
              description: The partner restaurant id
              nullable: true
    PartnerconnectPartnerSnapshotMetadataResponse:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          nullable: true
          description: The partner snapshot metadata id
        partnerId:
          type: integer
          format: int32
          description: The partner id
        createdAt:
          type: string
          format: date-time
          description: The time the metadata was created
        createdBy:
          type: string
          nullable: true
          description: The username that created the metadata
    PartnerconnectPartnerSnapshotResponse:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          format: int32
          description: The snapshot id
        partnerId:
          type: integer
          format: int32
          description: The partner id
        createdBy:
          type: string
          nullable: true
          description: The user that created the snapshot
        createdAt:
          type: string
          format: date-time
          description: The time stamp the snapshot was created
        partnerData:
          type: string
          nullable: true
          description: The snapshot data. In JSON format
    PartnerconnectPartnerSubscription:
      type: object
      additionalProperties: false
      required:
        - partnerId
        - subscriptionName
      properties:
        id:
          type: integer
          format: int32
          description: The partner subscription id
        partnerId:
          type: integer
          format: int32
          description: The partner id
        serviceType:
          type: string
          nullable: true
          description: 'The partner service type. Examples: Rds, Epos, Dms, OptionalRds, RestaurantBroker, OrderProvider'
        providerType:
          nullable: true
          description: The partner subscription's provider type
          $ref: '#/components/schemas/PartnerconnectSubscriptionProviderType'
        subscriptionName:
          type: string
          maxLength: 255
          minLength: 1
          description: The subscription name
        subscriptionDescription:
          type: string
          nullable: true
          description: The subscription description
        notes:
          type: string
          nullable: true
          description: The subscription notes
        source:
          nullable: true
          description: The subscription source
          $ref: '#/components/schemas/PartnerconnectPartnerSubscriptionSource'
        subscriptionKey:
          type: string
          description: The authentication key for the subscription
          nullable: true
    PartnerconnectPartnerSubscriptionChannel:
      type: object
      additionalProperties: false
      required:
        - partnerSubscriptionId
        - endpoint
        - endpointProtocol
        - contentType
        - certificationStatus
      properties:
        id:
          type: integer
          format: int32
          description: The partner subscription channel id
        partnerId:
          type: integer
          format: int32
          description: The partner id
        partnerSubscriptionId:
          type: integer
          format: int32
          description: The partner subscription id
        endpoint:
          type: string
          maxLength: 225
          minLength: 0
          description: The partner subscription channel end point
        availabilityEndpoint:
          type: string
          maxLength: 225
          minLength: 0
          nullable: true
          description: The partner subscription channel id availability endpoint
        endpointProtocol:
          type: integer
          format: int32
          description: The partner subscription channel end point protocol used for communication
        contentType:
          type: integer
          format: int32
          description: The partner subscription channel content type for communication
        certificationStatus:
          type: integer
          format: int32
          description: The partner subscription channel certification status
        httpMethod:
          type: string
          nullable: true
          description: The http method used to call the partner
        customHeaders:
          type: object
          nullable: true
          description: Additional headers to send to the partner
          additionalProperties:
            type: string
        asyncResponse:
          description: Whether the partner supports async communication
          type: boolean
        asyncResponseTimeout:
          type: integer
          description: The async response timeout
          format: int32
          nullable: true
        maxRetries:
          type: integer
          format: int32
          description: The max times to try call the partner in case of failure
          nullable: true
        retryIntervalMilliseconds:
          type: integer
          format: int32
          description: The failure retry interval
          nullable: true
        retriedHttpStatusCodes:
          type: string
          description: The Http status codes to trigger retry mechanism
          nullable: true
        lastUse:
          type: string
          format: date-time
          nullable: true
          description: The last time the channel was used
        subscriptionFilter:
          type: string
          nullable: true
          description: Subscription filter
        triggersDPPTOL:
          type: boolean
          description: Whether the partner can be taken offline by the DPPTOL component
        requestTimeout:
          type: string
          nullable: true
          description: The time until a request timeouts
        disabled:
          type: boolean
          description: Whether the channel is disabled
        channelTypes:
          type: array
          description: Action types associated with the channel, e.g. On its way, etc.
          nullable: true
          items:
            $ref: '#/components/schemas/PartnerconnectPartnerSubscriptionChannelType'
    PartnerconnectPartnerSubscriptionChannelCreate:
      type: object
      additionalProperties: false
      required:
        - partnerSubscriptionId
        - endpoint
        - endpointProtocol
        - contentType
        - certificationStatus
      properties:
        partnerId:
          description: The partner id
          type: integer
          format: int32
        partnerSubscriptionId:
          type: integer
          format: int32
          description: The partner subscription id
        endpoint:
          type: string
          maxLength: 225
          minLength: 0
          description: The partners endpoint
        availabilityEndpoint:
          type: string
          maxLength: 225
          minLength: 0
          nullable: true
          description: The endpoint to check availability of partner
        endpointProtocol:
          description: the endpoint protocol of the partner
          $ref: '#/components/schemas/PartnerconnectEndpointProtocol'
        contentType:
          description: The content type the partner expects
          $ref: '#/components/schemas/PartnerconnectContentType'
        certificationStatus:
          description: The status of the partner in the onboarding pipeline
          $ref: '#/components/schemas/PartnerconnectCertificationStatus'
        httpMethod:
          type: string
          description: Http method partner expects
          nullable: true
        customHeaders:
          type: object
          description: Custom headers partner needs
          nullable: true
          additionalProperties:
            type: string
        channelTypes:
          type: array
          nullable: true
          description: The various partner subscription channels a order is transmitted to
          items:
            $ref: '#/components/schemas/PartnerconnectPartnerSubscriptionChannelType'
        asyncResponse:
          type: boolean
          description: Details whether the response is async or sync
        asyncResponseTimeout:
          type: integer
          format: int32
          nullable: true
          description: Async response time out
        maxRetries:
          type: integer
          format: int32
          nullable: true
          description: Max retries for sending an order to partner
        retryIntervalMilliseconds:
          type: integer
          format: int32
          nullable: true
          description: Retry interval milliseconds
        retriedHttpStatusCodes:
          type: string
          nullable: true
          description: The status codes received from a partner which will be retried if order fails to send
        subscriptionFilter:
          type: string
          nullable: true
          description: The filter for subscriptions
        triggersDPPTOL:
          type: boolean
          description: Whether this partner will trigger the DPPTOL application and offline automatically
        requestTimeout:
          type: string
          nullable: true
          description: Time out for sync calls to partner
        disabled:
          description: Whether the channel is disabled
          type: boolean
    PartnerconnectPartnerSubscriptionChannelResponse:
      type: object
      additionalProperties: false
      required:
        - partnerSubscriptionId
        - endpoint
        - endpointProtocol
        - contentType
        - certificationStatus
      properties:
        partnerId:
          type: integer
          format: int32
          description: The partner id
        partnerSubscriptionId:
          type: integer
          format: int32
          description: The partner subscription id
        endpoint:
          type: string
          maxLength: 225
          minLength: 0
          description: The partners endpoint
        availabilityEndpoint:
          type: string
          maxLength: 225
          minLength: 0
          nullable: true
          description: The endpoint to check partner's health
        endpointProtocol:
          description: The endpoint protocol the partner expects
          $ref: '#/components/schemas/PartnerconnectEndpointProtocol'
        contentType:
          description: The content type the partner expects
          $ref: '#/components/schemas/PartnerconnectContentType'
        certificationStatus:
          description: The certification status of partner in the onboarding pipeline
          $ref: '#/components/schemas/PartnerconnectCertificationStatus'
        httpMethod:
          type: string
          nullable: true
          description: The http method the partner expects
        customHeaders:
          type: object
          nullable: true
          description: The custom headers the partner expects
          additionalProperties:
            type: string
        channelTypes:
          type: array
          nullable: true
          description: The channel types of the partner subscription
          items:
            $ref: '#/components/schemas/PartnerconnectPartnerSubscriptionChannelType'
        asyncResponse:
          type: boolean
          description: Details whether the response is async or sync
        asyncResponseTimeout:
          type: integer
          format: int32
          nullable: true
          description: Async response time out
        maxRetries:
          type: integer
          format: int32
          nullable: true
          description: Max retries for sending an order to partner
        retryIntervalMilliseconds:
          type: integer
          format: int32
          nullable: true
          description: Retry interval milliseconds
        retriedHttpStatusCodes:
          type: string
          nullable: true
          description: The status codes received from a partner which will be retried if order fails to send
        subscriptionFilter:
          type: string
          nullable: true
          description: The filter for subscriptions
        triggersDPPTOL:
          type: boolean
          description: Whether this partner will trigger the DPPTOL application and offline automatically
        requestTimeout:
          type: string
          nullable: true
          description: Time out for sync calls to partner
        disabled:
          type: boolean
          description: Whether the channel is disabled
    PartnerconnectPartnerSubscriptionChannelType:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          format: int32
          description: The partner subscription channel type id
        partnerSubscriptionChannelId:
          type: integer
          format: int32
          description: The partner subscription channel id
        partnerChannelType:
          type: string
          description: The partner subscription channel type
          nullable: true
    PartnerconnectPartnerSubscriptionChannelUpdate:
      type: object
      additionalProperties: false
      required:
        - partnerSubscriptionId
        - endpoint
        - endpointProtocol
        - contentType
        - certificationStatus
      properties:
        id:
          description: Partner subscription channel id
          type: integer
          format: int32
        partnerId:
          description: The partner id
          type: integer
          format: int32
        partnerSubscriptionId:
          type: integer
          format: int32
          description: The partner subscription id
        endpoint:
          type: string
          maxLength: 225
          minLength: 0
          description: The partners endpoint
        availabilityEndpoint:
          type: string
          maxLength: 225
          minLength: 0
          nullable: true
          description: The endpoint to check availability of partner
        endpointProtocol:
          description: the endpoint protocol of the partner
          $ref: '#/components/schemas/PartnerconnectEndpointProtocol'
        contentType:
          description: The content type the partner expects
          $ref: '#/components/schemas/PartnerconnectContentType'
        certificationStatus:
          description: The status of the partner in the onboarding pipeline
          $ref: '#/components/schemas/PartnerconnectCertificationStatus'
        httpMethod:
          type: string
          description: Http method partner expects
          nullable: true
        customHeaders:
          type: object
          description: Custom headers partner needs
          nullable: true
          additionalProperties:
            type: string
        channelTypes:
          type: array
          nullable: true
          description: The various partner subscription channels a order is transmitted to
          items:
            $ref: '#/components/schemas/PartnerconnectPartnerSubscriptionChannelType'
        asyncResponse:
          type: boolean
          description: Details whether the response is async or sync
        asyncResponseTimeout:
          type: integer
          format: int32
          nullable: true
          description: Async response time out
        maxRetries:
          type: integer
          format: int32
          nullable: true
          description: Max retries for sending an order to partner
        retryIntervalMilliseconds:
          type: integer
          format: int32
          nullable: true
          description: Retry interval milliseconds
        retriedHttpStatusCodes:
          type: string
          nullable: true
          description: The status codes received from a partner which will be retried if order fails to send
        subscriptionFilter:
          type: string
          nullable: true
          description: The filter for subscriptions
        triggersDPPTOL:
          type: boolean
          description: Whether this partner will trigger the DPPTOL application and offline automatically
        requestTimeout:
          type: string
          nullable: true
          description: Time out for sync calls to partner
        disabled:
          description: Whether the channel is disabled
          type: boolean
    PartnerconnectPartnerSubscriptionLight:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
          format: int32
          description: The partner subscription light id
        name:
          type: string
          nullable: true
          description: The partner subscription name
        serviceType:
          type: string
          description: 'The partner subscription service type. Examples: Rds, Epos, Dms, OptionalRds, RestaurantBroker, OrderProvider'
          nullable: true
    PartnerconnectPartnerSubscriptionSource:
      type: string
      description: The partner subscription source
      x-enumNames:
        - justeatlite
        - hungryjacks
        - nandos
        - sushi2500wl
        - test
      enum:
        - justeatlite
        - hungryjacks
        - nandos
        - sushi2500wl
        - test
    PartnerconnectPartnerTag:
      type: object
      additionalProperties: false
      required:
        - name
      properties:
        id:
          type: integer
          format: int32
          description: The partner tag id
        name:
          type: string
          maxLength: 255
          minLength: 1
          description: The partner tag name
    PartnerconnectPartnersResponse:
      type: array
      items:
        $ref: '#/components/schemas/PartnerconnectPartner'
        description: The partners
    PartnerconnectRestaurantPartnerData:
      type: object
      additionalProperties: false
      properties:
        partnerId:
          type: integer
          format: int32
          description: The restaurant partner id
        partnerName:
          type: string
          nullable: true
          description: The restaurant partner name
        partnerGroup:
          type: string
          nullable: true
          description: The partners group
        restaurantId:
          type: integer
          format: int32
          description: The restaurant id
        partnerSubscriptionId:
          type: integer
          format: int32
          description: The partner subscription id
        partnerSubscriptionName:
          type: string
          nullable: true
          description: The partner subscription name
        serviceType:
          type: string
          nullable: true
          description: 'The partner subscription service type. Examples: Rds, Epos, Dms, OptionalRds, RestaurantBroker, OrderProvider'
        providerType:
          nullable: true
          description: The partner subscription provider type
          oneOf:
            - $ref: '#/components/schemas/PartnerconnectSubscriptionProviderType'
        restaurantPartnerSubscriptionId:
          type: integer
          format: int32
          description: The restaurant partner subscription id
        partnerRestaurantId:
          type: string
          nullable: true
          description: The partner restaurant id
    PartnerconnectRestaurantPartnerMapping:
      type: object
      additionalProperties: false
      required:
        - partnerSubscriptionId
        - partnerRestaurantId
        - restaurantId
      properties:
        partnerSubscriptionId:
          type: integer
          format: int32
          description: The partner subscription id
        partnerRestaurantId:
          type: string
          minLength: 1
          description: The partner restaurant id
        restaurantId:
          type: integer
          format: int32
          description: The restaurant id
    PartnerconnectRestaurantPartnerSearchCriteria:
      type: object
      additionalProperties: false
      properties:
        name:
          type: string
          nullable: true
          description: The partner name
        restaurantReference:
          type: string
          nullable: true
          description: The restaurant reference to search
        restaurantId:
          type: integer
          format: int32
          nullable: true
          description: The restaurant id to search
        restaurantIds:
          type: array
          description: The restaurant ids to search
          nullable: true
          items:
            type: integer
            format: int32
        pageStart:
          type: integer
          description: The pagination start for search
          format: int32
        pageSize:
          type: integer
          format: int32
          description: The pagination end for search
    PartnerconnectRestaurantPartnerSubscription:
      type: object
      additionalProperties: false
      required:
        - partnerSubscriptionId
        - restaurantId
      properties:
        id:
          type: integer
          format: int32
          description: The restaurant partner subscription id
        partnerSubscriptionId:
          type: integer
          format: int32
          description: The partner subscription id
        restaurantId:
          type: integer
          format: int32
          description: The restaurant id
        userId:
          type: integer
          format: int32
          description: The user id
        partnerRestaurantId:
          type: string
          nullable: true
          description: The partner restaurant id
    PartnerconnectRestaurantPartnerSubscriptionAllRpUpdate:
      type: object
      additionalProperties: false
      required:
        - fromPartnerSubscriptionId
      properties:
        isCopyAction:
          type: boolean
          description: Whether the action is a copy action
        userName:
          type: string
          nullable: true
          description: The actioning user name
        fromPartnerSubscriptionId:
          type: integer
          format: int32
          description: The partner subscription id to action from
    PartnerconnectRestaurantPartnerSubscriptionBatchUpdate:
      type: object
      additionalProperties: false
      properties:
        newItems:
          type: array
          nullable: true
          description: Batch of new item
          items:
            $ref: '#/components/schemas/PartnerconnectRestaurantPartnerSubscription'
        itemsToDelete:
          type: array
          nullable: true
          description: Batch of items to delete
          items:
            $ref: '#/components/schemas/PartnerconnectRestaurantPartnerSubscription'
        userName:
          type: string
          description: Actioning user name
          nullable: true
        isCopyAction:
          type: boolean
          description: Whether the action is a copy action
          nullable: true
    PartnerconnectRestaurantPartnerSubscriptionInfo:
      type: object
      additionalProperties: false
      properties:
        restaurantId:
          type: string
          nullable: true
          description: The restaurant id
        name:
          type: string
          nullable: true
          description: The restaurant partner subscription name
        partnerSubscriptionId:
          type: integer
          format: int32
          nullable: true
          description: The partner subscription id
        partnerRestaurantId:
          type: string
          nullable: true
          description: The partner restaurant id
        restaurantPartnerSubscriptionId:
          type: integer
          format: int32
          nullable: true
          description: The restaurant partner subscription id
        status:
          type: string
          nullable: true
          description: The subscription status
        currentPartnerName:
          type: string
          nullable: true
          description: The current partner name
        currentPartnerServiceType:
          type: string
          nullable: true
          description: 'The current partner service type. Examples: Rds, Epos, Dms, OptionalRds, RestaurantBroker, OrderProvider'
    PartnerconnectRestaurantPartnerSubscriptionInfoSearchResponse:
      type: object
      additionalProperties: false
      properties:
        totalNumberOfItems:
          type: integer
          format: int32
          description: The total number of items in response
        items:
          type: array
          nullable: true
          description: The found restaurant partner subscription info items
          items:
            $ref: '#/components/schemas/PartnerconnectRestaurantPartnerSubscriptionInfo'
    PartnerconnectSubscriptionProviderType:
      type: string
      description: Provider types
      x-enumNames:
        - ibs
        - jeLite
        - deviceHub
        - mom
        - menuLogOrderConnect
        - flypay
      enum:
        - ibs
        - jeLite
        - deviceHub
        - moM
        - menuLogOrderConnect
        - flypay
    PartnerconnectSyncPartnerRestaurantsRequest:
      type: object
      additionalProperties: false
      properties:
        subscriptionIds:
          type: array
          nullable: true
          description: The partner subscription ids to sync
          items:
            type: integer
            format: int32
    PartnerconnectSyncPartnersDataRequest:
      type: object
      additionalProperties: false
      properties:
        partnerIds:
          type: array
          nullable: true
          description: The partner ids to sync
          items:
            type: integer
            format: int32
    PartnercuisinesCreateCuisineDto:
      type: object
      properties:
        englishName:
          type: string
        frenchName:
          type: string
        carouselSpotlight:
          type: boolean
        listingEnabled:
          type: boolean
        emojis:
          type: string
          nullable: true
        imageUrl:
          type: string
          nullable: true
        tagType:
          $ref: '#/components/schemas/PartnercuisinesTagType'
        spotlightDelivery:
          type: boolean
        spotlightPickup:
          type: boolean
    PartnercuisinesCuisine:
      type: object
      properties:
        id:
          type: string
    PartnercuisinesCuisineDto:
      type: object
      properties:
        id:
          type: string
        englishName:
          type: string
        frenchName:
          type: string
        carouselSpotlight:
          type: boolean
        listingEnabled:
          type: boolean
        emojis:
          type: string
          nullable: true
        imageUrl:
          type: string
          nullable: true
        tagType:
          $ref: '#/components/schemas/PartnercuisinesTagType'
        translations:
          type: array
          items:
            $ref: '#/components/schemas/PartnercuisinesCuisineTranslation'
        spotlightDelivery:
          type: boolean
        spotlightPickup:
          type: boolean
    PartnercuisinesCuisineSearch:
      type: object
      properties:
        name:
          type: string
          nullable: true
    PartnercuisinesCuisineTranslation:
      type: object
      properties:
        locale:
          $ref: '#/components/schemas/PartnercuisinesLocale'
        name:
          type: string
    PartnercuisinesCuisinesDto:
      type: object
      properties:
        cuisines:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/PartnercuisinesCuisineDto'
    PartnercuisinesLocale:
      type: object
      properties:
        language:
          type: string
        script:
          type: string
        country:
          type: string
        variant:
          type: string
        extensionKeys:
          type: array
          uniqueItems: true
          items:
            type: string
            format: char
        unicodeLocaleAttributes:
          type: array
          uniqueItems: true
          items:
            type: string
        unicodeLocaleKeys:
          type: array
          uniqueItems: true
          items:
            type: string
        iSO3Language:
          type: string
        iSO3Country:
          type: string
        displayLanguage:
          type: string
        displayScript:
          type: string
        displayCountry:
          type: string
        displayVariant:
          type: string
        displayName:
          type: string
    PartnercuisinesPartnerCuisines:
      type: object
      properties:
        restaurant:
          $ref: '#/components/schemas/PartnercuisinesRestaurantPartial'
        cuisines:
          type: array
          uniqueItems: true
          items:
            type: string
        primaryCuisineId:
          type: string
          nullable: true
        secondaryCuisineId:
          type: string
          nullable: true
    PartnercuisinesPartnerTagsDto:
      type: object
      properties:
        primaryCuisineId:
          type: string
          nullable: true
        secondaryCuisineId:
          type: string
          nullable: true
        tertiaryTagIds:
          type: array
          uniqueItems: true
          items:
            type: string
    PartnercuisinesRestaurantPartial:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        shortName:
          type: string
        timezone:
          type: string
        allowedOverridedTimeZone:
          type: boolean
        city:
          type: string
        isDelco:
          type: boolean
        corporateIdentifier:
          type: string
          nullable: true
        isJustEat:
          type: boolean
        preferredLcoale:
          $ref: '#/components/schemas/PartnercuisinesLocale'
        justEatId:
          type: string
          nullable: true
        tenant:
          $ref: '#/components/schemas/PartnercuisinesTenant'
    PartnercuisinesTagType:
      type: string
      enum:
        - CUISINE
        - MARKETING
    PartnercuisinesTenant:
      type: string
      enum:
        - CA
        - UK
        - AU
        - IT
        - IE
        - NZ
        - FR
        - DK
        - 'NO'
        - ES
        - NL
        - BG
        - BE
        - PL
        - CH
        - DE
        - SK
        - AT
        - IL
        - LU
        - TE
        - US
    PartnercuisinesUpdateRestaurantCuisines:
      type: object
      properties:
        cuisines:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/PartnercuisinesCuisine'
    PartnerdeliverymanagementBatchUpdateDeliveryFees:
      description: Batch of delivery fees to update
      required:
        - DeliveryFees
      properties:
        DeliveryFees:
          type: array
          items:
            $ref: '#/components/schemas/PartnerdeliverymanagementDeliveryFee'
      type: object
    PartnerdeliverymanagementDeliveryArea:
      type: object
      description: Delivery area object for the restaurant
      properties:
        milesRadiusLimit:
          description: Miles radius limit value
          format: double
          type: number
        deliveryAreaType:
          description: Delivery area type. Postcodes or Polygon
          enum:
            - Postcodes
            - Polygon
          type: string
        postcodes:
          description: Delivery area as a list of postcodes
          items:
            description: postcode item
            type: string
          type: array
        polygon:
          description: Delivery area as a multi polygon defined by a set of coordinates
          $ref: '#/components/schemas/PartnerdeliverymanagementMultiPolygon'
    PartnerdeliverymanagementDeliveryAreaPolygonPostcodes:
      type: object
      description: Delivery area object for the restaurants in Italy and Spain
      properties:
        milesRadiusLimit:
          description: Miles radius limit value
          format: double
          type: number
        deliveryAreaType:
          description: Delivery area type. Postcodes or Polygon
          enum:
            - postcodes
            - polygon
          type: string
        postcodes:
          description: Delivery area as a list of postcodes that have a polygon (ignores polygon-disabled postcodes)
          items:
            description: postcode item
            type: string
          type: array
        polygon:
          description: Delivery area as a multi polygon defined by a set of coordinates
          $ref: '#/components/schemas/PartnerdeliverymanagementMultiPolygon'
    PartnerdeliverymanagementDeliveryAreaToUpdate:
      type: object
      description: Delivery area object to update for the restaurant
      properties:
        milesRadiusLimit:
          description: Miles radius limit value
          format: double
          type: number
        postcodes:
          description: Delivery area as a list of postcodes
          items:
            description: postcode item
            type: string
          type: array
    PartnerdeliverymanagementDeliveryFee:
      properties:
        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
        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
        zoneId:
          description: Id of assigned zone
          type: string
        zoneName:
          description: Name of assigned zone
          type: string
        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
        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
      type: object
    PartnerdeliverymanagementDeliveryZone:
      type: object
      properties:
        zoneId:
          description: id of the zone
          type: string
        unboundedZone:
          description: json representation of delivery zone
          properties:
            coordinates:
              items:
                properties:
                  coordinates:
                    items:
                      properties:
                        longitude:
                          description: geographical point longitude
                          format: decimal
                          type: number
                        latitude:
                          description: geographical point latitude
                          format: decimal
                          type: number
                      type: object
                    description: geographical coordinates of linear ring
                    type: array
                type: object
              description: geographical polygon https://tools.ietf.org/html/rfc7946#section-3.1.4. It might consist from multiple linear rings
              type: array
          type: object
        deliveryMinutes:
          description: geographical zone generated by SKIP, based on delivery minutes.
          format: int32
          type: integer
      example:
        zoneId: '1'
        unboundedZone:
          items:
            - items:
                - longitude: -2.08593559299993
                  latitude: 57.159200668
                - longitude: -2.18593559299993
                  latitude: 57.459200668
                - longitude: -2.28593559299993
                  latitude: 57.159200668
                - longitude: -2.08593559299993
                  latitude: 57.159200668
              coordinates: null
        deliveryMinutes: 5
    PartnerdeliverymanagementGeoJsonType:
      enum:
        - Point
        - MultiPoint
        - LineString
        - MultiLineString
        - Polygon
        - MultiPolygon
        - GeometryCollection
        - Feature
        - FeatureCollection
      type: string
      description: GeoJson types
    PartnerdeliverymanagementGetDeliveryAreaPolygonPostcodesResponse:
      properties:
        deliveryArea:
          $ref: '#/components/schemas/PartnerdeliverymanagementDeliveryAreaPolygonPostcodes'
      type: object
      example:
        deliveryArea:
          milesRadiusLimit: 4
          deliveryAreaType: postcodes
          postcodes:
            - P1
            - P2
            - P3
    PartnerdeliverymanagementGetDeliveryAreaResponse:
      properties:
        deliveryArea:
          $ref: '#/components/schemas/PartnerdeliverymanagementDeliveryArea'
      type: object
      example:
        deliveryArea:
          milesRadiusLimit: 5
          deliveryAreaType: Postcodes
          postcodes:
            - AA
            - AB
    PartnerdeliverymanagementGetDeliveryFeesResponse:
      properties:
        deliveryFees:
          nullable: false
          items:
            $ref: '#/components/schemas/PartnerdeliverymanagementDeliveryFee'
          description: restaurant delivery fees
          type: array
      type: object
      example:
        deliveryFees:
          - minimumOrder:
              value: 500
              currency: GBP
            zoneId: '1'
            zoneName: Zone 1
            freeDelivery:
              value: 1000
              currency: GBP
            deliveryCharge:
              value: 100
              currency: GBP
            smallOrderCharge:
              value: 200
              currency: GBP
          - minimumOrder:
              value: 500
              currency: GBP
            zoneId: '2'
            zoneName: Zone 2
            freeDelivery:
              value: 2000
              currency: GBP
            deliveryCharge:
              value: 200
              currency: GBP
            smallOrderCharge:
              value: 300
              currency: GBP
    PartnerdeliverymanagementGetDeliveryZonesResponse:
      properties:
        deliveryZones:
          type: array
          nullable: false
          maxItems: 5
          description: restaurant delivery zones. Maximum `deliveryZones` response size should be less than 20KB
          uniqueItems: true
          items:
            $ref: '#/components/schemas/PartnerdeliverymanagementDeliveryZone'
      type: object
      example:
        deliveryZones:
          - zoneId: '1'
            unboundedZone:
              items:
                - 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
                  coordinates: null
            deliveryMinutes: 5
          - zoneId: '2'
            unboundedZone:
              items:
                - 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
                  coordinates: null
            deliveryMinutes: 7
    PartnerdeliverymanagementGetPostcodeGeoShapesResponse:
      type: object
      properties:
        geoShapes:
          type: array
          items:
            $ref: '#/components/schemas/PartnerdeliverymanagementPostcodeGeoShape'
          description: postcode's geo shapes
          nullable: true
    PartnerdeliverymanagementLineString:
      type: object
      description: GeoJSON object line string
      properties:
        type:
          $ref: '#/components/schemas/PartnerdeliverymanagementGeoJsonType'
        boundingBox:
          type: array
          items:
            type: number
            format: double
            description: The bounding box item
          nullable: true
          readOnly: true
          description: The bounding box of the GeoJSON object, as an array of numbers.
        coordinates:
          description: list of coordinates
          type: array
          items:
            $ref: '#/components/schemas/PartnerdeliverymanagementPosition'
          nullable: true
    PartnerdeliverymanagementLinearRing:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PartnerdeliverymanagementGeoJsonType'
        boundingBox:
          description: bounding box array
          type: array
          items:
            description: bounding box item
            type: number
            format: double
          nullable: true
          readOnly: true
        coordinates:
          description: coordinates array
          type: array
          items:
            description: position item
            $ref: '#/components/schemas/PartnerdeliverymanagementPosition'
          nullable: true
    PartnerdeliverymanagementMultiPolygon:
      type: object
      description: Object representing a GeoJSON geometry
      properties:
        type:
          $ref: '#/components/schemas/PartnerdeliverymanagementGeoJsonType'
        boundingBox:
          type: array
          description: Bounding box array for the geometry
          items:
            description: Bounding box item
            type: number
            format: double
          nullable: true
          readOnly: true
        coordinates:
          description: Coordinates array for the geometry
          type: array
          items:
            description: Polygon item
            $ref: '#/components/schemas/PartnerdeliverymanagementPolygon'
          nullable: true
    PartnerdeliverymanagementPoint:
      type: object
      description: GeoJSON object point
      properties:
        type:
          $ref: '#/components/schemas/PartnerdeliverymanagementGeoJsonType'
        boundingBox:
          type: array
          items:
            type: number
            format: double
            description: The bounding box item
          nullable: true
          readOnly: true
          description: The bounding box of the GeoJSON object, as an array of numbers.
        coordinates:
          $ref: '#/components/schemas/PartnerdeliverymanagementPosition'
    PartnerdeliverymanagementPolygon:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PartnerdeliverymanagementGeoJsonType'
        boundingBox:
          description: bounding box array
          type: array
          items:
            description: bounding box item
            type: number
            format: double
          nullable: true
          readOnly: true
        coordinates:
          description: coordinates array
          type: array
          items:
            description: linear ring item
            $ref: '#/components/schemas/PartnerdeliverymanagementLinearRing'
          nullable: true
    PartnerdeliverymanagementPosition:
      type: object
      description: position coordinates
      properties:
        longitude:
          description: longitude value
          type: number
          format: double
        latitude:
          description: latitude value
          type: number
          format: double
        elevation:
          description: elevation value
          type: number
          format: double
          readOnly: true
    PartnerdeliverymanagementPostcodeGeoShape:
      type: object
      description: geo shape object
      properties:
        postcode:
          type: string
          nullable: true
          description: postcode value
        geometry:
          $ref: '#/components/schemas/PartnerdeliverymanagementLineString'
        location:
          $ref: '#/components/schemas/PartnerdeliverymanagementPoint'
        id:
          description: id of the geo shape object
          type: string
          nullable: true
    PartnerhelpChangeBusinessAddressRequest:
      required:
        - address
        - city
        - postcode
        - effectiveDate
      properties:
        address:
          description: Address
          type: string
        city:
          description: Town / City
          type: string
        postcode:
          description: Postcode
          type: string
        effectiveDate:
          description: Effective date of the changes
          format: date
          type: string
      type: object
      description: Request to change business address
      example:
        address: 109 Bulgaria Blvd.
        city: Sofia
        postcode: A1404
        effectiveDate: '2023-04-13'
    PartnerhelpChangeBusinessNameRequest:
      properties:
        businessName:
          description: Business name
          type: string
        effectiveDate:
          description: Effective date of the changes
          format: date
          type: string
      type: object
      description: Request to change business name
      example:
        businessName: Super Kebab
        effectiveDate: '2023-04-13'
    PartnerhelpChangeRestaurantContactsRequest:
      properties:
        restaurantEmailAddress:
          description: Restaurant email address
          type: string
        ownerMobileNumber:
          description: Restaurant owner mobile phone number in E.164 format.
          type: string
        restaurantPhoneNumber:
          description: Restaurant phone number in E.164 format.
          type: string
      type: object
      description: Request containing new restaurant and owner contact details
      example:
        restaurantEmailAddress: super-kebab@gmail.com
        ownerMobileNumber: '+14151231234'
        restaurantPhoneNumber: '+14151231234'
    PartnerhelpChangeRestaurantLogoRequest:
      properties:
        fileKey:
          description: Path to the file that was uploaded to the AWS S3 bucket
          type: string
      description: Request containing path to new logo file that was  uploaded to AWS S3 bucket
      example:
        fileKey: ASIASJNB7IVSWQWRLQEQ_logo.jpeg
      type: object
    PartnerhelpChangeRestaurantMenuItemsRequest:
      properties:
        message:
          description: The message with the details of what needs to be changed in the menu (item/section/category)
          type: string
        containsAllergensInfomation:
          description: The value indicating whether request has changes of allergen information
          type: boolean
      description: Request containing information about what to change in the restaurant menu (item/section/category)
      example:
        message: Change name from "Meat burger" to "Vegan burger"
        containsAllergensInfomation: true
      type: object
    PartnerhelpCreateSupportTicketRequest:
      properties:
        subject:
          description: Subject of the ticket
          type: string
        message:
          description: The message with the support details
          type: string
        type:
          description: Type the ticket belongs to
          type: string
      description: Request containing support ticket information
      example:
        subject: Top Placement - Interest
        message: Change weekly budget
        type: top_placement__interest
      type: object
    PartnerhelpGeneratePresignedFIleUploadUrlRequest:
      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
      description: Request that contains information about file that will be uploaded to an AWS S3 bucket
      example:
        fileName: menu.pdf
        fileSizeInBytes: 4574745
      type: object
    PartnerhelpGeneratePresignedFIleUploadUrlResponse:
      properties:
        url:
          description: Presigned URL for making PUT upload to S3 bucket
          type: string
        key:
          description: Unique file name that will be obtained after uploading
          type: string
      type: object
      description: Response that provides presigned URL for making PUT upload to S3 bucket from a client application
      example:
        url: https://bucketname.s3.eu-west-1.amazonaws.com/5b96ed5cdc594ddc96382dff7162e9d2_filename.pdf?X-Amz-Expires=120&X-Amz-Security-Token=token&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=credentials&X-Amz-Date=20200423T120247Z&X-Amz-SignedHeaders=content-length;content-type;host&X-Amz-Signature=signature
        key: 5b96ed5cdc594ddc96382dff7162e9d2_filename.pdf
    PartnerhelpGeneratePresignedInvoiceDownloadUrlResponse:
      properties:
        url:
          description: Presigned URL to download invoice from S3 bucket
          type: string
      type: object
      description: Response that provides presigned URL for making download of invoice from S3 bucket
      example:
        url: https://s3name.s3.eu-west-1.amazonaws.com/filename.pdf?X-Amz-Expires=exp&X-Amz-Security-Token=token&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=credential&X-Amz-Date=date&X-Amz-SignedHeaders=host&X-Amz-Signature=signature
    PartnerhelpGetSupportRequestTypesResponse:
      minLength: 1
      type: array
      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
        - subtypes: []
          name: Menu update
          value: menu_update
      items:
        $ref: '#/components/schemas/PartnerhelpSupportRequestType'
    PartnerhelpGetSupportRequestsResponse:
      properties:
        requests:
          items:
            $ref: '#/components/schemas/PartnerhelpSupportRequest'
          description: List of restaurant support requests
          type: array
        paging:
          description: Consists of pagination information
          properties:
            count:
              description: The total number of results
              format: int64
              type: integer
          type: object
      description: Response representing support requests from restaurant
      example:
        requests:
          - subject: Top Placement
            status: open
            id: '5646645'
            submittedDate: '2020-01-01T09:30:00.0000000+00:00'
          - subject: Change Logo Request
            status: closed
            id: '235253'
            submittedDate: '2020-01-01T09:30:00.0000000+00:00'
        paging:
          count: 35
      type: object
    PartnerhelpReplaceRestaurantMenuRequest:
      properties:
        fileKeys:
          maxLength: 10
          items:
            description: path to the new menu file that Was uploaded to the certain AWS s3 bucket
            type: string
          description: Array of paths to the new menu files that were uploaded to the certain AWS s3 bucket
          type: array
      description: request containing links in s3 to new menu files
      example:
        fileKeys:
          - 3c81dq0k9bhj1bn_menu_1.pdf
          - 1rhj7qhr6fhjgbm_menu_2.pdf
      type: object
    PartnerhelpSupportRequest:
      description: Object that represents support request
      properties:
        subject:
          description: Request subject
          type: string
        status:
          description: Request status
          enum:
            - new
            - open
            - closed
            - pending
            - solved
            - hold
            - deleted
        id:
          description: The Id of the request
          type: string
        submittedDate:
          description: Request placed date
          format: date-time
          type: string
      type: object
    PartnerhelpSupportRequestType:
      description: Object that represents type/sub-type of request
      properties:
        subTypes:
          items:
            $ref: '#/components/schemas/PartnerhelpSupportRequestType'
          description: Possible sub-types of request
          type: array
        name:
          description: Human readable name
          type: string
        value:
          description: Type value which will be used for Zendesk ticket as a tag
          type: string
      type: object
    PartnerinvoicesRestaurantInvoiceDownloadInformation:
      properties:
        expires:
          description: The time when the download URL expires and becomes invalid to download invoice content
          format: date-time
          type: string
        downloadUrl:
          description: The URL to download invoice content
          type: string
        downloadCsvUrl:
          description: The URL to download CSV invoice content
          type: string
        downloadPdfUrl:
          description: The URL to download PDF invoice content
          type: string
      description: An information to download invoice content
      example:
        expires: '2020-10-07T17:23:55.0000000+01:00'
        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
        downloadCsvUrl: https://je-internalassets-staging-uk.s3.eu-west-1.amazonaws.com/uk/invoices/2023/6001161.csv?response-content-disposition=inline&X-Amz-Security-Token=IQQkUfOqiOwId5y1AV7CU05g%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230420T091711Z&X-Amz-SignedHeaders=host&X-Amz-Expires=1799&X-Amz-Credential=ASIAUCNJPS27E%2F20230420%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=ccdec27dc
        downloadPdfUrl: https://je-internalassets-staging-uk.s3.eu-west-1.amazonaws.com/uk/invoices/2023/6001161.pdf?response-content-disposition=inline&X-Amz-Security-Token=IQQkUfOqiOwId5y1AV7CU05g%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230420T091711Z&X-Amz-SignedHeaders=host&X-Amz-Expires=1799&X-Amz-Credential=ASIAUCNJPS27E%2F20230420%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=ccdec27dc
      type: object
    PartnerinvoicesRestaurantInvoiceSummary:
      description: An invoice summary for the invoice period
      properties:
        createdDate:
          description: The invoice created date
          format: date-time
          type: string
        startDate:
          description: The start date of the invoice period
          format: date
          type: string
        endDate:
          description: The end date of the invoice period
          format: date
          type: string
        id:
          description: The Id of the invoice
          type: string
      type: object
    PartnerinvoicesRestaurantInvoices:
      type: object
      properties:
        invoices:
          items:
            $ref: '#/components/schemas/PartnerinvoicesRestaurantInvoiceSummary'
          description: List of restaurant invoice summaries
          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
      example:
        invoices:
          - id: i9999999
            createdDate: '2020-09-29T09:26:09.930Z'
            startDate: '2020-09-21'
            endDate: '2020-09-27'
          - id: i8888888
            createdDate: '2020-09-22T11:00:32.800Z'
            startDate: '2020-09-14'
            endDate: '2020-09-20'
        paging:
          cursors:
            after: fewyNzQyOGI3OHYt
    PartnerlegalPartnerRiskProfile:
      type: object
      description: Assigned Risk
      properties:
        status:
          type: string
          enum:
            - normal
            - high
          description: |
            Risk of the partner. It can take the following items:
              * `normal` - The restaurant risk when there are no high risk indicators
              * `high` - Several Indicators can lead to this status based on the context. e.g. PEP(Politically Exposed Person) as one of the owners
        notes:
          description: Comments about the risk status
          type: string
          nullable: true
      example:
        status: normal
        notes: The restaurant risk is based on the fact that there are no high risk indicators
    PartnermediaPartnerMediaType:
      description: Type of partner media
      enum:
        - partnerHeader
      type: string
    PartnermediaRequestCreateMediaAssetRequest:
      properties:
        title:
          description: Title of the media asset
          type: string
          maxLength: 50
        altText:
          description: Alternative text for the media asset for accessibility purposes
          type: string
          maxLength: 150
          nullable: true
        sourceUrl:
          description: Source URL of the media asset to be uploaded
          type: string
          format: uri
        schedule:
          description: Schedule information for when the media should be active
          type: array
          maxItems: 1
          items:
            type: object
            properties:
              daysOfWeek:
                description: Days of the week when the media should be active
                type: array
                maxItems: 7
                minItems: 1
                items:
                  type: string
                  enum:
                    - monday
                    - tuesday
                    - wednesday
                    - thursday
                    - friday
                    - saturday
                    - sunday
              startTime:
                description: Start time in partner local time, format is ISO 8601 hh:mm:ss
                type: string
                pattern: ^([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$
              endTime:
                description: End time in partner local time, format is ISO 8601 hh:mm:ss
                type: string
                pattern: ^([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$
              startDate:
                description: Start date for the schedule (ISO 8601 format)
                type: string
                format: date
                nullable: true
              endDate:
                description: End date for the schedule (ISO 8601 format)
                type: string
                format: date
                nullable: true
            required:
              - daysOfWeek
              - startTime
              - endTime
        metadata:
          description: Optional metadata key-value pairs associated with the media asset. Keys must be unique within the array, otherwise 400 response will be returned.
          type: array
          maxItems: 10
          uniqueItems: true
          items:
            type: object
            properties:
              key:
                description: Metadata key
                type: string
                minLength: 1
                maxLength: 32
              value:
                description: Metadata value
                type: string
                minLength: 1
                maxLength: 512
            required:
              - key
              - value
      type: object
      description: Request to create a new media asset for a partner
      required:
        - title
        - sourceUrl
      example:
        title: Easter Breakfast
        altText: Easter Breakfast
        sourceUrl: https://je-bucket-mediaworkerservice-eu-west-1-pdv-staging-1.s3.eu-west-1.amazonaws.com/je-bucket-mediaworkerservice-eu-west-1-pdv-staging-1/UK/12345/HEADER/1744826727214_HEADER.jpg
        schedule:
          - daysOfWeek:
              - monday
              - friday
              - saturday
              - sunday
            startTime: '07:00:00'
            endTime: '11:00:00'
            startDate: '2025-04-18'
            endDate: '2025-04-21'
        metadata:
          - key: source
            value: ocus
          - key: projectId
            value: a3f1c2d4-7b8e-4f9a-bc3d-e5f6a7b8c9d0
    PartnermediaRequestMediaUploadInstructions:
      properties:
        fileType:
          nullable: false
          description: mine type of the file to be uploaded.
          type: string
      example:
        fileType: image/png
    PartnermediaRequestUpdateMediaAssetRequest:
      properties:
        title:
          description: Title of the media asset
          type: string
          maxLength: 50
        altText:
          description: Alternative text for the media asset for accessibility purposes
          type: string
          maxLength: 150
          nullable: true
        schedule:
          description: Schedule information for when the media should be active
          type: array
          maxItems: 1
          items:
            type: object
            properties:
              daysOfWeek:
                description: Days of the week when the media should be active
                type: array
                maxItems: 7
                minItems: 1
                items:
                  type: string
                  enum:
                    - monday
                    - tuesday
                    - wednesday
                    - thursday
                    - friday
                    - saturday
                    - sunday
              startTime:
                description: Start time in partner local time, format is ISO 8601 hh:mm:ss
                type: string
                pattern: ^([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$
              endTime:
                description: End time in partner local time, format is ISO 8601 hh:mm:ss
                type: string
                pattern: ^([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$
              startDate:
                description: Start date for the schedule (ISO 8601 format)
                type: string
                format: date
                nullable: true
              endDate:
                description: End date for the schedule (ISO 8601 format)
                type: string
                format: date
                nullable: true
            required:
              - daysOfWeek
              - startTime
              - endTime
      type: object
      description: Request to update a partner media asset
      required:
        - title
      example:
        title: Easter breakfast
        altText: Easter Breakfast
        schedule:
          - daysOfWeek:
              - monday
              - friday
              - saturday
              - sunday
            startTime: '07:00:00'
            endTime: '11:30:00'
            startDate: '2025-04-18'
            endDate: '2025-04-21'
    PartnermediaResponseGeneratePresignedFileUploadUrlResponse:
      properties:
        signedUrl:
          description: Presigned URL
          type: string
      type: object
      description: Response that provides presigned URL
      example:
        signedUrl: https://bucketname.s3.eu-west-1.amazonaws.com/5b96ed5cdc594ddc96382dff7162e9d2_header.png?X-Amz-Expires=120&X-Amz-Security-Token=token&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=credentials&X-Amz-Date=20200423T120247Z&X-Amz-SignedHeaders=content-length;content-type;host&X-Amz-Signature=signature
    PartnermediaResponseMediaAssetsResponse:
      properties:
        generatedAt:
          description: The date and time in partner local time zone (ISO 8601 format) when response is generated.
          type: string
          format: date-time
        records:
          description: Array of media asset records
          type: array
          maxItems: 10
          items:
            type: object
            properties:
              id:
                description: Unique identifier for the media asset
                type: string
              createdAt:
                description: The date and time in UTC (ISO 8601 format) when the media asset was created
                type: string
                format: date-time
              updatedAt:
                description: The date and time in UTC (ISO 8601 format) when the media asset was last updated
                type: string
                format: date-time
              title:
                description: Title of the media asset
                type: string
              altText:
                description: Alternative text for the media asset for accessibility purposes
                type: string
                nullable: true
              urlTemplate:
                description: URL template for the media asset (null if not approved)
                type: string
                nullable: true
              moderationInfo:
                description: Information about the moderation status
                type: object
                properties:
                  sourceUrl:
                    description: Original source URL of the media
                    type: string
                    format: uri
                  moderationStatus:
                    description: Current moderation status
                    type: string
                    enum:
                      - approved
                      - rejected
                      - pending
                  moderationStatusReasons:
                    description: Key-value collection of moderation reasons where key is the reason code and value is the human-readable reason description
                    type: object
                    nullable: true
                    additionalProperties:
                      type: string
                      description: Human-readable description of the moderation reason
              schedule:
                description: Schedule information for when the media is active
                type: array
                maxItems: 1
                items:
                  type: object
                  properties:
                    daysOfWeek:
                      description: Days of the week when the media is active
                      type: array
                      maxItems: 7
                      items:
                        type: string
                        enum:
                          - monday
                          - tuesday
                          - wednesday
                          - thursday
                          - friday
                          - saturday
                          - sunday
                    startTime:
                      description: Start time in partner local time, format is ISO 8601 hh:mm:ss
                      type: string
                    endTime:
                      description: End time in partner local time, format is ISO 8601 hh:mm:ss
                      type: string
                    startDate:
                      description: Start date for the schedule (ISO 8601 format)
                      type: string
                      format: date
                      nullable: true
                    endDate:
                      description: End date for the schedule (ISO 8601 format)
                      type: string
                      format: date
                      nullable: true
              isLiveNow:
                description: Whether the media asset is currently live
                type: boolean
              isDefault:
                description: Whether this media asset is the default one
                type: boolean
              overlappedBy:
                description: Assets that overlaps this one for specific date range
                type: array
                nullable: true
                items:
                  type: object
                  properties:
                    assetId:
                      description: ID of the overlapping asset
                      type: string
                    title:
                      description: Title of the overlapping asset
                      type: string
                    startDate:
                      description: Start date of the overlap (ISO 8601 format)
                      type: string
                      format: date
                    endDate:
                      description: End date of the overlap (ISO 8601 format)
                      type: string
                      format: date
      type: object
      description: Response containing partner media assets with their moderation status and scheduling information
      example:
        generatedAt: '2025-08-20T09:47:58.721+02:00'
        records:
          - id: abcf41eb585a452889700310b9e33928
            createdAt: '2025-02-15T16:20:05.567Z'
            updatedAt: '2025-02-15T16:20:05.567Z'
            title: Default
            urlTemplate: null
            moderationInfo:
              sourceUrl: https://je-bucket-mediaworkerservice-eu-west-1-pdv-staging-1.s3.eu-west-1.amazonaws.com/je-bucket-mediaworkerservice-eu-west-1-pdv-staging-1/UK/12345/HEADER/1744826727254_HEADER.jpg
              moderationStatus: pending
              moderationStatusReasons: null
            schedule: []
            isLiveNow: false
            isDefault: true
          - id: 89fc282e9bb445debd6e9220af2ab515
            createdAt: '2025-03-10T09:30:15.123Z'
            updatedAt: '2025-03-14T14:22:33.456Z'
            title: Breakfast
            altText: Breakfast
            urlTemplate: null
            moderationInfo:
              sourceUrl: https://je-bucket-mediaworkerservice-eu-west-1-pdv-staging-1.s3.eu-west-1.amazonaws.com/je-bucket-mediaworkerservice-eu-west-1-pdv-staging-1/UK/12345/HEADER/1744824527214_HEADER.jpg
              moderationStatus: rejected
              moderationStatusReasons:
                image_not_food_image: Media image is not food image.
            schedule:
              - daysOfWeek:
                  - monday
                  - tuesday
                  - wednesday
                  - thursday
                  - friday
                  - saturday
                  - sunday
                startTime: '07:00:00'
                endTime: '11:00:00'
                startDate: null
                endDate: null
            isLiveNow: false
            isDefault: false
            overlappedBy: null
          - id: b12ed02ba6304c08ba2b8304f76c5834
            createdAt: '2025-03-12T08:15:42.789Z'
            updatedAt: '2025-03-15T10:45:18.234Z'
            title: Breakfast
            altText: Breakfast
            urlTemplate: https://just-eat-staging-eu-res.cloudinary.com/image/upload/c_fill,q_auto,{transformations}/v1/uk/partner-headers/123456/b12ed02ba6304c08ba2b8304f76c5834
            moderationInfo:
              sourceUrl: https://je-bucket-mediaworkerservice-eu-west-1-pdv-staging-1.s3.eu-west-1.amazonaws.com/je-bucket-mediaworkerservice-eu-west-1-pdv-staging-1/UK/12345/HEADER/1744826727214_HEADER.jpg
              moderationStatus: approved
              moderationStatusReasons: null
            schedule:
              - daysOfWeek:
                  - monday
                  - tuesday
                  - wednesday
                  - thursday
                  - friday
                  - saturday
                  - sunday
                startTime: '07:00:00'
                endTime: '11:00:00'
                startDate: null
                endDate: null
            isLiveNow: true
            isDefault: false
            overlappedBy:
              - assetId: 4aeb41eb585a452889700310b9e33928
                title: Easter breakfast
                startDate: '2025-04-18'
                endDate: '2025-04-21'
          - id: 4aeb41eb585a452889700310b9e33928
            createdAt: '2025-03-15T16:20:05.567Z'
            updatedAt: '2025-03-15T16:20:05.567Z'
            title: Easter breakfast
            urlTemplate: null
            moderationInfo:
              sourceUrl: https://je-bucket-mediaworkerservice-eu-west-1-pdv-staging-1.s3.eu-west-1.amazonaws.com/je-bucket-mediaworkerservice-eu-west-1-pdv-staging-1/UK/12345/HEADER/1744826727254_HEADER.jpg
              moderationStatus: pending
              moderationStatusReasons: null
            schedule:
              - daysOfWeek:
                  - monday
                  - friday
                  - saturday
                  - sunday
                startTime: '07:00:00'
                endTime: '11:00:00'
                startDate: '2025-04-18'
                endDate: '2025-04-21'
            isLiveNow: false
            isDefault: false
    PartneroffersAvailableTimeSlotsResponse:
      type: object
      properties:
        available:
          nullable: false
          items:
            description: Pair of start and end time of available period to create offer
            properties:
              from:
                nullable: false
                description: The available offer start time
                format: time
                type: string
              to:
                nullable: false
                description: The available offer end time
                format: time
                type: string
            type: object
          description: The collection of available time slots in restaurant local time
          type: array
        overlappingOfferIds:
          nullable: false
          items:
            type: string
          description: The collection of overlapped offer ids for same date
          type: array
      additionalProperties: false
      example:
        available:
          - from: '12:00:00'
            to: '12:30:00'
          - from: '12:30:00'
            to: '13:00:00'
        overlappingOfferIds:
          - '1'
          - '2'
    PartneroffersBogof:
      description: Bogof offer configuration.
      additionalProperties: false
      type: object
      title: Bogof
      properties:
        productSet:
          description: Items that would be discounted.
          $ref: '#/components/schemas/PartneroffersProductSet'
        maximumNumberOfRedemptions:
          description: The maximum number of free items can be given.
          format: integer
          type: number
          minimum: 1
          deprecated: true
          nullable: true
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of discounted items for this offer, unlimited when null
          minimum: 1
          default: 1
          nullable: true
        discount:
          description: Item discount details.
          $ref: '#/components/schemas/PartneroffersDiscount'
      example:
        productSet:
          categories:
            - name: Pizza
        maximumRedemptions: 1
        discount:
          discountPercentage: 100
    PartneroffersBogofMixMatch:
      description: Bogof Mix and Match offer configuration.
      additionalProperties: false
      type: object
      title: Bogof
      properties:
        productSet:
          description: Items that would be discounted.
          $ref: '#/components/schemas/PartneroffersProductSet'
        maximumNumberOfRedemptions:
          description: The maximum number of free items can be given.
          format: integer
          type: number
          minimum: 1
          deprecated: true
          nullable: true
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of discounted items for this offer, unlimited when null
          minimum: 1
          default: 1
          nullable: true
        discount:
          description: Item discount details.
          $ref: '#/components/schemas/PartneroffersDiscount'
      example:
        productSet:
          categories:
            - name: Pizza
        maximumRedemptions: 1
        discount:
          discountPercentage: 100
    PartneroffersCampaign:
      description: Campaign information.
      additionalProperties: false
      type: object
      title: CampaignV2
      properties:
        id:
          nullable: false
          description: Internal id of the campaign
          type: string
        name:
          nullable: false
          description: Name of the campaign
          type: string
        description:
          nullable: false
          description: Description of the campaign
          type: string
        type:
          nullable: false
          description: Type of the campaign
          type: string
        offerTemplate:
          nullable: false
          description: Information about offer
          $ref: '#/components/schemas/PartneroffersOfferTemplateV2'
        runningPeriods:
          type: array
          items:
            $ref: '#/components/schemas/PartneroffersMultipleDaysRunningPeriod'
        status:
          nullable: false
          description: The campaign status
          $ref: '#/components/schemas/PartneroffersCampaignStatusType'
        statusReason:
          nullable: true
          description: Reason why status change was requested by customer if any
        eligibleStatusChanges:
          nullable: false
          description: Array of eligible statuses
          type: array
          items:
            $ref: '#/components/schemas/PartneroffersCampaignEligibleStatusChange'
      example:
        id: someId111
        name: bigPizza
        description: Big Pizza on orders over 10 GBP
        type: GenericOfferCampaign
        offerTemplate:
          offerType: freeItem
          consumerSegment: all
          qualifyingCriteria:
            minimumSpendValue: 1000
          freeItem:
            productSet:
              products:
                - name: Big Pizza
            maximumRedemptions: 2
            discount:
              discountPercentage: 100
        runningPeriods:
          - startDate: '2020-12-12T00:00:00.0000000+00:00'
            endDate: '2021-12-12T00:00:00.0000000+00:00'
        status: subscribed
        eligibleStatusChanges:
          - fromDateTime: '2021-01-12T00:00:00.0000000+00:00'
            toDateTime: '2021-02-12T00:00:00.0000000+00:00'
            status: optOutRequested
    PartneroffersCampaignEligibleStatusChange:
      type: object
      description: Eligible status changes for the campaign
      properties:
        fromDateTime:
          format: date-time
          description: Date and time when status change become eligible
          type: string
        toDateTime:
          format: date-time
          description: Date and time when status change become non-eligible
          type: string
        status:
          description: Eligible status.
          $ref: '#/components/schemas/PartneroffersCampaignStatusType'
      example:
        fromDateTime: '2021-01-12T00:00:00.0000000+00:00'
        toDateTime: '2021-02-12T00:00:00.0000000+00:00'
        status: optOutRequested
    PartneroffersCampaignStatusType:
      description: The campaign status.
      enum:
        - subscribed
        - optOutRequested
        - optOutConfirmed
        - unsubscribed
      type: string
    PartneroffersCategory:
      description: Category model.
      additionalProperties: false
      type: object
      title: Category
      properties:
        name:
          nullable: false
          description: Name of the category
          type: string
      example:
        name: Pizza
    PartneroffersCreateOffersRequestV2:
      type: object
      description: The request object for creating of new offer group.
      properties:
        runningPeriod:
          nullable: false
          $ref: '#/components/schemas/PartneroffersRunningPeriod'
        daysOfWeek:
          items:
            enum:
              - sunday
              - monday
              - tuesday
              - wednesday
              - thursday
              - friday
              - saturday
            type: string
          uniqueItems: true
          description: Days of week to run the offer
          type: array
        serviceTypes:
          items:
            type: string
          uniqueItems: true
          description: Service types for which offer is applicable
          type: array
        offerType:
          nullable: false
          $ref: '#/components/schemas/PartneroffersPartnerOfferTypeV2'
        consumerSegment:
          nullable: false
          $ref: '#/components/schemas/PartneroffersPartnerConsumerSegmentV2'
        offerDescription:
          nullable: true
          description: Custom description for offer
          type: string
        qualifyingCriteria:
          nullable: true
          $ref: '#/components/schemas/PartneroffersQualifyingCriteria'
        percent:
          nullable: true
          $ref: '#/components/schemas/PartneroffersPercent'
        freeItem:
          nullable: true
          $ref: '#/components/schemas/PartneroffersFreeItem'
        bogof:
          nullable: true
          $ref: '#/components/schemas/PartneroffersBogof'
        bogofMixMatch:
          nullable: true
          $ref: '#/components/schemas/PartneroffersBogofMixMatch'
        itemLevelDiscount:
          nullable: true
          $ref: '#/components/schemas/PartneroffersItemLevelDiscount'
      example:
        daysOfWeek:
          - monday
          - friday
        runningPeriod:
          startDate: '2019-08-06'
          endDate: '2019-09-03'
          startTime: '12:00:00'
          endTime: '13:00:00'
        offerType: percent
        consumerSegment: all
        qualifyingCriteria:
          minimumSpendValue: 1000
        percent:
          discountPercent: 10
    PartneroffersDayOfWeek:
      description: The day of week.
      enum:
        - sunday
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday
      type: string
    PartneroffersDiscount:
      description: Details of item discount
      type: object
      properties:
        discountPercentage:
          nullable: true
          description: The percentage of discount
          type: integer
        discountAmount:
          nullable: true
          description: Fixed value discount in smallest unit of relevant currency
          type: integer
      minProperties: 1
      maxProperties: 1
      additionalProperties: false
      example:
        discountPercentage: 100
    PartneroffersFreeItem:
      description: FreeItem offer configuration.
      additionalProperties: false
      type: object
      title: FreeItem
      properties:
        productSet:
          description: Items that would be discounted.
          $ref: '#/components/schemas/PartneroffersProductSet'
        maximumNumberOfRedemptions:
          description: The maximum number of free items can be given.
          format: integer
          type: number
          minimum: 1
          deprecated: true
          nullable: true
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of discounted items for this offer, unlimited when null.
          minimum: 1
          default: 1
          nullable: true
        discount:
          description: Item discount details.
          $ref: '#/components/schemas/PartneroffersDiscount'
      example:
        productSet:
          products:
            - name: Big Pizza
        maximumRedemptions: 2
        discount:
          discountPercentage: 100
    PartneroffersItemLevelDiscount:
      description: Offer configuration for an item-level discount.
      additionalProperties: false
      type: object
      title: ItemLevelDiscount
      properties:
        productSet:
          description: Items that would be discounted.
          $ref: '#/components/schemas/PartneroffersProductSet'
        maximumNumberOfRedemptions:
          description: The maximum number of free items that can be given.
          format: integer
          type: number
          minimum: 1
          deprecated: true
          nullable: true
        maximumRedemptions:
          format: integer
          type: number
          description: The maximum number of discounted items for this offer, unlimited when null
          minimum: 1
          default: 1
          nullable: true
        discount:
          description: Item discount details.
          $ref: '#/components/schemas/PartneroffersDiscount'
      example:
        productSet:
          products:
            - name: Big Pizza
        maximumRedemptions: 2
        discount:
          discountPercentage: 50
    PartneroffersMultipleDaysRunningPeriod:
      description: Running period of campaign
      additionalProperties: false
      type: object
      title: MultipleDaysRunningPeriod
      properties:
        daysOfWeek:
          type: array
          items:
            $ref: '#/components/schemas/PartneroffersDayOfWeek'
          uniqueItems: true
        startDate:
          nullable: true
          description: The date when campaign starts
          format: date-time
          type: string
        endDate:
          nullable: false
          description: The date when campaign ends
          format: date-time
          type: string
        startTime:
          nullable: true
          description: Timestamp when campaign starts during the day
          format: time
          type: string
        endTime:
          nullable: true
          description: Timestamp when campaign ends during the day
          format: time
          type: string
      example:
        startDate: '2020-12-12T00:00:00.0000000+00:00'
        endDate: '2021-12-12T00:00:00.0000000+00:00'
    PartneroffersOfferTemplate:
      type: object
      properties:
        maxQualifyingValue:
          nullable: false
          description: Maximum qualifying value for a given offer template
          properties:
            currency:
              description: Currency code in ISO 4217 format
              type: string
            value:
              description: Smallest unit of local currency
              format: int32
              type: integer
          type: object
        discountValue:
          nullable: false
          description: Amount of the discount
          format: double
          type: number
        consumerSegment:
          nullable: false
          $ref: '#/components/schemas/PartneroffersPartnerConsumerSegment'
        id:
          nullable: false
          description: Internal id of the offer template
          format: int32
          type: integer
        offerType:
          nullable: false
          $ref: '#/components/schemas/PartneroffersPartnerOfferType'
      example:
        maxQualifyingValue:
          currency: GBP
          value: 5000
        discountValue: 15
        consumerSegment: All
        id: 333
        offerType: Percent
    PartneroffersOfferTemplateV2:
      description: Offer info.
      additionalProperties: false
      type: object
      title: OfferTemplate
      properties:
        offerType:
          nullable: false
          $ref: '#/components/schemas/PartneroffersPartnerOfferTypeV2'
        consumerSegment:
          nullable: false
          $ref: '#/components/schemas/PartneroffersPartnerConsumerSegmentV2'
        qualifyingCriteria:
          nullable: true
          $ref: '#/components/schemas/PartneroffersQualifyingCriteria'
        percent:
          nullable: true
          $ref: '#/components/schemas/PartneroffersPercent'
        freeItem:
          nullable: true
          $ref: '#/components/schemas/PartneroffersFreeItem'
        bogof:
          nullable: true
          $ref: '#/components/schemas/PartneroffersBogof'
        itemLevelDiscount:
          nullable: true
          $ref: '#/components/schemas/PartneroffersItemLevelDiscount'
      example:
        offerType: freeItem
        consumerSegment: all
        qualifyingCriteria:
          minimumSpendValue: 1000
        freeItem:
          productSet:
            products:
              - name: Big Pizza
          maximumRedemptions: 2
          discount:
            discountPercentage: 100
    PartneroffersOfferV2:
      description: Offer model.
      additionalProperties: false
      type: object
      title: Offer
      properties:
        offerId:
          description: Internal id of the offer
          type: string
        campaignId:
          nullable: true
          description: The unique identifier of the offer campaign.
          type: string
        runningPeriod:
          $ref: '#/components/schemas/PartneroffersRunningPeriod'
        dayOfWeek:
          nullable: false
          description: Day of week to run the offer
          $ref: '#/components/schemas/PartneroffersDayOfWeek'
        daysOfWeek:
          nullable: false
          description: Days of week to run
          type: array
          uniqueItems: false
          minItems: 1
          maxItems: 7
          items:
            $ref: '#/components/schemas/PartneroffersDayOfWeek'
        offerType:
          nullable: false
          $ref: '#/components/schemas/PartneroffersPartnerOfferTypeV2'
        consumerSegment:
          nullable: false
          $ref: '#/components/schemas/PartneroffersPartnerConsumerSegmentV2'
        offerDescription:
          nullable: true
          description: Custom description for offer
          type: string
        qualifyingCriteria:
          nullable: true
          $ref: '#/components/schemas/PartneroffersQualifyingCriteria'
        percent:
          nullable: true
          $ref: '#/components/schemas/PartneroffersPercent'
        freeItem:
          nullable: true
          $ref: '#/components/schemas/PartneroffersFreeItem'
        bogof:
          nullable: true
          $ref: '#/components/schemas/PartneroffersBogof'
        bogofMixMatch:
          nullable: true
          $ref: '#/components/schemas/PartneroffersBogofMixMatch'
        itemLevelDiscount:
          nullable: true
          $ref: '#/components/schemas/PartneroffersItemLevelDiscount'
      required:
        - offerId
        - runningPeriod
        - dayOfWeek
        - offerType
      example:
        offerId: SomeId
        runningPeriod:
          startDate: '2020-12-12'
          endDate: '2021-12-12'
        dayOfWeek: wednesday
        daysOfWeek:
          - monday
        offerType: freeItem
        consumerSegment: all
        qualifyingCriteria:
          minimumSpendValue: 1000
        freeItem:
          productSet:
            products:
              - name: Big Pizza
          maximumRedemptions: 2
          discount:
            discountPercentage: 100
    PartneroffersPartnerConsumerSegment:
      description: Consumer Segment that offer applies
      enum:
        - All
        - NewToRestaurant
      type: string
    PartneroffersPartnerConsumerSegmentV2:
      description: Consumer Segment that offer applies
      enum:
        - all
        - newToRestaurant
      type: string
    PartneroffersPartnerOfferType:
      description: Type of the offer
      enum:
        - Percent
        - FreeItem
        - Bogof
        - StampCard
        - Notification
      type: string
    PartneroffersPartnerOfferTypeV2:
      description: Type of the offer
      enum:
        - percent
        - freeItem
        - bogof
        - stampCard
        - notification
        - itemLevelDiscount
      type: string
    PartneroffersPercent:
      description: Percent offer configuration.
      additionalProperties: false
      type: object
      title: Percent
      properties:
        discountPercent:
          nullable: true
          description: Discount percentage for offer
          type: number
          format: integer
      example:
        discountPercent: 10
    PartneroffersPreferableModifier:
      description: Preferable modifier model model.
      additionalProperties: false
      type: object
      title: PreferableModifier
      properties:
        id:
          nullable: true
          description: Identifier of the modifier
          type: string
        name:
          nullable: true
          description: Name of the modifier
          type: string
        modifierGroupName:
          nullable: true
          description: Name of the modifier group
          type: string
      example:
        id: 10abfcd
    PartneroffersProduct:
      description: Product model.
      additionalProperties: false
      type: object
      title: Product
      properties:
        name:
          nullable: true
          description: Name of the product
          type: string
        variationName:
          nullable: true
          description: Name of the product variation
          type: string
        preferableModifiers:
          nullable: true
          description: Preferable modifiers for the product
          type: array
          items:
            $ref: '#/components/schemas/PartneroffersPreferableModifier'
      example:
        name: Ger Burger
        preferableModifiers:
          - id: 100asd
    PartneroffersProductSet:
      description: Set of products by brand names, categories, or specific products.
      additionalProperties: false
      type: object
      title: ProductSet
      properties:
        products:
          nullable: true
          description: The specific products.
          type: array
          items:
            $ref: '#/components/schemas/PartneroffersProduct'
        categories:
          nullable: true
          description: The categories product belongs to.
          type: array
          items:
            $ref: '#/components/schemas/PartneroffersCategory'
      example:
        products:
          - name: Ger Burger
          - name: Fanta
    PartneroffersQualifyingCriteria:
      description: Conditions that must be met in order to get the offer.
      additionalProperties: false
      type: object
      title: QualifyingCriteria
      properties:
        minimumSpendValue:
          nullable: true
          description: The minimum spend value required to be eligible for the Offer in smallest unit of relevant currency.
          format: integer
          type: number
        productSet:
          description: The basket product requirements to be eligible for the Offer.
          $ref: '#/components/schemas/PartneroffersProductSet'
          nullable: true
    PartneroffersRunningPeriod:
      description: Running period of consumer offer
      additionalProperties: false
      title: RunningPeriod
      properties:
        startDate:
          nullable: true
          description: The date when offer starts
          format: date
          type: string
        endDate:
          nullable: false
          description: The date when offer ends
          format: date
          type: string
        startTime:
          nullable: true
          description: Timestamp when offer starts during the day
          format: time
          type: string
        endTime:
          nullable: true
          description: Timestamp when offer ends during the day
          format: time
          type: string
      example:
        startDate: '2020-12-12'
        endDate: '2021-12-12'
    PartnerorderhistoryRestaurantOrderAppliedDiscount:
      description: A discount item in an order
      properties:
        type:
          description: The type of discount
          enum:
            - Percent
            - FirstTimeCustomer
            - StampCard
        discountAmount:
          description: The discount value in smallest unit of relevant currency
          format: integer
          type: number
      type: object
    PartnerorderhistoryRestaurantOrderCustomerInfo:
      description: Information about a customer
      properties:
        deliveryAddress:
          nullable: true
          items:
            description: The address line
            type: string
          description: The delivery address of the order
          type: array
        name:
          nullable: true
          description: The customer name
          type: string
      type: object
    PartnerorderhistoryRestaurantOrderDetails:
      properties:
        customerInfo:
          description: Information about a customer
          $ref: '#/components/schemas/PartnerorderhistoryRestaurantOrderCustomerInfo'
        paymentType:
          enum:
            - Card
            - Cash
          description: The payment type (cash or card)
        paymentInfo:
          description: Information about a payment
          $ref: '#/components/schemas/PartnerorderhistoryRestaurantOrderPaymentInfo'
        dueDate:
          format: date-time
          description: The due date of the order
          type: string
        deliveryPrice:
          format: integer
          description: The order delivery price in smallest unit of relevant currency
          type: number
        serviceFee:
          format: integer
          description: The order service fee in smallest unit of relevant currency
          type: number
        statusReason:
          enum:
            - TooFar
            - FakeDelivered
            - FakeNotDelivered
            - FaxNotReceived
            - IncorrectOrder
            - NoAnswerFromRestaurant
            - MissedByRestaurant
            - FakeNotCollected
            - RestaurantCannotDeliver
            - RejectedByRestaurant
            - NewTimeRejected
            - SystemError
            - RestaurantIsBusy
            - TestOrder
          description: The reason for the order's status, if known
        previousRestaurantOrderCount:
          description: The customer's previous total number of orders made to this restaurant
          type: number
        placedDate:
          format: date-time
          description: The order placed date
          type: string
        promptAsap:
          description: The flag that shows whether the customer awaits an order as soon as possible
          type: boolean
        currencyCode:
          description: The ISO-4217 currency code associated with the all prices and money amounts in order details
          type: string
        orderPrice:
          format: integer
          description: The order price in smallest unit of relevant currency
          type: number
        orderStatus:
          enum:
            - Completed
            - Cancelled
          description: Status of completed order
        orderItems:
          items:
            $ref: '#/components/schemas/PartnerorderhistoryRestaurantOrderItem'
          description: List of restaurant order items
          type: array
        transactionReference:
          description: The payment transaction reference, if known
          type: string
        previousTotalOrderCount:
          description: The customer's previous total number of orders made to all restaurants
          type: number
        id:
          description: The Id of the order
          type: string
        orderPriceBreakdown:
          description: The order price breakdown (all amounts in smallest unit of relevant currency)
          $ref: '#/components/schemas/PartnerorderhistoryRestaurantOrderPriceBreakdown'
        serviceType:
          enum:
            - Delivery
            - Collection
            - DineIn
          description: Type of service (collection, delivery or dine-in)
        appliedDiscounts:
          items:
            $ref: '#/components/schemas/PartnerorderhistoryRestaurantOrderAppliedDiscount'
          description: List of restaurant applied discounts
          type: array
        friendlyId:
          description: The friendly order Id
          type: string
        orderNotes:
          nullable: true
          description: Dictionary of the customer notes for the order
          additionalProperties:
            type: string
          type: object
      type: object
      description: An order details
      example:
        currencyCode: GBP
        customerInfo:
          deliveryAddress:
            - 13 Moon road
            - Mars
            - BS5 1KG
            - Bristol
          name: Simon Moon
        paymentType: Card
        paymentInfo:
          paidDate: '2020-01-01T09:31:00.0000000+00:00'
          paymentLines:
            - value: 500
              fee: 0
              paymentMethod: AccountCredit
            - value: 1549
              fee: 50
              paymentMethod: Card
          fees:
            - value: 50
              type: Card
            - value: 200
              type: Delivery
        deliveryPrice: 200
        serviceFee: 100
        statusReason: RejectedByRestaurant
        previousRestaurantOrderCount: 1
        placedDate: '2020-01-01T09:30:00.0000000+00:00'
        promptAsap: false
        previousJustEatOrderCount: 3
        orderPrice: 2099
        orderStatus: Cancelled
        orderItems:
          - itemType: Product
            itemId: p1
            synonym: Medium
            subItems:
              - itemType: MealPart
                itemId: mp1
                synonym: Medium
                subItems: []
                description: classic pizza Margherita
                unitPrice: 0
                quantity: 1
                name: Margherita
              - itemType: MealPart
                itemId: mp2
                synonym: 1L
                subItems: []
                description: ''
                unitPrice: 0
                quantity: 1
                name: Coca-Cola
              - itemType: Accessory
                itemId: a1
                synonym: ''
                subItems: []
                unitPrice: 100
                quantity: 1
                name: Double Cheese
            description: one pizza and one drink from choices
            unitPrice: 999
            quantity: 1
            name: Pizza and drink
          - itemType: Product
            itemId: p2
            synonym: ''
            subItems: []
            description: Romaine lettuce, croutons, Parmesan cheese, lemon juice, olive oil, egg, Worcestershire sauce, anchovies, Dijon mustard, black pepper
            unitPrice: 533
            quantity: 2
            name: Cesar Salad
        transactionReference: 123334567667989
        appliedDiscounts:
          - discountAmount: 2550
            type: StampCard
        id: rtvtgo0wwugmiiikdpzvsg
        orderPriceBreakdown:
          vouchers: 0
          discounts: 207
          fees: 250
          items: 2066
          accountCredits: 500
        serviceType: Delivery
        dueDate: '2020-01-01T10:15:00.0000000+00:00'
        friendlyId: 821367535
        orderNotes:
          NoteForRestaurant: Restaurant note
          NoteForDriver: Delivery note
    PartnerorderhistoryRestaurantOrderHistory:
      properties:
        orders:
          items:
            $ref: '#/components/schemas/PartnerorderhistoryRestaurantOrderSummary'
          description: List of restaurant order summaries
          type: array
        paging:
          properties:
            cursors:
              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
              description: Consists of cursors markers used in pagination
              type: object
          description: Consists of pagination information
          type: object
      type: object
      example:
        orders:
          - orderStatus: Completed
            placedDate: '2020-01-01T09:30:00.0000000+00:00'
            deliveryPrice: 200
            orderPrice: 2099
            currencyCode: GBP
            paymentType: Card
            id: rtvtgo0wwugmiiikdpzvsg
            serviceType: Delivery
            friendlyId: '821367535'
          - orderStatus: Cancelled
            placedDate: '2020-01-02T19:20:00.0000000+00:00'
            deliveryPrice: 0
            orderPrice: 99900
            currencyCode: GBP
            paymentType: Cash
            id: uerbbymdfkxdecduuerbby
            serviceType: Collection
            friendlyId: '829022736'
          - orderStatus: Completed
            placedDate: '2020-01-02T20:45:00.0000000+00:00'
            deliveryPrice: 0
            orderPrice: 54400
            currencyCode: GBP
            paymentType: Cash
            id: dfssd3efsferr4rgfdgf
            serviceType: DineIn
            friendlyId: '829022737'
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    PartnerorderhistoryRestaurantOrderItem:
      description: An item in an order
      properties:
        name:
          description: The name of the item
          type: string
        unitPrice:
          description: The unit price for the item
          format: integer
          type: number
        itemId:
          description: The Id of the item
          type: string
        synonym:
          description: The synonym of the item
          type: string
        quantity:
          description: The quantity of the item
          format: int32
          type: integer
        itemType:
          description: The type of item
          enum:
            - Product
            - MealPart
            - Accessory
        description:
          description: The description for the item
          type: string
        subItems:
          items:
            $ref: '#/components/schemas/PartnerorderhistoryRestaurantOrderItem'
          description: The sub items of item, such as meal parts of the meal or accessories
          type: array
      type: object
    PartnerorderhistoryRestaurantOrderPaymentInfo:
      description: Information about a payment
      properties:
        paidDate:
          nullable: true
          description: The date and time the order was paid for, if known
          format: date-time
          type: string
        fees:
          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
          description: The fees applied to the order
          type: array
        paymentLines:
          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
          description: The payment lines
          type: array
      type: object
    PartnerorderhistoryRestaurantOrderPriceBreakdown:
      description: The order price breakdown (all amounts in smallest unit of relevant currency)
      properties:
        fees:
          description: The total amount of fees applied to the order
          format: integer
          type: number
        discounts:
          description: The total amount of discount(s) applied to the order
          format: integer
          type: number
        vouchers:
          description: The total amount of voucher(s) applied to the order
          format: integer
          type: number
        items:
          description: The total amount of order items
          format: integer
          type: number
        accountCredits:
          description: The total amount of account credit(s) applied to the order
          format: integer
          type: number
      type: object
    PartnerorderhistoryRestaurantOrderSummaries:
      properties:
        totalCollectionOrderValue:
          format: int32
          description: Total value of collection orders for date range
          type: number
        totalDeliveryOrderValue:
          format: int32
          description: Total value of delivery orders for date range
          type: number
        totalDineInOrderValue:
          format: int32
          description: Total value of dine-in orders for date range
          type: number
        totalDeliveryPriceValue:
          format: int32
          description: Total delivery price value for date range
          type: number
        totalServiceFeeValue:
          format: int32
          description: Total service fee value for date range
          type: number
        count:
          format: int32
          description: Total number of all orders for date range
          type: integer
        currencyCode:
          description: The ISO-4217 currency code associated with the total values
          type: string
        totalCardOrderValue:
          format: int32
          description: Total value of card orders for date range
          type: number
        totalOrderValue:
          format: int32
          description: Total value of all orders for date range
          type: number
        totalCashOrderValue:
          format: int32
          description: Total value of cash orders for date range
          type: number
      type: object
      description: An orders summary for date range (all total values in smallest unit of relevant currency)
      example:
        totalCollectionOrderValue: 22241
        totalDeliveryOrderValue: 66621
        totalDineInOrderValue: 11131
        totalDeliveryPriceValue: 70
        totalServiceFeeValue: 50
        count: 27
        currencyCode: GBP
        totalCardOrderValue: 92059
        totalOrderValue: 99993
        totalCashOrderValue: 7934
    PartnerorderhistoryRestaurantOrderSummary:
      properties:
        orderStatus:
          enum:
            - Completed
            - Cancelled
          description: Status of completed order
        placedDate:
          format: date-time
          description: The order placed date
          type: string
        deliveryPrice:
          format: integer
          description: The order delivery price in smallest unit of relevant currency
          type: number
        serviceFee:
          format: integer
          description: The order service fee in smallest unit of relevant currency
          type: number
        orderPrice:
          format: integer
          description: The order price in smallest unit of relevant currency
          type: number
        currencyCode:
          description: The ISO-4217 currency code associated with the order price
          type: string
        paymentType:
          enum:
            - Card
            - Cash
          description: The payment type (cash or card)
        id:
          description: The Id of the order
          type: string
        serviceType:
          enum:
            - Collection
            - Delivery
            - DineIn
          description: Type of service (collection, delivery or dine-in)
        friendlyId:
          description: The friendly order Id
          type: string
      description: An order summary
      type: object
    PartnerproofofownershipOwner:
      type: object
      description: Partner legal details response
      properties:
        type:
          description: field that describes whether the principal is an Individual or Business
          type: string
          enum:
            - individual
            - business
        birthDate:
          description: The birth date of the owner (YYYY-MM-DD, YYYY-MM or YYYY)
          type: string
          format: date
        firstName:
          description: First name of the owner
          type: string
        middleName:
          description: Middle name of the owner
          type: string
          nullable: true
        lastName:
          description: Last name of the owner
          type: string
        fullName:
          description: Full name of the owner
          type: string
        nationality:
          description: Nationality of the owner
          type: string
        currentAddress:
          description: address at which owner can be contacted
          $ref: '#/components/schemas/PartnersignupAddress'
        birthAddress:
          description: Records the location where the owner was born
          $ref: '#/components/schemas/PartnersignupAddress'
        isSigningAuthority:
          description: Indicates whether the owner has been given the legal right to make decisions on behalf of the subject business.
          type: boolean
      example:
        type: individual
        birthDate: '1985-05-25'
        firstName: Deepak
        middleName: null
        lastName: Chhetri
        fullName: Deepak Chhetri
        nationality: German
        currentAddress:
          street:
            - Houttil
            - 46 B
          city: Alkmaar
          state: Noord-Holland
          postcode: 1811 JN
          country: Netherlands
        isSigningAuthority: false
    PartnerproofofownershipPartnerProofOfOwnershipConfirmRequest:
      type: object
      description: Proof of Ownership Confirmation Request
      properties:
        status:
          $ref: '#/components/schemas/PartnerproofofownershipStatus'
    PartnerproofofownershipPartnerProofOfOwnershipCreateRequest:
      type: object
      description: Partner proof of ownership
      properties:
        duns:
          $ref: '#/components/schemas/PartnersignupDuns'
      example:
        duns: '494649722'
    PartnerproofofownershipPartnerProofOfOwnershipDocument:
      type: object
      description: Partner ownership proof document
      required:
        - id
        - issuer
        - registrationNumber
        - country
      properties:
        id:
          type: string
          description: Opaque identifier for the resource
        issuer:
          description: Chamber of commerce/business registration issuer
          type: string
        registrationNumber:
          description: Chamber of commerce/business registration number
          type: string
        country:
          description: Country code for the country of registration
          type: string
          maxLength: 2
          minLength: 2
        documentDownloadUrl:
          type: string
          format: uri
          nullable: true
          description: Download URL for the Chamber of commerce document in the KYC document store. The value is null if no mime type was provided.
      example:
        id: '1'
        issuer: kvk
        registrationNumber: '123'
        country: nl
        documentDownloadUrl: https://your-asset-store.s3.eu-west-1.amazonaws.com/upload/path/to/document-12345.pdf
    PartnerproofofownershipPartnerProofOfOwnershipDocumentCreateRequest:
      type: object
      description: Partner ownership proof document
      required:
        - issuer
        - registrationNumber
        - country
      properties:
        issuer:
          description: Chamber of commerce/business registration issuer
          type: string
        registrationNumber:
          description: Chamber of commerce/business registration number
          type: string
        country:
          description: Country code for the country of registration
          type: string
          maxLength: 2
          minLength: 2
        mimeType:
          type: string
          format: mime-type
          nullable: true
          description: The MIME type of the document. If available an upload instruction for the document will be returned in the response.
      example:
        issuer: kvk
        registrationNumber: '123'
        country: nl
        mimeType: application/pdf
    PartnerproofofownershipPartnerProofOfOwnershipDocumentCreateResponse:
      type: object
      description: Partner ownership proof document
      required:
        - id
        - issuer
        - registrationNumber
        - country
      properties:
        id:
          type: string
          description: Opaque identifier for the resource
          nullable: false
        issuer:
          description: Chamber of commerce/business registration issuer
          type: string
        registrationNumber:
          description: Chamber of commerce/business registration number
          type: string
        country:
          description: Country code for the country of registration
          type: string
          maxLength: 2
          minLength: 2
        documentUploadInstructions:
          type: object
          nullable: true
          description: Instructions for uploading the document to the Document store. This field is returned only when mime type was provided to initiate an upload.
          properties:
            url:
              type: string
              format: uri
              description: The signed URL to which the client should upload the binary document.
            expiresAt:
              type: string
              format: date-time
              description: The time when the upload instructions expire, after which the signed URL will no longer be valid.
      example:
        id: '1'
        issuer: kvk
        registrationNumber: '123'
        country: nl
        documentUploadInstructions:
          url: https://your-asset-store.s3.eu-west-1.amazonaws.com/upload/path/to/document-12345.pdf?X-Amz-Expires=180&X-Amz-Security-Token=some-token
          expiresAt: '2024-02-26T19:30:00.000Z'
    PartnerproofofownershipPartnerProofOfOwnershipDocumentResponse:
      type: object
      properties:
        partnerProofOfOwnershipDocuments:
          type: array
          description: List of Partner ownership proof documents
          items:
            $ref: '#/components/schemas/PartnerproofofownershipPartnerProofOfOwnershipDocument'
      example:
        partnerProofOfOwnershipDocuments:
          - id: '1'
            issuer: kvk
            registrationNumber: '123'
            country: nl
            documentDownloadUrl: https://your-asset-store.s3.eu-west-1.amazonaws.com/upload/path/to/document-12345.pdf
          - id: '2'
            issuer: kvk
            registrationNumber: '456'
            country: nl
            documentDownloadUrl: null
    PartnerproofofownershipPartnerProofOfOwnershipDocumentsCreateRequest:
      type: object
      properties:
        partnerProofOfOwnershipDocuments:
          type: array
          description: List of partner ownership proof documents
          items:
            $ref: '#/components/schemas/PartnerproofofownershipPartnerProofOfOwnershipDocumentCreateRequest'
      example:
        partnerProofOfOwnershipDocuments:
          - issuer: kvk
            registrationNumber: '123'
            country: nl
            mimeType: application/pdf
          - issuer: kvk
            registrationNumber: '456'
            country: nl
            mimeType: null
    PartnerproofofownershipPartnerProofOfOwnershipDocumentsCreateResponse:
      type: object
      properties:
        partnerProofOfOwnershipDocuments:
          type: array
          description: List of Partner ownership proof documents
          items:
            $ref: '#/components/schemas/PartnerproofofownershipPartnerProofOfOwnershipDocumentCreateResponse'
      example:
        partnerProofOfOwnershipDocuments:
          - id: '1'
            issuer: kvk
            registrationNumber: '123'
            country: nl
            documentUploadInstructions:
              url: https://your-asset-store.s3.eu-west-1.amazonaws.com/upload/path/to/document-12345.pdf?X-Amz-Expires=180&X-Amz-Security-Token=some-token
              expiresAt: '2024-02-26T19:30:00.000Z'
          - id: '2'
            issuer: kvk
            registrationNumber: '456'
            country: nl
            documentUploadInstructions: null
    PartnerproofofownershipPartnerProofOfOwnershipResponse:
      type: object
      description: Partner legal details response
      properties:
        duns:
          $ref: '#/components/schemas/PartnersignupDuns'
        status:
          $ref: '#/components/schemas/PartnerproofofownershipStatus'
        commercialName:
          description: Single name by which the organization is know or identified.
          type: string
        legalName:
          description: The legally recognized name by which the organization is registered with a local or national Registry.
          type: string
        tradeNames:
          description: The details of the names the organization trades under for commercial purposes.
          type: array
          items:
            type: string
        commercialAddress:
          description: The details of the Primary Address at which the organization is located or conducts operations.
          $ref: '#/components/schemas/PartnersignupAddress'
        legalAddress:
          description: The details of the organization's official address as recorded with an external authority.
          $ref: '#/components/schemas/PartnersignupAddress'
        currentOwners:
          description: The detail of the person identified as a key stakeholder of the business or organization by the local registry or other official sources. The key stakeholder can be a natural person or an organization.
          type: array
          items:
            $ref: '#/components/schemas/PartnerproofofownershipOwner'
        formerOwners:
          description: The details of the person identified as a previously employed key stakeholder of a business or organization by the local registry or other official sources. A former key stakeholder can be a natural person or an organization.
          type: array
          items:
            $ref: '#/components/schemas/PartnerproofofownershipOwner'
        principalOwner:
          description: The person identified as a highest ranking key stakeholder of a business or organization by the local registry or other official sources. A key stakeholder can be a natural person or an organization.
          $ref: '#/components/schemas/PartnerproofofownershipOwner'
      example:
        duns: '494649722'
        commercialName: Uit India
        legalName: Uit India
        tradeNames:
          - tradeName1
          - tradeName2
        commercialAddress:
          street:
            - Houttil
            - 46 B
          city: Alkmaar
          state: Noord-Holland
          postcode: 1811 JN
          country: Netherlands
        legalAddress:
          street:
            - Houttil
            - 46 B
          city: Alkmaar
          state: Noord-Holland
          postcode: 1811 JN
          country: Netherlands
        currentOwners: []
        formerOwners: []
        principalOwner:
          type: individual
          birthDate: '1985-05-25'
          firstName: Deepak
          middleName: null
          lastName: Chhetri
          fullName: Deepak Chhetri
          nationality: German
          currentAddress:
            street:
              - Houttil
              - 46 B
            city: Alkmaar
            state: Noord-Holland
            postcode: 1811 JN
            country: Netherlands
          isSigningAuthority: false
    PartnerproofofownershipStatus:
      description: Status for confirming or rejecting the proof of ownership
      type: string
      enum:
        - success
        - failure
        - pending
    PartnersPartnerUpdateRequest:
      type: object
      description: A request to update the profile of a partner.
      properties:
        isTestPartner:
          nullable: false
          description: Indicates whether the partner is for testing purposes.
          type: boolean
        communicationLanguage:
          type: string
          description: A two-letter language code as defined by ISO 639-1.
          minLength: 2
          maxLength: 2
        name:
          type: string
          description: Name of the partner in JET.
        shortDescription:
          description: Brief summary of the partner.
          type: string
        longDescription:
          description: Comprehensive detailed overview of the partner.
          type: string
        allergenUrl:
          description: URL pointing to the partner's official dietary and allergen information page.
          type: string
          format: uri
        addresses:
          type: array
          description: A list of addresses associated with the partner.
          items:
            $ref: '#/components/schemas/RestaurantservicePartnerAddress'
        businessType:
          $ref: '#/components/schemas/RestaurantserviceBusinessTypeEnum'
          description: The business type of a partner.
        emailAddresses:
          type: array
          description: Email contact addresses associated with the partner.
          items:
            $ref: '#/components/schemas/RestaurantservicePartnerEmailAddress'
        phoneNumbers:
          type: array
          description: Phone contact addresses associated with the partner.
          items:
            $ref: '#/components/schemas/RestaurantservicePartnerPhoneNumbers'
        updatedBy:
          type: string
          description: Identifier of the user or system that created the partner.
        serviceTypes:
          $ref: '#/components/schemas/RestaurantserviceServiceTypesEnum'
          description: The service types allowed for a partner.
        seoName:
          type: string
          description: The SEO name of the partner.
        generalSettings:
          type: object
          description: General settings that can control various partner capabilities.
          nullable: false
          properties:
            allowCourierTipping:
              nullable: false
              description: Indicates whether the partner allows customers to tip the courier.
              type: boolean
            allowOrderComments:
              nullable: false
              description: Indicates whether the partner allows customers to leave comments / information on orders.
              type: boolean
            excludeFromSearch:
              nullable: false
              description: Indicates whether the partner should be excluded from search results.
              type: boolean
            autoAcceptOrders:
              nullable: false
              description: Indicates whether the orders to this partner are automatically accepted.
              type: boolean
            allowItemSubstitutions:
              nullable: false
              description: Indicates whether the partner can substitution items in an order.
              type: boolean
            allowSelfClosing:
              nullable: false
              description: Indicates whether the partner is allowed to close themselves.
              type: boolean
            showAddressOnline:
              type: boolean
              description: Showing the address on Web/APP when setting is enabled. (for Pickup orders - The restaurant's address must always be shown)
            allowPhoneNumberDisplayInEmail:
              type: boolean
              description: This setting shows or hides the phone number on the order confirmation email.
            excludeGoogleFoodOrder:
              type: boolean
              description: Determines whether the restaurant is available on the Google Food Ordering Platform.
            isVIPPartner:
              type: boolean
              description: Indicates whether the partner is a VIP one.
            showInvoiceAddressInMinisiteDetails:
              type: boolean
              description: Address used in the minisite's colophon (default is Restaurant Address)
            allowDoubleReceipt:
              type: boolean
              description: Indicates if double receipt are allowed for the partner
            enablePreOrderAtCheckout:
              type: boolean
              description: Enables scheduling future fulfilment of an order during the checkout process.
            enableSKUsToPrintonOrderpadReceipts:
              type: boolean
              description: Determines whether SKUs will print on the orderpad receipts. SKUs are the identification codes for products.
            enablePreOrderForFutureAvailability:
              type: boolean
              description: Enables ordering for service windows beyond the current operating period.
            includeInUnlimitedFreeDelivery:
              type: boolean
              description: Determines whether the partner is to be included for Customers using their unlimited free delivery benefit.
            enableMenuSync:
              type: boolean
              description: Enable Menu Sync.
            enableMenuAvailabilitiesAndServiceTimes:
              type: boolean
              description: Enable Menu Availabilities and Service Times.
            enableRestaurantMenuManagerInPartnerCentre:
              type: boolean
              description: Enable Restaurant Menu Manager in Partner Centre.
        taxonomies:
          type: object
          nullable: true
          description: Taxonomy associations for the partner. When included in a PATCH, overwrites the stored taxonomy associations.
          properties:
            verticals:
              type: array
              nullable: true
              description: List of vertical ULID associated with the partner.
              items:
                type: string
                minLength: 26
                maxLength: 26
                pattern: ^[0-9A-HJKMNP-TV-Z]{26}$
            cuisines:
              type: array
              nullable: true
              description: List of cuisine ULID associated with the partner.
              items:
                type: string
                minLength: 26
                maxLength: 26
                pattern: ^[0-9A-HJKMNP-TV-Z]{26}$
    PartnersRequestsPartnerCreateRequest:
      additionalProperties: false
      properties:
        name:
          type: string
          description: Name of the partner.
        isTestPartner:
          type: boolean
          nullable: true
          description: Indicates if the partner is a test partner. (default value will be false)
        addresses:
          type: array
          description: A list of addresses associated with the partner.
          items:
            $ref: '#/components/schemas/RestaurantservicePartnerAddress'
        emailAddresses:
          type: array
          description: Email contact addresses associated with the partner.
          items:
            $ref: '#/components/schemas/RestaurantservicePartnerEmailAddress'
        phoneNumbers:
          type: array
          description: Phone contact addresses associated with the partner.
          items:
            $ref: '#/components/schemas/RestaurantservicePartnerPhoneNumbers'
        communicationLanguage:
          type: string
          description: A two-letter language code as defined by ISO 639-1.
        serviceTypes:
          $ref: '#/components/schemas/RestaurantserviceServiceTypesEnum'
          description: The service types allowed for a partner.
        createdBy:
          type: string
          description: Identifier of the user or system that created the partner.
      required:
        - name
        - addresses
        - emailAddresses
        - phoneNumbers
        - communicationLanguage
      type: object
      description: Partner creation request.
      x-api-version-from: 1
    PartnersRequestsUpdateUserPermissionsRequest:
      type: object
      description: |
        Request to grant and/or revoke permissions for a partner user. Only enabled feature permissions should be included.
        If a permission key appears in both grant and revoke, the request is rejected with 400.
      properties:
        grant:
          type: array
          description: List of permission relation names to grant to the user.
          minItems: 1
          maxItems: 30
          uniqueItems: true
          items:
            type: string
            description: A permission relation name identifying a specific level of access within the partner.
            example: canAccessMenu
        revoke:
          type: array
          description: List of permission relation names to revoke from the user.
          minItems: 1
          maxItems: 30
          uniqueItems: true
          items:
            type: string
            description: A permission relation name identifying a specific level of access within the partner.
            example: canAccessUserManagement
      anyOf:
        - required:
            - grant
        - required:
            - revoke
    PartnersResponsesPartnerCreateResponse:
      type: object
      description: Partner creation request.
      properties:
        id:
          type: string
          description: Unique identifier for the partner.
        legacyPartnerId:
          type: integer
          description: Unique identifier for the partner for legacy systems.
        tenant:
          type: string
          description: The tenant to which the partner belongs.
      additionalProperties: false
      example:
        id: 9AXM4BJRMHJK
        legacyPartnerId: 123456
        tenant: nl
    PartnersignupActivationStatus:
      type: object
      description: The activation status for a partner
      properties:
        partnerId:
          description: The partner id
          type: string
        signupId:
          description: The sign up identifier for the partner
          type: string
        activationStatus:
          $ref: '#/components/schemas/PartnersignupActivationStatusEnum'
      example:
        partnerId: '123456'
        signupId: '123456'
        activationStatus: readyForActivation
    PartnersignupActivationStatusEnum:
      description: Status of given restaurant creation process.
      enum:
        - onboarding
        - readyForActivation
        - activated
      type: string
    PartnersignupAddress:
      type: object
      description: Information required for an address
      properties:
        street:
          description: List of address lines
          type: array
          maxItems: 5
          minItems: 1
          items:
            type: string
            maxLength: 255
        city:
          description: Address field for the city name
          type: string
          maxLength: 255
        state:
          description: Address field for the state, province or political entity name
          type: string
          maxLength: 255
        postcode:
          description: Address field for postal code
          type: string
          maxLength: 20
        country:
          description: Address field for the country name
          type: string
          maxLength: 255
        geolocation:
          $ref: '#/components/schemas/SharedGeoJsonPoint'
      example:
        street:
          - Unit 1
          - High Road
        city: London
        postcode: AR51 1ET
        state: London
        country: United Kingdom
        geolocation:
          coordinates:
            - 51.501285
            - -0.142442
          type: point
    PartnersignupAlcohol:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: Describes the alcohol requirements for the sign up. Partner must provide a license document if they choose to serve alcohol.
      required:
        - servesAlcohol
      properties:
        servesAlcohol:
          description: Flag to indicate whether the partner chooses to serve alcohol
          type: boolean
        alcoholLicense:
          description: Alcohol license required for selling alcohol
          $ref: '#/components/schemas/PartnersignupDocument'
      example:
        servesAlcohol: true
        alcoholLicense:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The image belongs to some other business premises
          files:
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16Z'
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupApplicant:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: The applicant requirements
      required:
        - givenName
        - familyName
        - phoneNumber
        - emailAddress
      properties:
        businessTitle:
          description: Applicant's business title
          type: string
          enum:
            - owner
            - manager
            - otherAuthorisedSignatory
        givenName:
          description: Applicant's first name
          type: string
          maxLength: 255
        familyName:
          description: Applicant's last name
          type: string
          maxLength: 255
        phoneNumber:
          description: Applicant's phone number in E.164 format.
          type: string
          maxLength: 20
        emailAddress:
          description: Applicant's email address
          type: string
          maxLength: 320
        photoId:
          description: Identity document of applicant
          $ref: '#/components/schemas/PartnersignupDocument'
      example:
        businessTitle: manager
        givenName: Jane
        familyName: Doe
        phoneNumber: '+4479232123123'
        emailAddress: janeDoe@example.com
        photoId:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: a2e806b7-baf0-4b85-8e1a-a6170325ddcb
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 02229995-ad45-495e-8938-34a1e25799c8
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16Z'
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupApplicationMetadata:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: The application metadata
      required:
        - premisesType
        - occupancyType
        - applicationType
      properties:
        occupancyType:
          nullable: false
          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
          type: string
        applicationType:
          nullable: false
          description: The type of sign up application i.e. Standard, Non-Standard.
          enum:
            - unknown
            - standard
            - nonStandard
          type: string
        premisesType:
          nullable: false
          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
          type: string
        approvalFlow:
          nullable: true
          description: The type of approval flow
          enum:
            - full
            - skipInitial
          type: string
        businessEntityType:
          nullable: true
          description: The legal entity type of the business e.g Association, Foundation, General partnership etc...
          enum:
            - soleProprietorship
            - generalPartnership
            - limitedPartnership
            - privateLimitedCompany
            - publicLimitedCompany
            - foundation
            - trustOfficeFoundation
            - association
          type: string
      example:
        applicationType: nonStandard
        occupancyType: multipleBusinessMultipleOwnership
        premisesType: van
        approvalFlow: full
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
        businessEntityType: privateLimitedCompany
    PartnersignupApplicationStatus:
      description: The application status i.e. Open, Approved etc.
      enum:
        - leadCreated
        - userAssigned
        - openApplication
        - manualInterventionRequired
        - readyForInitialReview
        - initialReviewRejected
        - readyForFinalReview
        - finalReviewRejected
        - approved
        - discontinued
      type: string
    PartnersignupAuditLog:
      properties:
        logEntries:
          description: Audit log
          type: array
          items:
            $ref: '#/components/schemas/PartnersignupAuditLogEntry'
        paging:
          $ref: '#/components/schemas/PagingPagedCursorResponse'
      description: Response representing the audit log entries for a sign up
      example:
        logEntries:
          - signupId: '123456789'
            timestamp: '2024-02-02T11:20:58.174Z'
            action: view
            documentType: catalog
            user: Partner
          - signupId: '987654321'
            timestamp: '2024-02-02T11:30:58.174Z'
            action: upload
            documentType: alcoholLicense
            user: Partner
        paging:
          cursors:
            before: '2024-02-02T11:20:58.174Z'
            after: '2024-02-02T11:30:58.174Z'
      type: object
    PartnersignupAuditLogEntry:
      type: object
      properties:
        signupId:
          description: The id of the sign up.
          type: string
        timestamp:
          description: Timestamp when signup was last edited [YYYY-MM-DDThh:mm:ssZ]
          format: date-time
          type: string
        action:
          description: The type of action the user made
          type: string
        documentType:
          description: The type of document (if applicable)
          $ref: '#/components/schemas/PartnersignupDocumentType'
        user:
          description: The name of the agent, or "Partner" for actions triggered by a partner.
          type: string
          maxLength: 512
      example:
        signupId: '2026174131'
        timestamp: '2024-02-02T11:20:58.174Z'
        action: upload
        documentType: alcoholLicense
        user: Partner
    PartnersignupBankingDetails:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: The banking details
      required:
        - accountNumber
        - bankName
        - accountHolderName
      properties:
        accountNumber:
          description: The bank account number
          type: string
          maxLength: 13
        bankName:
          description: The name of the bank
          type: string
          maxLength: 255
        accountHolderName:
          description: The name on the bank account
          type: string
          maxLength: 255
        bankCode:
          description: The number identifying the banking company and optionally including a code to identify the particular branch (can be omitted for tenants where bank code is embedded in the account number)
          type: string
          minLength: 0
          maxLength: 10
        accountProof:
          description: Document proving the bank account ownership (e.g. bank statement or voided cheque)
          $ref: '#/components/schemas/PartnersignupDocument'
      example:
        accountNumber: '1234567890'
        bankName: HSBC
        accountHolderName: Mr John Doe
        bankCode: '123456'
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
        accountProof:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
              contentType: image/png
              dateAdded: '2026-01-01T09:37:16.899014Z'
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
              contentType: image/png
              dateAdded: '2026-01-01T09:38:16.899014Z'
    PartnersignupBusinessDetails:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: The business details
      properties:
        brandName:
          description: The name of partner's business.
          type: string
          maxLength: 512
        businessLegalName:
          description: Legal name of business that is registered with Companies House or similar authority
          type: string
          maxLength: 512
        businessPhoneNumber:
          description: Business phone number in E.164 format.
          type: string
          maxLength: 20
        businessEmailAddress:
          description: Business email address.
          type: string
          maxLength: 254
        businessIdentifier:
          description: Business unique identifier.
          type: string
          maxLength: 20
        businessIdentifierType:
          description: Business id type. For example Australian business number.
          type: string
          enum:
            - abn
        premises:
          $ref: '#/components/schemas/PartnersignupPremises'
        businessType:
          $ref: '#/components/schemas/PartnersignupBusinessTypes'
        kitchenPhoto:
          description: Pictures of Kitchen
          $ref: '#/components/schemas/PartnersignupDocument'
        leaseAgreement:
          description: Lease agreement if business operates from leased premises
          $ref: '#/components/schemas/PartnersignupDocument'
        logo:
          description: Business logo to be used by our platform
          $ref: '#/components/schemas/PartnersignupDocument'
        ownerLetter:
          description: Document that proves that the owner has given consent to operate in the premises by applicant
          $ref: '#/components/schemas/PartnersignupDocument'
        proofOfAddress:
          description: Registration with the local authority or a permission to trade where the food truck is parked.
          $ref: '#/components/schemas/PartnersignupDocument'
        proofOfOwnership:
          description: Document providing ownership details .e.g Utility Bill.
          $ref: '#/components/schemas/PartnersignupDocument'
        signupForm:
          description: Signup form completed and submitted by the partner during the registration process.
          $ref: '#/components/schemas/PartnersignupDocument'
        streetTradingLicense:
          description: License to operate business as a mobile or street vendor
          $ref: '#/components/schemas/PartnersignupDocument'
        contract:
          description: Contract document between the partner and the platform during sign-up.
          $ref: '#/components/schemas/PartnersignupDocument'
        register:
          description: An official certificate of commercial registration that confirms a company's legal status and authorized representatives.
          $ref: '#/components/schemas/PartnersignupDocument'
        ownershipDistribution:
          description: A declaration identifying the ultimate owners and legal representatives of a company..
          $ref: '#/components/schemas/PartnersignupDocument'
        ownershipRegistration:
          description: An official proof of the company’s ownership hierarchy and beneficial interests..
          $ref: '#/components/schemas/PartnersignupDocument'
      example:
        brandName: A Company that Makes Everything
        businessLegalName: ACME Inc.
        businessPhoneNumber: '+442300000000'
        businessEmailAddress: business@example.com
        businessIdentifier: '909242522'
        businessIdentifierType: abn
        premises:
          address:
            street:
              - Unit 1
              - High Road
            city: London
            postcode: AR51 1ET
            state: London
            country: United Kingdom
            geolocation:
              coordinates:
                - 51.501285
                - -0.142442
              type: point
          locationId: ChIJr370123kfkgABCXhwjZymy0
          shopFrontPhoto:
            status: initialReviewRejected
            canOverrideOptional: false
            optional: true
            rejectionReasons:
              - type: other
                comment: The document is not clear
            files:
              - documentKey: 5edc8fa7-982a-40cb-9b50-08ee7498833e
                contentType: image/png
                dateAdded: '2022-11-17T09:37:16.899014Z'
              - documentKey: 21f87f18-6c35-4413-bb20-a3c72b7cfd1c
                contentType: image/png
                dateAdded: '2022-11-17T09:38:16.899014Z'
        businessType: restaurant
        kitchenPhoto:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 41ba4056-f014-427a-8060-cad0910532eb
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: f718a131-8281-4c1a-9140-d14e250ebb88
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16.899014Z'
        leaseAgreement:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 11b4c1c1-a72b-4e91-9b55-97a590f81d5a
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 9e39930a-29e3-4d88-980c-9b68455396ae
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16.899014Z'
        logo:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 6da9bfe6-47b4-4870-86a8-9d7da92f815e
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 07088997-3834-4e5e-9792-b910239a7418
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16.899014Z'
        ownerLetter:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 6c36c9b1-0064-4f74-9577-d00f3352f8c2
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 6d36a5d6-170b-4ffe-8642-28d38fe52c44
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16.899014Z'
        proofOfAddress:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16.899014Z'
        proofOfOwnership:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 6da9bfe6-47b4-4870-86a8-9d7da92f815e
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 07088997-3834-4e5e-9792-b910239a7418
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16.899014Z'
        signupForm:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 52863240-17e0-40d1-6667-aaa97e03bdbc
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 52777240-17e0-40d1-a2a7-aaa97e03bdba
              contentType: image/png
              dateAdded: '2022-10-17T09:38:16.899014Z'
        streetTradingLicense:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16.899014Z'
        contract:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not visible
          files:
            - documentKey: 6da9bfe6-47b4-4870-86a8-9d7da92f815e
              contentType: image/png
              dateAdded: '2026-01-01T09:37:16.899014Z'
            - documentKey: 07088997-3834-4e5e-9792-b910239a7418
              contentType: image/png
              dateAdded: '2026-01-01T09:38:16.899014Z'
        register:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
              contentType: image/png
              dateAdded: '2026-01-01T09:37:16.899014Z'
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
              contentType: image/png
              dateAdded: '2026-01-01T09:38:16.899014Z'
        ownershipDistribution:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 6da9bfe6-47b4-4870-86a8-9d7da92f815e
              contentType: image/png
              dateAdded: '2026-01-01T09:37:16.899014Z'
            - documentKey: 07088997-3834-4e5e-9792-b910239a7418
              contentType: image/png
              dateAdded: '2026-01-01T09:38:16.899014Z'
        ownershipRegistration:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
              contentType: image/png
              dateAdded: '2026-01-01T09:37:16.899014Z'
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
              contentType: image/png
              dateAdded: '2026-01-01T09:38:16.899014Z'
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupCatalog:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: The catalog
      minProperties: 1
      properties:
        primaryCuisine:
          deprecated: true
          description: Partner's primary cuisine
          type: string
          maxLength: 255
        secondaryCuisine:
          deprecated: true
          description: Partner's secondary cuisine
          type: string
          maxLength: 255
        cuisines:
          description: List of partner's cuisines
          type: array
          minLength: 1
          items:
            type: string
            maxLength: 255
        url:
          description: URL for the partner's catalog
          type: string
          maxLength: 2048
        productCatalog:
          description: Catalog showing products that business wants to sell using our platform
          $ref: '#/components/schemas/PartnersignupDocument'
      example:
        cuisines:
          - Pizza
          - Burgers
        url: https://menu.url.com
        productCatalog:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 5f08903a-bfcb-475a-af8c-92e68d6da9cb
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16.899014Z'
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupCreateShellRequestStatus:
      type: object
      description: Information about create partner shell request
      properties:
        status:
          description: Status of create partner shell request
          type: string
          enum:
            - pending
            - completed
            - failed
        partnerId:
          description: The Id of the Partner created
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              description:
                description: Specific details about the error that may assist you in resolving the issue
                type: string
              error:
                description: A small title for the error that gives code or name that identifies the problem type.
                type: string
      example:
        status: failed
        partnerId: '12345678'
        errors:
          - description: User Name should be at least 3 characters long.
            error: ValidationError
          - description: The email address provided is already in use.
            error: DataError
    PartnersignupCreateSignupRequest:
      required:
        - brandName
        - givenName
        - familyName
        - phoneNumber
        - emailAddress
        - premisesAddress
      type: object
      description: Information used to create a Partner shell creation request.
      properties:
        brandName:
          description: The name of partner's business.
          type: string
          maxLength: 512
        givenName:
          description: Applicant's first name
          type: string
          maxLength: 255
        familyName:
          description: Applicant's last name
          type: string
          maxLength: 255
        phoneNumber:
          description: Applicant's phone number in E.164 format.
          type: string
          maxLength: 20
        emailAddress:
          description: Applicant's email address
          type: string
          maxLength: 320
        premisesAddress:
          $ref: '#/components/schemas/PartnersignupAddress'
        primaryCuisine:
          description: Partner's primary cuisine
          type: string
          maxLength: 255
          deprecated: true
        secondaryCuisine:
          description: Partner's secondary cuisine
          type: string
          maxLength: 255
          deprecated: true
        cuisines:
          description: List of partner's cuisines
          type: array
          minItems: 1
          items:
            type: string
            maxLength: 255
      example:
        brandName: ACME Ltd.
        givenName: Jane
        familyName: Doe
        phoneNumber: '+447700900999'
        emailAddress: jane.doe@example.com
        premisesAddress:
          street:
            - Unit 1
            - High Road
          city: London
          postcode: AR51 1ET
          state: London
          country: United Kingdom
          geolocation:
            coordinates:
              - 51.501285
              - -0.142442
            type: point
        primaryCuisine: Pizza
        secondaryCuisine: Burgers
    PartnersignupDocument:
      description: Document associated with a sign-up requirement
      type: object
      properties:
        status:
          description: Status of this requirement.
          type: string
          $ref: '#/components/schemas/PartnersignupRequirementStatus'
        canOverrideOptional:
          description: Represents if the document can be marked as overridden.
          type: boolean
        optional:
          description: Represents if the document is optional or not for a sign up to go through.
          type: boolean
        rejectionReasons:
          description: Reason(s) provided for the rejection of this requirement
          type: array
          items:
            $ref: '#/components/schemas/PartnersignupRejectionReason'
        files:
          description: List of documents associated with this requirement document
          type: array
          items:
            $ref: '#/components/schemas/PartnersignupFile'
      example:
        status: initialReviewRejected
        canOverrideOptional: true
        optional: true
        rejectionReasons:
          - type: other
            comment: This URL does not show your catalogue
        files:
          - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
            contentType: image/png
            dateAdded: '2022-11-17T09:37:16.899Z'
          - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbd
            contentType: image/jpeg
            dateAdded: '2022-11-17T09:40:00.000Z'
    PartnersignupDocumentType:
      description: The type of the document
      enum:
        - catalog
        - photoId
        - proofOfAddress
        - fsaCertificate
        - logo
        - proofOfOwnership
        - shopFrontPhoto
        - leaseAgreement
        - ownerLetter
        - signupForm
        - streetTradingLicense
        - kitchenPhoto
        - hygieneRegistration
        - alcoholLicense
      type: string
    PartnersignupDuns:
      description: The D-U-N-S® Number provides unique identification of a subject organization, in accordance with the Data Universal Numbering System.
      type: string
      pattern: ^\d{9}$
    PartnersignupFile:
      description: File associated with a sign-up requirement
      type: object
      required:
        - documentKey
        - contentType
      properties:
        documentKey:
          description: A unique key to document resource that can be used to retrieve document contents
          type: string
          maxLength: 36
        contentType:
          description: MIME type of document
          type: string
          maxLength: 128
        dateAdded:
          description: When the document was added [yyyy-MM-ddTHH:mm:ssZ]
          format: date-time
          type: string
      example:
        documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
        contentType: image/png
        dateAdded: '2022-11-17T09:37:16.899014Z'
    PartnersignupFulfillment:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: Information about the partner's delivery preferences
      required:
        - types
      properties:
        types:
          $ref: '#/components/schemas/PartnersignupFulfillmentTypes'
        numberOfDeliveryDriversAtPeak:
          description: Maximum number of delivery drivers
          type: number
          format: integer
          minimum: 0
          nullable: true
      example:
        types:
          - jetDelivery
        numberOfDeliveryDriversAtPeak: 2
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupGeneratePresignedFileRequest:
      description: Request to create a presigned file link for uploading documents
      type: object
      required:
        - contentType
      properties:
        contentType:
          description: MIME type of document being uploaded - the presigned url will then be restricted to this content type
          type: string
          maxLength: 128
      example:
        contentType: image/png
    PartnersignupHygiene:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: Describes the hygiene requirements for the sign up. Partner can have only one rating from given agency.
      minProperties: 1
      properties:
        ratings:
          description: List of ratings for the partner
          type: array
          minProperties: 1
          items:
            $ref: '#/components/schemas/PartnersignupHygieneDetail'
      example:
        ratings:
          - agency: fsa
            rating: registrationSubmitted
            url: https://fsa.co.uk/business/1
            hygieneRegistration:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 5f08903a-bfcb-475a-af8c-92e68d6da9c9
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
          - agency: fss
            rating: registrationSubmitted
            url: https://fss.co.uk/business/1
            hygieneRegistration:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 5f08903a-bfcb-475a-af8c-92e68d6da9cb
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupHygieneDetail:
      description: Describes the hygiene requirement for the sign up. Agencies are specific to a country and region. Every agency has a set of values that can be used for rating.
      required:
        - agency
        - rating
      type: object
      minProperties: 1
      properties:
        agency:
          description: Agency that provides the hygiene rating. Agencies are specific to a country or region.
          type: string
          maxLength: 20
        rating:
          description: Hygiene rating for the sign-up application. The allowed list of values depends on the agency.
          type: string
          maxLength: 50
        url:
          description: Partner's hygiene rating link. It should link to official website of the hygiene agency that clearly shows the partner business' name and hygiene rating.
          type: string
          maxLength: 2048
        hygieneRegistration:
          description: Proof of application for registration with hygiene agency. It is required in case the business is in process of being certified by the agency.
          $ref: '#/components/schemas/PartnersignupDocument'
      example:
        agency: fsa
        rating: registrationSubmitted
        url: https://fsa.co.uk/business/1
        hygieneRegistration:
          status: initialReviewRejected
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 5f08903a-bfcb-475a-af8c-92e68d6da9c9
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16.899014Z'
    PartnersignupLeadInternal:
      type: object
      description: Represents a lead with associated details.
      required:
        - applicant
        - businessDetails
      properties:
        id:
          type: string
          description: Unique identifier for the lead.
        alcohol:
          $ref: '#/components/schemas/PartnersignupAlcohol'
        applicant:
          $ref: '#/components/schemas/PartnersignupApplicant'
        applicationMetadata:
          $ref: '#/components/schemas/PartnersignupApplicationMetadata'
        bankingDetails:
          $ref: '#/components/schemas/PartnersignupBankingDetails'
        businessDetails:
          $ref: '#/components/schemas/PartnersignupBusinessDetails'
        catalog:
          $ref: '#/components/schemas/PartnersignupCatalog'
        fulfillment:
          $ref: '#/components/schemas/PartnersignupFulfillment'
        hygiene:
          $ref: '#/components/schemas/PartnersignupHygiene'
        welcomePack:
          $ref: '#/components/schemas/PartnersignupWelcomePack'
        status:
          $ref: '#/components/schemas/PartnersignupApplicationStatus'
      example:
        id: Dfac6ec6857a6445ba16c1b31770bf9d1
        alcohol:
          servesAlcohol: false
        applicant:
          businessTitle: manager
          givenName: Jane
          familyName: Doe
          phoneNumber: '+4479232123123'
          emailAddress: janeDoe@example.com
        applicationMetadata:
          applicationType: nonStandard
          occupancyType: multipleBusinessMultipleOwnership
          premisesType: van
        bankingDetails:
          accountNumber: '1234567890'
          bankName: HSBC
          accountHolderName: Mr John Doe
          bankCode: '123456'
        businessDetails:
          brandName: A Company that Makes Everything
          businessLegalName: ACME Inc.
          businessPhoneNumber: '+442300000000'
          businessEmailAddress: business@example.com
          businessIdentifier: '909242522'
          businessIdentifierType: abn
          premisesAddress:
            street:
              - Unit 1
              - High Road
            city: London
            postcode: AR51 1ET
            state: London
            country: United Kingdom
            geolocation:
              coordinates:
                - 51.501285
                - -0.142442
              type: point
          premisesLocationId: ChIJr370123kfkgABCXhwjZymy0
          businessType: restaurant
        catalog:
          cuisines:
            - Pizza
            - Burgers
          url: https://menu.url.com
        fulfillment:
          types:
            - jetDelivery
          numberOfDeliveryDriversAtPeak: 2
        hygiene:
          ratings:
            - agency: fsa
              rating: registrationSubmitted
              url: https://fsa.co.uk/business/1
        welcomePack:
          addressee: A Person who will receive the welcome pack
          deliveryAddress:
            street:
              - Unit 1
              - High Road
            city: London
            postcode: AR51 1ET
            state: London
            country: United Kingdom
            geolocation:
              coordinates:
                - 51.501285
                - -0.142442
              type: point
        status: leadCreated
    PartnersignupLeadList:
      type: array
      items:
        $ref: '#/components/schemas/PartnersignupLeadInternal'
      description: 'Response representing leads items (Note: The number of leads returned is limited to 10)'
      example:
        - id: Dfac6ec6857a6445ba16c1b31770bf9d1
          alcohol:
            servesAlcohol: true
            alcoholLicense:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The image belongs to some other business premises
              files:
                - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
          applicant:
            businessTitle: manager
            givenName: Jane
            familyName: Doe
            phoneNumber: '+4479232123123'
            emailAddress: janeDoe@example.com
            photoId:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: a2e806b7-baf0-4b85-8e1a-a6170325ddcb
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 02229995-ad45-495e-8938-34a1e25799c8
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
          applicationMetadata:
            applicationType: nonStandard
            occupancyType: multipleBusinessMultipleOwnership
            premisesType: van
          bankingDetails:
            accountNumber: '1234567890'
            bankName: HSBC
            accountHolderName: Mr John Doe
            bankCode: '123456'
          businessDetails:
            brandName: A Company that Makes Everything
            businessLegalName: ACME Inc.
            businessPhoneNumber: '+442300000000'
            businessEmailAddress: business@example.com
            businessIdentifier: '909242522'
            businessIdentifierType: abn
            premisesAddress:
              street:
                - Unit 1
                - High Road
              city: London
              postcode: AR51 1ET
              state: London
              country: United Kingdom
              geolocation:
                coordinates:
                  - 51.501285
                  - -0.142442
                type: point
            premisesLocationId: ChIJr370123kfkgABCXhwjZymy0
            businessType: restaurant
            kitchenPhoto:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 41ba4056-f014-427a-8060-cad0910532eb
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: f718a131-8281-4c1a-9140-d14e250ebb88
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
            leaseAgreement:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 11b4c1c1-a72b-4e91-9b55-97a590f81d5a
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 9e39930a-29e3-4d88-980c-9b68455396ae
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
            logo:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 6da9bfe6-47b4-4870-86a8-9d7da92f815e
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 07088997-3834-4e5e-9792-b910239a7418
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
            ownerLetter:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 6c36c9b1-0064-4f74-9577-d00f3352f8c2
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 6d36a5d6-170b-4ffe-8642-28d38fe52c44
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
            proofOfAddress:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
            proofOfOwnership:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 6da9bfe6-47b4-4870-86a8-9d7da92f815e
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 07088997-3834-4e5e-9792-b910239a7418
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
            signupForm:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 5edc8fa7-982a-40cb-9b11-08ee7498833e
                  contentType: image/png
                  dateAdded: '2022-11-18T09:37:16.899014Z'
                - documentKey: 21f87f18-6c35-4413-bb11-a3c72b7cfd1c
                  contentType: image/png
                  dateAdded: '2022-11-18T09:38:16.899014Z'
            shopFrontPhoto:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 5edc8fa7-982a-40cb-9b50-08ee7498833e
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 21f87f18-6c35-4413-bb20-a3c72b7cfd1c
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
            streetTradingLicense:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
          catalog:
            primaryCuisine: Pizza
            secondaryCuisine: Burgers
            url: https://menu.url.com
            productCatalog:
              status: initialReviewRejected
              rejectionReasons:
                - type: other
                  comment: The document is not clear
              files:
                - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
                  contentType: image/png
                  dateAdded: '2022-11-17T09:37:16.899014Z'
                - documentKey: 5f08903a-bfcb-475a-af8c-92e68d6da9cb
                  contentType: image/png
                  dateAdded: '2022-11-17T09:38:16.899014Z'
          fulfillment:
            types:
              - jetDelivery
            numberOfDeliveryDriversAtPeak: 2
          hygiene:
            ratings:
              - agency: fsa
                rating: registrationSubmitted
                url: https://fsa.co.uk/business/1
                hygieneRegistration:
                  status: initialReviewRejected
                  rejectionReasons:
                    - type: other
                      comment: The document is not clear
                  files:
                    - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdbc
                      contentType: image/png
                      dateAdded: '2022-11-17T09:37:16.899014Z'
                    - documentKey: 5f08903a-bfcb-475a-af8c-92e68d6da9c9
                      contentType: image/png
                      dateAdded: '2022-11-17T09:38:16.899014Z'
              - agency: fss
                rating: registrationSubmitted
                url: https://fss.co.uk/business/1
                hygieneRegistration:
                  status: initialReviewRejected
                  rejectionReasons:
                    - type: other
                      comment: The document is not clear
                  files:
                    - documentKey: 52863240-17e0-40d1-a2a7-aaa97e03bdba
                      contentType: image/png
                      dateAdded: '2022-11-17T09:37:16.899014Z'
                    - documentKey: 5f08903a-bfcb-475a-af8c-92e68d6da9cb
                      contentType: image/png
                      dateAdded: '2022-11-17T09:38:16.899014Z'
          welcomePack:
            addressee: A Person who will receive the welcome pack
            deliveryAddress:
              street:
                - Unit 1
                - High Road
              city: London
              postcode: AR51 1ET
              state: London
              country: United Kingdom
              geolocation:
                coordinates:
                  - 51.501285
                  - -0.142442
                type: point
          isPhoneLead: false
          lastModified: '2022-11-17T09:38:16.899014Z'
          isTestApplication: false
          marketingConsent:
            email: false
          duns: '123456789'
    PartnersignupMarketingConsent:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: Marketing consent preferences for a new partner
      properties:
        email:
          description: Whether the partner consents to marketing by email
          type: boolean
          default: false
        sms:
          description: Whether the partner consents to marketing by SMS
          type: boolean
          default: false
        miniSite:
          description: Whether the partner consents to marketing via mini site
          type: boolean
          default: false
      example:
        email: true
        sms: false
        miniSite: true
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupOperationalDetails:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: Operational details that need to be captured for activation, but should not prevent contract signing.
      properties:
        orderingDevice:
          $ref: '#/components/schemas/PartnersignupOrderingDevice'
        desiredActivationTime:
          description: The desired activation time that user suggests. It should be any weekdays with the hour and rounded minutes. But it's not guaranteed to be the real activation time.
          type: string
          format: date-time
      example:
        orderingDevice:
          deviceType: jetDevice
        desiredActivationTime: '2023-11-14T09:00:00Z'
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupOrderingDevice:
      type: object
      description: Information about the ordering device used by the partner
      properties:
        deviceType:
          description: The type of ordering device
          type: string
          enum:
            - unknown
            - androidDevice
            - jetDevice
            - eposDevice
      example:
        deviceType: jetDevice
    PartnersignupPremises:
      type: object
      description: The details about the premises
      properties:
        address:
          $ref: '#/components/schemas/PartnersignupAddress'
        locationId:
          description: Premises Location Id e.g. a GooglePlacesID.
          type: string
          maxLength: 40
        shopFrontPhoto:
          description: Picture of the shop front
          $ref: '#/components/schemas/PartnersignupDocument'
      example:
        address:
          street:
            - Unit 1
            - High Road
          city: London
          postcode: AR51 1ET
          state: London
          country: United Kingdom
          geolocation:
            coordinates:
              - 51.501285
              - -0.142442
            type: point
        locationId: ChIJr370123kfkgABCXhwjZymy0
        shopFrontPhoto:
          status: initialReviewRejected
          canOverrideOptional: true
          optional: true
          rejectionReasons:
            - type: other
              comment: The document is not clear
          files:
            - documentKey: 5edc8fa7-982a-40cb-9b50-08ee7498833e
              contentType: image/png
              dateAdded: '2022-11-17T09:37:16.899014Z'
            - documentKey: 21f87f18-6c35-4413-bb20-a3c72b7cfd1c
              contentType: image/png
              dateAdded: '2022-11-17T09:38:16.899014Z'
    PartnersignupRejectionReason:
      description: Rejection details for a document
      required:
        - type
      type: object
      properties:
        type:
          description: Type of rejection
          type: string
          enum:
            - other
            - incorrectDocument
            - notClearEnough
            - outdated
            - noOwnersName
            - noOwnersPhoto
            - noBusinessAddress
            - noBusinessName
            - missingPages
            - handwritten
            - missingInformation
            - noAllergenKey
            - logoNameDoesNotMatch
            - copyrightInfringement
            - photoFromInternet
            - sameView
            - samePhotos
            - newRequirement
            - uniqueReferenceNumberMissing
            - ownerNameDoesNotMatch
            - businessAddressDoesNotMatch
            - licenseNumberMissing
            - overThreeMonthsOld
            - deliveryZonesAreasIncomplete
            - descriptionMismatch
            - incompleteMissingSpecificMenuItem
            - incorrectMissingSignatures
            - menuPricingMismatch
            - missingCriticalIngredients
            - openingHoursIncomplete
            - regulatoryRequirementNotMet
        comment:
          description: Details of rejection reason. Only valid if the reject reason is other.
          type: string
          maxLength: 512
      example:
        type: other
        comment: The image belongs to some other business premises
    PartnersignupRequirementStatus:
      description: The approval status of a requirement
      enum:
        - notAvailable
        - received
        - readyForInitialReview
        - initialToBeRejected
        - initialNoIssuesFound
        - initialReviewRejected
        - readyForFinalReview
        - finalReviewNoIssuesFound
        - finalReviewToBeRejected
        - finalReviewRejected
        - taskToBeStarted
        - taskStarted
        - taskCompleted
        - approved
        - newRequirement
      type: string
    PartnersignupRequirementType:
      description: The type of requirement
      enum:
        - alcohol
        - applicant
        - applicationMetadata
        - bankingDetails
        - businessDetails
        - fulfillment
        - hygiene
        - catalog
      type: string
    PartnersignupSignup:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: Represent the signup.
      properties:
        signupId:
          description: The id of the signup.
          type: string
        partnerId:
          description: The partner id of the signup.
          type: string
        brandName:
          description: The name of partner's business.
          type: string
          maxLength: 512
        status:
          $ref: '#/components/schemas/PartnersignupApplicationStatus'
        premisesAddress:
          $ref: '#/components/schemas/PartnersignupAddress'
        businessType:
          $ref: '#/components/schemas/PartnersignupBusinessTypes'
        activationStatus:
          $ref: '#/components/schemas/PartnersignupActivationStatusEnum'
      example:
        signupId: '2026174131'
        partnerId: '43243241'
        brandName: ACME Ltd.
        status: openApplication
        premisesAddress:
          street:
            - Unit 1
            - High Road
          city: London
          postcode: AR51 1ET
          state: London
          country: United Kingdom
        businessType: restaurant
        activationStatus: readyForActivation
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2020-01-01T09:30:16.89Z'
    PartnersignupSignupList:
      properties:
        signups:
          description: List of sign-ups
          type: array
          items:
            $ref: '#/components/schemas/PartnersignupSignup'
        paging:
          description: Consists of pagination information
          type: object
          properties:
            count:
              description: The total number of results
              format: int64
              type: integer
      description: Response representing sign up items page
      example:
        signups:
          - brandName: ACME Ltd.
            signupId: '2096749334'
            partnerId: '43243241'
            status: openApplication
            activationStatus: readyForActivation
            businessType: restaurant
            premisesAddress:
              street:
                - Unit 1
                - High Road
              city: London
              postcode: AR51 1ET
              state: London
              country: United Kingdom
            version: 8
            lastUpdatedBy: Partner
            lastUpdated: '2026-02-01T09:30:16.89Z'
          - brandName: ACME Foods
            signupId: '4296649655'
            partnerId: '43243243'
            status: openApplication
            activationStatus: readyForActivation
            businessType: restaurant
            premisesAddress:
              street:
                - Unit 2
                - High Road
              city: London
              postcode: AR51 1ET
              state: London
              country: United Kingdom
            version: 43
            lastUpdatedBy: Partner
            lastUpdated: '2026-01-01T09:30:16.89Z'
        paging:
          count: 12
      type: object
    PartnersignupSignupListWithTenant:
      properties:
        signups:
          description: List of sign-ups with tenant
          type: array
          items:
            $ref: '#/components/schemas/PartnersignupSignupWithTenant'
        paging:
          description: Consists of pagination information
          type: object
          properties:
            count:
              description: The total number of results
              format: int64
              type: integer
      description: Response representing sign up items page
      example:
        signups:
          - brandName: ACME Ltd.
            signupId: '2096749334'
            partnerId: '43243241'
            tenant: de
            status: openApplication
            activationStatus: readyForActivation
            businessType: restaurant
            premisesAddress:
              street:
                - Unit 1
                - High Road
              city: London
              postcode: AR51 1ET
              state: London
              country: United Kingdom
            version: 8
            lastUpdatedBy: Partner
            lastUpdated: '2026-02-01T09:30:16.89Z'
          - brandName: ACME Foods
            signupId: '4296649655'
            partnerId: '43243243'
            tenant: nl
            status: openApplication
            activationStatus: readyForActivation
            businessType: restaurant
            premisesAddress:
              street:
                - Unit 2
                - High Road
              city: London
              postcode: AR51 1ET
              state: London
              country: United Kingdom
            version: 43
            lastUpdatedBy: Partner
            lastUpdated: '2026-01-01T09:30:16.89Z'
        paging:
          count: 12
      type: object
    PartnersignupSignupSortType:
      description: Type of sorting to apply for pagination. Default is last updated.
      enum:
        - lastUpdated
        - name
        - businessType
      type: string
      default: lastUpdated
    PartnersignupSignupWithTenant:
      allOf:
        - $ref: '#/components/schemas/PartnersignupSignup'
      type: object
      description: Represent the signup.
      properties:
        tenant:
          description: The tenant which the signup belongs.
          type: string
      example:
        signupId: '2026174131'
        partnerId: '43243241'
        tenant: uk
        brandName: ACME Ltd.
        status: openApplication
        premisesAddress:
          street:
            - Unit 1
            - High Road
          city: London
          postcode: AR51 1ET
          state: London
          country: United Kingdom
        businessType: restaurant
        activationStatus: readyForActivation
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2020-01-01T09:30:16.89Z'
    PartnersignupStatus:
      required:
        - status
      type: object
      properties:
        status:
          $ref: '#/components/schemas/PartnersignupApplicationStatus'
      example:
        status: readyForInitialReview
    PartnersignupSummary:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: Represent the summary for the status of a given signup.
      required:
        - brandName
        - status
        - nextStatus
      properties:
        brandName:
          description: The name of partner's business.
          type: string
          maxLength: 512
        status:
          $ref: '#/components/schemas/PartnersignupApplicationStatus'
        nextStatus:
          $ref: '#/components/schemas/PartnersignupApplicationStatus'
        businessType:
          $ref: '#/components/schemas/PartnersignupBusinessTypes'
        partnerId:
          description: The partner id created for this sign up.
          type: string
        globalPartnerId:
          description: The global partner id associated with this sign up.
          type: string
        summaryItems:
          description: Breakdown of requirements type and status
          type: array
          maxItems: 40
          minItems: 1
          items:
            type: object
            properties:
              type:
                $ref: '#/components/schemas/PartnersignupSummaryItemType'
              status:
                $ref: '#/components/schemas/PartnersignupSummaryItemStatus'
              rejectionReasons:
                $ref: '#/components/schemas/PartnersignupRejectionReason'
              canOverrideOptional:
                description: Represents if the document requirement can be overridden.
                type: boolean
              optional:
                description: Represents if the document is optional or not.
                type: boolean
      example:
        brandName: ACME Ltd.
        status: openApplication
        nextStatus: readyForInitialReview
        businessType: restaurant
        partnerId: '123456'
        globalPartnerId: global-123456
        summaryItems:
          - type: emailAddress
            status: completed
          - type: businessPhoneNumber
            status: incomplete
          - type: hygieneRegistration
            status: pendingApproval
            canOverrideOptional: false
            optional: true
            rejectionReasons:
              type: other
              comment: The image belongs to some other business premises
          - type: shopFrontPhoto
            status: rejected
            canOverrideOptional: true
            optional: true
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupSummaryItemStatus:
      description: The status of summary item.
      enum:
        - incomplete
        - completed
        - pendingApproval
        - rejected
        - newRequirement
        - taskNotStarted
        - taskInProgress
        - taskSucceeded
        - taskFailed
      type: string
    PartnersignupSummaryItemType:
      description: The type of summary item.
      enum:
        - businessTitle
        - givenName
        - familyName
        - emailAddress
        - phoneNumber
        - photoID
        - street
        - city
        - province
        - postcode
        - country
        - state
        - alcoholLicense
        - applicationType
        - occupancyType
        - premisesType
        - businessPhoneNumber
        - businessIdentifier
        - businessIdentifierType
        - proofOfAddress
        - kitchenPhoto
        - leaseAgreement
        - shopFrontPhoto
        - signupForm
        - streetTradingLicense
        - ownerLetter
        - proofOfOwnership
        - accountHolderName
        - accountNumber
        - bankCode
        - bankName
        - iban
        - fulfillmentType
        - hygieneAgency
        - hygieneRating
        - hygieneRegistration
        - catalog
        - logo
      type: string
    PartnersignupVersionData:
      type: object
      properties:
        version:
          description: Version of the resource
          type: number
        lastUpdatedBy:
          description: Name of actor who last updated this resource. An actor can be Partner, Sales or OPs Agent, Salesforce or PSU System itself
          type: string
        lastUpdated:
          description: Timestamp when the resource was last updated [YYYY-MM-DDThh:mm:ssZ]
          type: string
          format: date-time
      example:
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupWelcomePack:
      allOf:
        - $ref: '#/components/schemas/PartnersignupVersionData'
      type: object
      description: Information required to send out a welcome pack
      properties:
        addressee:
          description: The name of the addressee who will receive the welcome pack.
          type: string
          maxLength: 512
        deliveryAddress:
          $ref: '#/components/schemas/PartnersignupAddress'
      example:
        addressee: A Person who will receive the welcome pack
        deliveryAddress:
          street:
            - Unit 1
            - High Road
          city: London
          postcode: AR51 1ET
          state: London
          country: United Kingdom
          geolocation:
            coordinates:
              - 51.501285
              - -0.142442
            type: point
        version: 43
        lastUpdatedBy: Partner
        lastUpdated: '2022-11-17T09:38:16Z'
    PartnersignupBusinessTypes:
      description: The type of the business
      enum:
        - restaurant
        - grocery
      type: string
    PartnersignupFulfillmentTypes:
      description: Partner's delivery types
      type: array
      items:
        type: string
        enum:
          - collection
          - jetDelivery
          - selfDelivery
    PartnersignupLead:
      required:
        - applicant
        - businessDetails
      type: object
      description: Information used to create a Partner lead
      properties:
        applicant:
          $ref: '#/components/schemas/PartnersignupLeadApplicant'
        fulfillment:
          $ref: '#/components/schemas/PartnersignupFulfillment'
        marketingConsent:
          description: Marketing consent preferences
          $ref: '#/components/schemas/PartnersignupMarketingConsent'
        duns:
          description: The D-U-N-S® Number provides unique identification of a subject organization, in accordance with the Data Universal Numbering System.
          type: string
          pattern: ^\d{9}$
        businessDetails:
          $ref: '#/components/schemas/PartnersignupLeadBusinessDetails'
        catalog:
          $ref: '#/components/schemas/PartnersignupLeadCatalog'
        applicationMetadata:
          $ref: '#/components/schemas/PartnersignupApplicationMetadata'
        bankingDetails:
          $ref: '#/components/schemas/PartnersignupBankingDetails'
        hygiene:
          $ref: '#/components/schemas/PartnersignupLeadHygiene'
        welcomePack:
          $ref: '#/components/schemas/PartnersignupWelcomePack'
      example:
        applicant:
          businessTitle: manager
          givenName: Jane
          familyName: Doe
          phoneNumber: '+4479232123123'
          emailAddress: janeDoe@example.com
        fulfillment:
          types:
            - jetDelivery
          numberOfDeliveryDriversAtPeak: 2
        marketingConsent:
          email: false
          sms: false
        duns: '123456789'
        businessDetails:
          brandName: ACME Ltd.
          businessType: restaurant
          businessLegalName: ACME Inc.
          businessPhoneNumber: '+442300000000'
          businessEmailAddress: business@example.com
          businessIdentifier: '909242522'
          businessIdentifierType: abn
          premises:
            address:
              street:
                - Unit 1
                - High Road
              city: London
              postcode: AR51 1ET
              state: London
              country: United Kingdom
              geolocation:
                coordinates:
                  - 51.501285
                  - -0.142442
                type: point
            locationId: ChIJr370123kfkgABCXhwjZymy0
        catalog:
          cuisines:
            - Pizza
            - Burgers
          url: https://menu.url.com
        applicationMetadata:
          applicationType: nonStandard
          occupancyType: multipleBusinessMultipleOwnership
          premisesType: van
          approvalFlow: full
        bankingDetails:
          accountNumber: '1234567890'
          bankName: HSBC
          accountHolderName: Mr John Doe
          bankCode: '123456'
        hygiene:
          ratings:
            - agency: fsa
              rating: registrationSubmitted
              url: https://fsa.co.uk/business/1
            - agency: fss
              rating: registrationSubmitted
              url: https://fss.co.uk/business/1
        welcomePack:
          addressee: A Person who will receive the welcome pack
          deliveryAddress:
            street:
              - Unit 1
              - High Road
            city: London
            postcode: AR51 1ET
            state: London
            country: United Kingdom
            geolocation:
              coordinates:
                - 51.501285
                - -0.142442
              type: point
    PartnersignupLeadApplicant:
      type: object
      description: The applicant requirements for a lead
      required:
        - givenName
        - familyName
        - phoneNumber
        - emailAddress
      properties:
        businessTitle:
          description: Applicant's business title
          type: string
          enum:
            - owner
            - manager
            - otherAuthorisedSignatory
        givenName:
          description: Applicant's first name
          type: string
          maxLength: 255
        familyName:
          description: Applicant's last name
          type: string
          maxLength: 255
        phoneNumber:
          description: Applicant's phone number in E.164 format.
          type: string
          maxLength: 20
        emailAddress:
          description: Applicant's email address
          type: string
          maxLength: 320
      example:
        businessTitle: manager
        givenName: Jane
        familyName: Doe
        phoneNumber: '+4479232123123'
        emailAddress: janeDoe@example.com
    PartnersignupLeadBusinessDetails:
      required:
        - brandName
        - premises
      type: object
      description: The business details for a lead
      properties:
        brandName:
          description: The name of partner's business.
          type: string
          maxLength: 512
        businessType:
          $ref: '#/components/schemas/PartnersignupBusinessTypes'
        businessLegalName:
          description: Legal name of business that is registered with Companies House or similar authority
          type: string
          maxLength: 512
        businessPhoneNumber:
          description: Business phone number in E.164 format.
          type: string
          maxLength: 20
        businessEmailAddress:
          description: Business email address.
          type: string
          maxLength: 254
        businessIdentifier:
          description: Business unique identifier.
          type: string
          maxLength: 20
        businessIdentifierType:
          description: Business id type. For example Australian business number.
          type: string
          enum:
            - abn
        premises:
          $ref: '#/components/schemas/PartnersignupLeadPremises'
      example:
        brandName: A Company that Makes Everything
        businessType: restaurant
        businessLegalName: ACME Inc.
        businessPhoneNumber: '+442300000000'
        businessEmailAddress: business@example.com
        businessIdentifier: '909242522'
        businessIdentifierType: abn
        premises:
          address:
            street:
              - Unit 1
              - High Road
            city: London
            postcode: AR51 1ET
            state: London
            country: United Kingdom
            geolocation:
              coordinates:
                - 51.501285
                - -0.142442
              type: point
          locationId: ChIJr370123kfkgABCXhwjZymy0
    PartnersignupLeadCatalog:
      type: object
      description: The catalog for a lead
      minProperties: 1
      properties:
        primaryCuisine:
          description: Partner's primary cuisine
          type: string
          maxLength: 255
          deprecated: true
        secondaryCuisine:
          description: Partner's secondary cuisine
          type: string
          maxLength: 255
          deprecated: true
        url:
          description: URL for the partner's catalog
          type: string
          maxLength: 2048
        cuisines:
          description: List of partner's cuisines
          type: array
          minLength: 1
          items:
            type: string
            maxLength: 255
      example:
        cuisines:
          - Pizza
          - Burgers
        url: https://menu.url.com
    PartnersignupLeadHygiene:
      type: object
      description: Describes the hygiene requirements for the lead. Partner can have only one rating from given agency.
      minProperties: 1
      properties:
        ratings:
          description: List of ratings for the partner
          type: array
          minProperties: 1
          items:
            $ref: '#/components/schemas/PartnersignupLeadHygieneDetail'
      example:
        ratings:
          - agency: fsa
            rating: registrationSubmitted
            url: https://fsa.co.uk/business/1
          - agency: fss
            rating: registrationSubmitted
            url: https://fss.co.uk/business/1
    PartnersignupLeadHygieneDetail:
      description: Describes the hygiene requirement for the lead. Agencies are specific to a country and region. Every agency has a set of values that can be used for rating.
      required:
        - agency
        - rating
      type: object
      minProperties: 1
      properties:
        agency:
          description: Agency that provides the hygiene rating. Agencies are specific to a country or region.
          type: string
          maxLength: 20
        rating:
          description: Hygiene rating for the sign-up application. The allowed list of values depends on the agency.
          type: string
          maxLength: 50
        url:
          description: Partner's hygiene rating link. It should link to official website of the hygiene agency that clearly shows the partner business' name and hygiene rating.
          type: string
          maxLength: 2048
      example:
        agency: fsa
        rating: registrationSubmitted
        url: https://fsa.co.uk/business/1
    PartnersignupLeadPremises:
      required:
        - address
      type: object
      description: The details about the premises for a lead
      properties:
        address:
          $ref: '#/components/schemas/PartnersignupAddress'
        locationId:
          description: Premises Location Id e.g. a GooglePlacesID.
          type: string
          maxLength: 40
      example:
        address:
          street:
            - Unit 1
            - High Road
          city: London
          postcode: AR51 1ET
          state: London
          country: United Kingdom
          geolocation:
            coordinates:
              - 51.501285
              - -0.142442
            type: point
        locationId: ChIJr370123kfkgABCXhwjZymy0
    PartnersignupLeadResponse:
      allOf:
        - $ref: '#/components/schemas/PartnersignupLead'
      type: object
      description: Information about a Partner lead
      properties:
        signupId:
          description: The signup id of the lead.
          type: string
      example:
        signupId: '2026174131'
        applicant:
          businessTitle: manager
          givenName: Jane
          familyName: Doe
          phoneNumber: '+4479232123123'
          emailAddress: janeDoe@example.com
        fulfillment:
          types:
            - jetDelivery
          numberOfDeliveryDriversAtPeak: 2
        marketingConsent:
          email: false
          sms: false
        duns: '123456789'
        businessDetails:
          brandName: ACME Ltd.
          businessType: restaurant
          businessLegalName: ACME Inc.
          businessPhoneNumber: '+442300000000'
          businessEmailAddress: business@example.com
          businessIdentifier: '909242522'
          businessIdentifierType: abn
          premises:
            address:
              street:
                - Unit 1
                - High Road
              city: London
              postcode: AR51 1ET
              state: London
              country: United Kingdom
              geolocation:
                coordinates:
                  - 51.501285
                  - -0.142442
                type: point
            locationId: ChIJr370123kfkgABCXhwjZymy0
        catalog:
          cuisines:
            - Pizza
            - Burgers
          url: https://menu.url.com
        applicationMetadata:
          applicationType: nonStandard
          occupancyType: multipleBusinessMultipleOwnership
          premisesType: van
          approvalFlow: full
        bankingDetails:
          accountNumber: '1234567890'
          bankName: HSBC
          accountHolderName: Mr John Doe
          bankCode: '123456'
        hygiene:
          ratings:
            - agency: fsa
              rating: registrationSubmitted
              url: https://fsa.co.uk/business/1
            - agency: fss
              rating: registrationSubmitted
              url: https://fss.co.uk/business/1
        welcomePack:
          addressee: A Person who will receive the welcome pack
          deliveryAddress:
            street:
              - Unit 1
              - High Road
            city: London
            postcode: AR51 1ET
            state: London
            country: United Kingdom
            geolocation:
              coordinates:
                - 51.501285
                - -0.142442
              type: point
    PartnersignupLeadSignup:
      type: object
      properties:
        leadId:
          description: Identifier for lead to use as source for this sign up
          type: string
          maxLength: 512
        userId:
          description: Identifier for user to associate with the sign up
          type: string
          maxLength: 512
      required:
        - userId
        - leadId
      example:
        leadId: Dfac6ec6857a6445ba16c1b31770bf9d1
        userId: john.doe@acme.com
    PartnerusermanagementInvitation:
      type: object
      description: Represents a non-completed invitation sent to a user for a partner
      required:
        - invitationId
        - emailAddress
        - status
      properties:
        invitationId:
          type: string
          description: Unique identifier for the invitation
          example: inv-789
        emailAddress:
          type: string
          description: Email address of the invited user
          example: invited@example.com
        status:
          type: string
          description: Current lifecycle status of the invitation
          example: invited
      example:
        invitationId: inv-789
        emailAddress: invited@example.com
        status: invited
    PartnerusermanagementInvitationListResponse:
      allOf:
        - $ref: '#/components/schemas/PagingPagedAfterOnlyCursorResponse'
        - type: object
          description: Response containing a list of non-completed invitations for a partner
          required:
            - invitations
          properties:
            invitations:
              type: array
              description: List of non-completed invitations associated with the partner
              items:
                $ref: '#/components/schemas/PartnerusermanagementInvitation'
          example:
            invitations:
              - invitationId: inv-789
                emailAddress: invited@example.com
                status: invited
              - invitationId: inv-012
                emailAddress: old@example.com
                status: expired
            paging:
              cursors:
                after: NDMyNzQyODI3OTQw
    PartnerverificationAccessTokenRequest:
      description: Request body for generating a Sumsub access token
      type: object
      required:
        - type
      properties:
        type:
          description: Type of access token to generate
          type: string
          enum:
            - verifyIndividual
            - verifyBusiness
      example:
        type: verifyIndividual
    PartnerverificationAccessTokenResponse:
      description: Response containing the generated Sumsub access token
      type: object
      required:
        - token
        - userId
      properties:
        token:
          description: The generated Sumsub access token
          type: string
        userId:
          description: The user identifier associated with the token
          type: string
      example:
        token: my-generated-access-token
        userId: 1234567890-abc
    PartnerverificationPartnerVerificationUserDetailsResponse:
      description: Response schema for partner verification user details
      type: object
      required:
        - userId
      properties:
        userId:
          description: User identifier
          type: string
        applicantId:
          description: Sumsub applicant identifier
          type: string
          nullable: true
        parentApplicantId:
          description: Parent applicant identifier for linked applicants
          type: string
          nullable: true
        applicantType:
          description: Type of the applicant
          type: string
          enum:
            - individual
            - company
          nullable: true
        dashboardUrl:
          description: URL to the verification dashboard
          type: string
          nullable: true
        currentVerificationStatus:
          description: Current internal (JET) verification status
          type: string
          enum:
            - created
            - pending
            - manualReview
            - approved
            - rejected
            - resubmissionRequested
          nullable: true
        webhookStatus:
          description: Last status received from provider's webhook
          type: string
          enum:
            - init
            - pending
            - prechecked
            - queued
            - completed
            - onHold
            - awaitingService
            - awaitingUser
          nullable: true
        verificationTypeRequested:
          description: Type of verification requested
          type: string
          enum:
            - verifyIndividual
            - verifyBusiness
          nullable: true
      example:
        userId: user-12345
        applicantId: applicant-abc123
        parentApplicantId: applicant-parent-xyz
        applicantType: individual
        dashboardUrl: https://cockpit.sumsub.com/checkus#/applicant/abc123
        currentVerificationStatus: pending
        webhookStatus: pending
        verificationTypeRequested: verifyIndividual
    PartnerverificationVerificationHistoryEvent:
      description: A single verification event in the partner's history timeline.
      type: object
      required:
        - id
        - eventSource
        - actionType
        - eventCategory
        - relatedParty
        - summary
        - metadata
        - createdAt
      properties:
        id:
          description: Unique identifier for this event record.
          type: string
        eventSource:
          description: 'Source of event: internal (agent action) or sumsub (KYC platform).'
          type: string
          enum:
            - internal
            - sumsub
        actionType:
          description: The type of action caused this event log entry
          type: string
        eventCategory:
          description: Grouping used for filtering.
          type: string
          enum:
            - verificationStatus
            - field
            - document
            - relatedParty
            - sumsubLifecycle
            - codeVerification
            - department
        actor:
          description: Name of entity that performed the action. It can contain the user name for human actors or value `System` for Sumsub events.
          type: object
          nullable: true
          properties:
            id:
              description: Agent's user ID.
              type: string
            name:
              description: Agent's display name.
              type: string
        relatedParty:
          description: Which interested party (UBO/owner/legal business) is affected.
          type: object
          nullable: true
          properties:
            type:
              description: 'Type of interested party: owner, legalEntity, etc.'
              type: string
              nullable: true
            id:
              description: ID of the specific interested party.
              type: string
              nullable: true
        section:
          description: 'Page section where it happened: account, risk, owner.'
          type: string
          nullable: true
        fieldName:
          description: Which specific field changed (e.g., iban).
          type: string
          nullable: true
        oldValue:
          description: Value before the change.
          type: string
          nullable: true
        newValue:
          description: Value after the change.
          type: string
          nullable: true
        summary:
          description: Human-readable description shown in the timeline UI.
          type: string
        metadata:
          description: Extra data from Sumsub (e.g., rejectLabels) specific to the event type.
          type: string
        createdAt:
          description: When the event happened (ISO 8601 UTC).
          type: string
          format: date-time
      example:
        id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        eventSource: internal
        actionType: fieldChanged
        eventCategory: field
        actor:
          id: '678'
          name: Jane Smith
        relatedParty: null
        section: account
        fieldName: iban
        oldValue: DE89370400440532013000
        newValue: DE71370400440532013001
        summary: Jane Smith changed IBAN
        metadata: ''
        createdAt: '2026-05-15T10:30:00Z'
    PartnerverificationVerificationHistoryResponse:
      description: Paginated list of verification events for a partner.
      type: object
      required:
        - data
        - paging
      properties:
        data:
          description: The list of verification events for the current page.
          type: array
          items:
            $ref: '#/components/schemas/PartnerverificationVerificationHistoryEvent'
        paging:
          description: Cursor pagination info.
          type: object
          required:
            - cursors
          properties:
            cursors:
              type: object
              properties:
                after:
                  description: Value representing the last record in the current page. Use for fetching the next page.
                  type: string
                  nullable: true
                before:
                  description: Value representing the first record in the current page. Use for fetching the previous page.
                  type: string
                  nullable: true
      example:
        data:
          - id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
            eventSource: internal
            actionType: fieldChanged
            eventCategory: field
            actor:
              id: '678'
              name: Jane Smith
            relatedParty: null
            section: account
            fieldName: iban
            oldValue: DE89370400440532013000
            newValue: DE71370400440532013001
            summary: Jane Smith changed IBAN
            metadata: ''
            createdAt: '2026-05-15T10:30:00Z'
          - id: b2c3d4e5-f6a7-8901-bcde-f12345678901
            eventSource: sumsub
            actionType: applicantReviewed
            eventCategory: verificationStatus
            actor: null
            relatedParty: null
            section: null
            fieldName: null
            oldValue: null
            newValue: GREEN
            summary: Verification completed — approved
            metadata: '{"review_answer":"GREEN","reject_labels":[],"review_reject_type":null}'
            createdAt: '2026-05-14T08:15:22Z'
        paging:
          cursors:
            after: '1'
            before: '5'
    PartnerverificationVerificationPropertiesUpdateResponse:
      description: |-
        The complete verification properties resource for a partner after the update has been
        applied. The full set of verification flags is always returned (not just the fields that
        changed) so clients can replace their local copy of the resource rather than merging
        partial changes.
      type: object
      required:
        - properties
      properties:
        properties:
          description: |-
            The full map of verification flags with their current state. Every known property is
            present, whether or not it was affected by this request.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
          properties:
            verifiedAccountBankAccount:
              $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
            verifiedAccountName:
              $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
            verifiedAccountNameLegal:
              $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
            verifiedSignedContract:
              $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
            verifiedDsa:
              $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
            verifiedRiskProfile:
              $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
            verifiedRiskProfileApproved:
              $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
            verifiedRestaurantVatNumber:
              $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
            verifiedOwnerType:
              $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
            verifiedCompanyListingDetails:
              $ref: '#/components/schemas/PartnerverificationVerificationPropertyState'
      example:
        properties:
          verifiedAccountBankAccount:
            verified: true
            verifiedBy:
              id: '678'
              name: Jane Smith
            verifiedAt: '2026-05-15T10:30:00Z'
          verifiedAccountName:
            verified: true
            verifiedBy:
              id: '678'
              name: Jane Smith
            verifiedAt: '2026-05-15T10:30:00Z'
          verifiedAccountNameLegal:
            verified: false
            verifiedBy: null
            verifiedAt: null
          verifiedSignedContract:
            verified: true
            verifiedBy:
              id: '678'
              name: Jane Smith
            verifiedAt: '2026-05-15T10:30:00Z'
          verifiedDsa:
            verified: false
            verifiedBy: null
            verifiedAt: null
          verifiedRiskProfile:
            verified: false
            verifiedBy:
              id: '678'
              name: Jane Smith
            verifiedAt: '2026-05-15T10:30:00Z'
          verifiedRiskProfileApproved:
            verified: false
            verifiedBy: null
            verifiedAt: null
          verifiedRestaurantVatNumber:
            verified: false
            verifiedBy: null
            verifiedAt: null
          verifiedOwnerType:
            verified: false
            verifiedBy: null
            verifiedAt: null
          verifiedCompanyListingDetails:
            verified: false
            verifiedBy: null
            verifiedAt: null
    PartnerverificationVerificationPropertyState:
      description: The current state of a single verification flag.
      type: object
      required:
        - verified
        - verifiedAt
      properties:
        verified:
          description: The current verified state of the property.
          type: boolean
        verifiedBy:
          description: The agent who last changed the property. Null if never set by an agent.
          type: object
          nullable: true
          properties:
            id:
              description: Agent's user ID.
              type: string
            name:
              description: Agent's display name.
              type: string
        verifiedAt:
          description: When the property state was last changed (ISO 8601 UTC). Null if never set.
          type: string
          format: date-time
          nullable: true
    PartnerverificationVerificationRequest:
      description: Request body for initiating a KYC verification
      type: object
      required:
        - type
      properties:
        type:
          description: The type of verification to initiate
          type: string
          enum:
            - verifyIndividual
            - verifyBusiness
      example:
        type: verifyIndividual
    PartnerverificationVerificationResponse:
      description: Response containing the verification URLs
      type: object
      required:
        - verificationUrl
      properties:
        verificationUrl:
          description: The URL to redirect the user to for completing verification
          type: string
        dashboardUrl:
          description: The URL to the verification dashboard
          type: string
          nullable: true
      example:
        verificationUrl: https://sumsub.com/verify/abc123
        dashboardUrl: https://sumsub.dashboard.com/applicant/abc123
    PartnerverificationBusinesstypesAustriaLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Austria
      type: string
      x-enumNames:
        - Juristische Personen
        - Verein
        - AktG
        - GmbH
        - Fonds
        - Stiftung
        - Genossenschaft
        - GenG
        - GmbhG
        - Flexible Kapitalgesellschaft
      enum:
        - juristischePersonen
        - verein
        - aktG
        - gmbHAT
        - fonds
        - stiftungAT
        - genossenschaft
        - genG
        - gmbhG
        - flexibleKapitalgesellschaft
    PartnerverificationBusinesstypesAustriaNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in Austria
      type: string
      x-enumNames:
        - OHG (Offene Handelsgesellschaft)
        - KG (Kommanditgesellschaft)
        - Stille Gesellschaft
        - OEG
        - KEG
        - Gesellschaft burgerliches Rechts (gesbR)
        - EWIV
        - Personengesellschaften
        - Erwerbsgesellschaft
        - Einzelunternehmen
      enum:
        - offeneHandelsgesellschaftAT
        - kommanditgesellschaftAT
        - stilleGesellschaftAT
        - oeg
        - keg
        - gesellschaftBurgerlichesRechts
        - ewiv
        - personengesellschaften
        - erwerbsgesellschaft
        - einzelunternehmen
    PartnerverificationBusinesstypesBelgiumLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Belgium
      type: string
      x-enumNames:
        - Besloten vennootschap (B.V.)
        - Naamloze Vennootschap (N.V.)
        - Cooperatieve Vennootschap met beperkte aansprakelijkheid
        - Commanditaire vennootschap (CommV)
      enum:
        - beslotenVennootschapBE
        - naamlozeVennootschapBE
        - cooperatieveVennootschapMetBeperkteAansprakelijkheid
        - commanditaireVennootschapBE
    PartnerverificationBusinesstypesBelgiumNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in Belgium
      type: string
      x-enumNames:
        - Eenmanszaak
        - Vennootschap onder firma
      enum:
        - eenmanszaakBE
        - vennootschapOnderFirmaBE
    PartnerverificationBusinesstypesBulgariaLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Bulgaria
      type: string
      x-enumNames:
        - ООД - OOD
        - ЕООД - EOOD
        - ЕТ - ET
        - АД - AD
        - ДЗЗД - DZZD
      enum:
        - ltdOOD
        - ltdEOOD
        - etET
        - adAD
        - dzzdDZZD
    PartnerverificationBusinesstypesBusinessType:
      description: The types of legal and non-legal businesses
      oneOf:
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesNetherlandsNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesNetherlandsLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesGermanyNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesGermanyLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesBelgiumNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesBelgiumLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesAustriaNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesAustriaLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesSwitzerlandNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesSwitzerlandLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesDenmarkNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesDenmarkLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesFranceNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesFranceLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesLuxembourgNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesLuxembourgLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesBulgariaLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesNorwayNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesNorwayLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesPolandNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesPolandLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesPortugalNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesPortugalLegalBusinessTypes'
        - anyOf:
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesSlovakiaNonLegalBusinessTypes'
            - $ref: '#/components/schemas/PartnerverificationBusinesstypesSlovakiaLegalBusinessTypes'
    PartnerverificationBusinesstypesDenmarkLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Denmark
      type: string
      x-enumNames:
        - Anpartsselskab (ApS)
        - Aktieselskab (A/S)
        - Partnerselskaber (P/S)
        - Iværksætterselskaber (IVS)
        - Holdingselskab
      enum:
        - anpartsselskabApS
        - aktieselskabAS
        - partnerselskaberPS
        - ivaerksaetterselskaberIVS
        - holdingselskab
    PartnerverificationBusinesstypesDenmarkNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in Denmark
      type: string
      x-enumNames:
        - Enkeltmandsvirksomhed
        - Personlig ejede virksomhed (PMV)
        - Interessentskab (I/S)
        - Kommanditselskab (K/S)
      enum:
        - enkeltmandsvirksomhed
        - personligEjedeVirksomhedPMV
        - interessentskabIS
        - kommanditselskabKS
    PartnerverificationBusinesstypesFranceLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in France
      type: string
      x-enumNames:
        - Sociétés à responsabilité limitée (SARL)
        - Société anonyme (SA)
        - Sociétés par actions simplifiées (SAS)
        - Société par Actions Simplifiée Unipersonnelle (SASU)
        - Société par Actions Simplifiée à associé Unique (SASU)
        - SARL à associé unique
        - SARL unipersonne
        - Société en Nom Collectif (SNC)
      enum:
        - societesAResponsabiliteLimitee
        - societeAnonyme
        - societesParActionsSimplifiees
        - societeParActionsSimplifieeUnipersonnelle
        - societeParActionsSimplifieeAAssocieUnique
        - sarlAAssocieUnique
        - sarlUnipersonne
        - societeEnNomCollectif
    PartnerverificationBusinesstypesFranceNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in France
      type: string
      x-enumNames:
        - Entreprise Individuelle (EI)
        - Entreprise individuelle à responsabilité limitée (EIRL)
        - Entreprise unipersonnelle à responsabilité limitée (EURL)
        - Affaire personnelle commerçant
        - Affaire personnelle artisan commerçant
        - Affaire personnelle personne physique
        - Affaire personnelle profession libérale
      enum:
        - entrepriseIndividuelle
        - entrepriseIndividuelleAResponsabiliteLimitee
        - entrepriseUnipersonnelleAResponsabiliteLimitee
        - affairePersonnelleCommercant
        - affairePersonnelleArtisanCommercant
        - affairePersonnellePersonnePhysique
        - affairePersonnelleProfessionLiberale
    PartnerverificationBusinesstypesGermanyLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Germany
      type: string
      x-enumNames:
        - Juristische Person des Privaten rechts
        - Vereine (§ 21 BGB)
        - Stiftung (§ 80 BGB)
        - Aktiengesellschaften (AktG)
        - Gesellschaft mit beschränkter Haftung (GmbH)
        - Unternehmergesellschaft
        - Stiftung
        - Anstalten
        - Korperschaften
        - Bund und Lander
        - Juristische Person des offentlichen Rechts
        - eGBR (eingetragene Gesellschaft bürgerlichen Rechts)
      enum:
        - juristischePersonDesPrivatenRechts
        - vereine21BGB
        - stiftung80BGB
        - aktiengesellschaftenAktG
        - gesellschaftMitBeschrankterHaftungDE
        - unternehmergesellschaft
        - stiftungDE
        - anstalten
        - korperschaften
        - bundUndLander
        - juristischePersonDesOffentlichenRechts
        - eingetrageneGesellschaftBurgerlichenRechtsEGBR
    PartnerverificationBusinesstypesGermanyNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in Germany
      type: string
      x-enumNames:
        - GbR (Gesellschaft burgerlichen Rechts)
        - kG (Kommanditgesellschaft)
        - OHG (Offene Handelsgesellschaft)
        - Partnerschaftgesellschaft
        - Partenreederei
        - Stille Gesellschaft
        - Personengesellschaft
        - Einzelunternehmer
      enum:
        - gesellschaftBurgerlichenRechts
        - kommanditgesellschaftDE
        - offeneHandelsgesellschaftDE
        - partnerschaftgesellschaft
        - partenreederei
        - stilleGesellschaftDE
        - personengesellschaft
        - einzelunternehmer
    PartnerverificationBusinesstypesLuxembourgLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Luxembourg
      type: string
      x-enumNames:
        - Limited Liability Company in Luxembourg (SARL)
        - Joint Stock Company
        - Public Company or Corporation
        - Limited Partnership (SECS)
        - Cooperative Company (SC)
      enum:
        - limitedLiabilityCompanyInLuxembourgSARL
        - jointStockCompany
        - publicCompanyOrCorporation
        - limitedPartnershipSECS
        - cooperativeCompanySC
    PartnerverificationBusinesstypesLuxembourgNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in Luxembourg
      type: string
      x-enumNames:
        - Commercant en nom propre (sole trader)
      enum:
        - commercantEnNomPropreSoleTrader
    PartnerverificationBusinesstypesNetherlandsLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in the Netherlands
      type: string
      x-enumNames:
        - Besloten Vennootschap (B.V.)
        - Naamloze Vennootschap (N.V.)
        - Verenigingen
        - Coöperaties
      enum:
        - beslotenVennootschapNL
        - naamlozeVennootschapNL
        - verenigingen
        - cooperaties
    PartnerverificationBusinesstypesNetherlandsNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in the Netherlands
      type: string
      x-enumNames:
        - Vennootschap onder firma (V.O.F.)
        - Commanditaire Vennootschap (C.V.)
        - Eenmanszaak
      enum:
        - vennootschapOnderFirmaNL
        - commanditaireVennootschapNL
        - eenmanszaakNL
    PartnerverificationBusinesstypesNorwayLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Norway
      type: string
      x-enumNames:
        - Aksjeselskap (AS)
        - Allmennaksjeselskap (ASA)
        - Ansvarlig selskap (ANS/DA)
        - Norsk Utenlandsk Foretak (NUF)
        - Samvirkeforetak (SA)
      enum:
        - aksjeselskapAS
        - allmennaksjeselskapASA
        - ansvarligSelskapAnsDa
        - norskUtenlandskForetakNUF
        - samvirkeforetakSA
    PartnerverificationBusinesstypesNorwayNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in Norway
      type: string
      x-enumNames:
        - Enkeltpersonforetak
      enum:
        - enkeltpersonforetak
    PartnerverificationBusinesstypesPolandLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Poland
      type: string
      x-enumNames:
        - Spółka z ograniczoną odpowiedzialnością
        - Spółka akcyjna
        - Spółka komandytowa
        - Spółka cywilna
        - Spółka jawna
        - Spółka komandytowo-akcyjna
        - Spółdzielnia
        - Foundations / associations
      enum:
        - spolkaZOgraniczonaOdpowiedzialnoscia
        - spolkaAkcyjna
        - spolkaKomandytowa
        - spolkaCywilna
        - spolkaJawna
        - spolkaKomandytowoAkcyjna
        - spoldzielnia
        - foundationsAssociations
    PartnerverificationBusinesstypesPolandNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in Poland
      type: string
      x-enumNames:
        - Jednoosobowa Działalność Gospodarcza
      enum:
        - jednoosobowaDzialalnoscGospodarcza
    PartnerverificationBusinesstypesPortugalLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Portugal
      type: string
      x-enumNames:
        - Private limited liability companies (Sociedade por Quotas)
        - Public limited companies (Sociedade Anonima SA Corporation)
        - Limited co-partnership companies (Sociedade em Comandita, SC)
        - General partnership companies (Sociedade em Nome Collectivo, SNC)
      enum:
        - sociedadePorQuotas
        - sociedadeAnonimaSaCorporation
        - sociedadeEmComanditaSC
        - sociedadeEmNomeCollectivoSNC
    PartnerverificationBusinesstypesPortugalNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in Portugal
      type: string
      x-enumNames:
        - Empresario em Nome individual (Sole proprietor)
        - Individual Limited Liability Establishement (Estabelecimento individual de Responsabilidade Limitada)
        - Single Shareholder (Sociedade Unipessoal por Quotas)
      enum:
        - empresarioEmNomeIndividual
        - estabelecimentoIndividualDeResponsabilidadeLimitada
        - sociedadeUnipessoalPorQuotas
    PartnerverificationBusinesstypesSlovakiaLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Slovakia
      type: string
      x-enumNames:
        - Živnosť - Právnická osoba
        - Verejná obchodná spoločnosť (v.o.s.)
        - Komanditná spoločnosť (k.s.)
        - Spoločnosť s ručením obmedzeným (s.r.o.)
        - Akciová spoločnosť (a.s.)
        - Družstvo
        - Združenie
      enum:
        - zivnostPravnickaOsoba
        - verejnaObchodnaSpolocnost
        - komanditnaSpolocnost
        - spolocnostSRucenimObmedzenym
        - akciovaSpolocnost
        - druzstvo
        - zdruzenie
    PartnerverificationBusinesstypesSlovakiaNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in Slovakia
      type: string
      x-enumNames:
        - Živnosť - Fyzická osoba – podnikateľ
      enum:
        - zivnostFyzickaOsobaPodnikatel
    PartnerverificationBusinesstypesSwitzerlandLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for legal entities in Switzerland
      type: string
      x-enumNames:
        - Gesellschaft mit beschrankter Haftung (GmbH)
        - Offene handelsgesselschaft (OG)
        - Aktien Gesellschaft (AG)
        - Kommanditgesellschaft (KG)
        - Kollektivgesellschaft (KIG)
      enum:
        - gesellschaftMitBeschrankterHaftungCH
        - offeneHandelsgesselschaft
        - aktienGesellschaft
        - kommanditgesellschaftCH
        - kollektivgesellschaft
    PartnerverificationBusinesstypesSwitzerlandNonLegalBusinessTypes:
      description: The legal business type, also known as the legal business type, for non-legal entities in Switzerland
      type: string
      x-enumNames:
        - Einzelfirma
      enum:
        - einzelfirma
    PartnerverificationCommonAddress:
      type: object
      description: Address details.
      required:
        - lines
        - postalCode
        - city
        - country
      properties:
        lines:
          type: array
          description: Address lines. Typically the street name, house number and any additional information such as apartment, suite, unit, building, floor, etc.
          minItems: 1
          items:
            type: string
            nullable: true
        postalCode:
          description: Postal code.
          type: string
        city:
          description: City name
          type: string
        country:
          description: Country code for the country in ISO 3166-1 alpha-2 format.
          type: string
          maxLength: 2
          minLength: 2
      example:
        lines:
          - Piet Heinkade 123
        postalCode: 1019 GM
        city: Amsterdam
        country: NL
    PartnerverificationCommonDocumentUploadInstructions:
      type: object
      description: Instructions for uploading a document to the asset store.
      required:
        - instructions
        - expiresAt
      properties:
        instructions:
          type: object
          required:
            - url
          properties:
            url:
              type: string
              format: uri
              description: The signed URL to which the client should upload the binary document.
            headers:
              type: object
              additionalProperties:
                type: string
              description: Headers the client must include in the upload request.
        expiresAt:
          type: string
          format: date-time
          description: The time when the upload instructions expire.
      example:
        instructions:
          url: https://bucket.s3.eu-west-1.amazonaws.com/asset?X-Amz-Expires=180&X-Amz-Security-Token=some-token
          headers:
            x-amz-server-side-encryption: AES256
        expiresAt: '2026-06-08T14:30:00.000Z'
    PartnerverificationCommonLegalBusinessDetails:
      type: object
      description: Legal identity of a business owner within the ownership tree.
      required:
        - name
        - businessType
        - address
      properties:
        name:
          description: Legal name of the business.
          type: string
        businessType:
          $ref: '#/components/schemas/PartnerverificationBusinesstypesBusinessType'
        address:
          $ref: '#/components/schemas/PartnerverificationCommonAddress'
      example:
        name: Pizzeria Deliziosa GmbH
        businessType: gesellschaftMitBeschrankterHaftungDE
        address:
          lines:
            - Piet Heinkade 123
          postalCode: '10115'
          city: Berlin
          country: DE
    PartnerverificationDetailsLegalBusinessRegistration:
      type: object
      description: Legal business registration document.
      required:
        - id
        - issuer
        - registrationNumber
        - country
      properties:
        id:
          type: string
          description: Opaque identifier for the resource.
        issuer:
          type: string
          description: Chamber of commerce/business registration issuer.
        registrationNumber:
          type: string
          description: Chamber of commerce/business registration number.
        country:
          type: string
          description: Country code for the country of registration.
          maxLength: 2
          minLength: 2
        isFileUploaded:
          type: boolean
          description: Whether a document has been uploaded for this registration.
      example:
        id: '1'
        issuer: kvk
        registrationNumber: '123'
        country: NL
        isFileUploaded: true
    PartnerverificationDetailsLegalBusinessRegistrationCreate:
      type: object
      description: Request body for creating a legal business registration.
      required:
        - issuer
        - registrationNumber
        - country
      properties:
        issuer:
          type: string
          description: Chamber of commerce/business registration issuer.
        registrationNumber:
          type: string
          description: Chamber of commerce/business registration number.
        country:
          type: string
          description: Country code for the country of registration.
          maxLength: 2
          minLength: 2
      example:
        issuer: kvk
        registrationNumber: '123'
        country: NL
    PartnerverificationDetailsPartnerLegalBusiness:
      type: object
      description: Legal details of a partner.
      required:
        - legalDetails
        - registrations
      properties:
        legalDetails:
          $ref: '#/components/schemas/PartnerverificationCommonLegalBusinessDetails'
        registrations:
          description: List of business registrations.
          type: array
          items:
            $ref: '#/components/schemas/PartnerverificationDetailsLegalBusinessRegistration'
      example:
        legalDetails:
          name: Pizzeria Deliziosa GmbH
          businessType: gesellschaftMitBeschrankterHaftungDE
          address:
            lines:
              - Piet Heinkade 123
            postalCode: '10115'
            city: Berlin
            country: DE
        registrations:
          - id: '1'
            issuer: kvk
            registrationNumber: '123'
            country: NL
            isFileUploaded: true
    PartnerverificationDetailsPartnerLegalBusinessCreate:
      type: object
      description: Request body for creating legal details of a partner.
      required:
        - legalDetails
      properties:
        legalDetails:
          $ref: '#/components/schemas/PartnerverificationCommonLegalBusinessDetails'
        registrations:
          description: List of business registrations.
          type: array
          items:
            $ref: '#/components/schemas/PartnerverificationDetailsLegalBusinessRegistrationCreate'
      example:
        legalDetails:
          name: Pizzeria Deliziosa GmbH
          businessType: gesellschaftMitBeschrankterHaftungDE
          address:
            lines:
              - Main St 10
            postalCode: '10115'
            city: Berlin
            country: DE
        registrations:
          - issuer: kvk
            registrationNumber: '123'
            country: NL
    PartnerverificationDocumentsDocumentParentType:
      description: The type of parent resource the document is linked to. Use partner if the document is not tied to a specific sub-resource.
      type: string
      enum:
        - businessRegistration
        - identification
        - partner
      example: businessRegistration
    PartnerverificationDocumentsDocumentType:
      description: The kind of verification document.
      type: string
      enum:
        - proofOfOwnership
        - idScan
        - bankStatement
        - vatCertificate
        - contract
        - uboRegistry
        - seizureDocument
        - riskProfileEvidence
      example: proofOfOwnership
    PartnerverificationDocumentsDocumentUploadUrlRequest:
      type: object
      description: Request containing information about the document file to be uploaded to storage.
      required:
        - fileName
        - fileSize
      properties:
        fileName:
          description: Name of the file to be uploaded (including extension). Used to determine the MIME type and storage object key.
          type: string
        fileSize:
          description: Size of the file in bytes. Used to enforce upload size limits.
          type: integer
          format: int64
      example:
        fileName: KVK_Extract.pdf
        fileSize: 204800
    PartnerverificationDocumentsVerificationDocumentCreateRequest:
      type: object
      description: Request body for creating a verification document.
      required:
        - name
        - type
        - parentId
        - parentType
      properties:
        name:
          description: Name of the document.
          type: string
        type:
          $ref: '#/components/schemas/PartnerverificationDocumentsDocumentType'
        parentId:
          description: ID of the resource this document belongs to.
          type: string
        parentType:
          $ref: '#/components/schemas/PartnerverificationDocumentsDocumentParentType'
      example:
        name: KVK_Extract.pdf
        type: proofOfOwnership
        parentId: e1000000-0000-0000-0000-000000000001
        parentType: businessRegistration
    PartnerverificationDocumentsVerificationDocumentCreateResponse:
      type: object
      description: Response after creating a verification document.
      required:
        - id
        - name
        - type
        - parentId
        - parentType
        - isFileUploaded
      properties:
        id:
          description: Opaque identifier for the document.
          type: string
        name:
          description: Name of the document.
          type: string
        type:
          $ref: '#/components/schemas/PartnerverificationDocumentsDocumentType'
        parentId:
          description: ID of the resource this document belongs to.
          type: string
        parentType:
          $ref: '#/components/schemas/PartnerverificationDocumentsDocumentParentType'
        isFileUploaded:
          description: Whether a file has been uploaded for this document.
          type: boolean
      example:
        id: doc-456
        name: KVK_Extract.pdf
        type: proofOfOwnership
        parentId: e1000000-0000-0000-0000-000000000001
        parentType: businessRegistration
        isFileUploaded: false
    PartnerverificationDocumentsVerificationDocuments:
      allOf:
        - $ref: '#/components/schemas/PagingPagedAfterOnlyCursorResponse'
        - type: object
          description: Verification documents of a partner.
          required:
            - documents
          properties:
            documents:
              description: List of verification documents.
              type: array
              items:
                type: object
                required:
                  - id
                  - name
                  - type
                  - parentId
                  - parentType
                  - isFileUploaded
                  - uploadedBy
                  - uploadedAt
                properties:
                  id:
                    description: Unique identifier of the document.
                    type: string
                  name:
                    description: Name of the document.
                    type: string
                  type:
                    $ref: '#/components/schemas/PartnerverificationDocumentsDocumentType'
                  parentId:
                    description: ID of the resource this document belongs to.
                    type: string
                  parentType:
                    $ref: '#/components/schemas/PartnerverificationDocumentsDocumentParentType'
                  isFileUploaded:
                    description: Whether a file has been uploaded for this document.
                    type: boolean
                  uploadedBy:
                    description: Identifier of the user who uploaded the document.
                    type: string
                  uploadedAt:
                    description: Timestamp of upload, in ISO 8601 format.
                    type: string
                    format: date-time
      example:
        documents:
          - id: doc-456
            name: KVK_Extract.pdf
            type: proofOfOwnership
            isFileUploaded: true
            uploadedBy: user-123
            uploadedAt: '2026-05-13T10:00:00Z'
            parentId: e1000000-0000-0000-0000-000000000001
            parentType: businessRegistration
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
    PartnerverificationOverviewPartnerVerificationOverview:
      type: object
      description: Verification data of a partner.
      required:
        - verificationStatus
        - riskLevel
        - activeFlags
        - applicantProfileUrl
        - lastUpdated
      properties:
        verificationStatus:
          description: Current verification status of the partner.
          type: string
          enum:
            - approved
            - pending
            - manualReview
            - resubmissionRequested
            - rejected
            - created
        riskLevel:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PartnerlegalPartnerRiskProfile'
        activeFlags:
          description: List of active compliance flags for the partner.
          type: array
          items:
            type: string
        applicantProfileUrl:
          description: Link to the applicant in the 3rd party verification system.
          type: string
          format: uri
          nullable: true
        lastUpdated:
          description: Timestamp of the last update, in ISO 8601 format.
          type: string
          format: date-time
      example:
        verificationStatus: manualReview
        riskLevel:
          status: high
          notes: PEP identified among beneficial owners
        activeFlags:
          - PEP
        applicantProfileUrl: https://cockpit.sumsub.com/checkus/#/applicant/SUMSUB-123
        lastUpdated: '2026-05-13T10:00:00Z'
    PartnerverificationTaxablepresenceTaxablePresenceRequest:
      type: object
      description: Request body for replacing taxable presence countries.
      required:
        - taxablePresenceCountries
      properties:
        taxablePresenceCountries:
          description: EU country codes where the partner has taxable presence, in ISO 3166-1 alpha-2 format. Send empty array to clear all.
          type: array
          items:
            type: string
            maxLength: 2
            minLength: 2
      example:
        taxablePresenceCountries:
          - DE
          - NL
    PartnerverificationTaxablepresenceTaxablePresenceResponse:
      type: object
      description: Taxable presence countries for a partner.
      required:
        - partnerId
        - taxablePresenceCountries
      properties:
        partnerId:
          description: Unique identifier of the partner.
          type: string
        taxablePresenceCountries:
          description: EU country codes where the partner has declared taxable presence, in ISO 3166-1 alpha-2 format.
          type: array
          items:
            type: string
            maxLength: 2
            minLength: 2
      example:
        partnerId: '12345'
        taxablePresenceCountries:
          - DE
          - NL
          - FR
    PasswordEmailaddress:
      properties:
        EmailAddress:
          description: An email address for an account.
          type: string
      type: object
    PasswordPassword:
      properties:
        Password:
          description: A password for a consumers account.
          type: string
      type: object
    PatchOperation:
      description: A JSON Patch operation as defined by RFC 6902
      type: object
      required:
        - op
        - path
      properties:
        from:
          type: string
          description: A string containing a JSON Pointer value
        op:
          type: string
          description: The operation to be performed
          enum:
            - add
            - copy
            - move
            - remove
            - replace
            - test
        path:
          type: string
          description: A JSON-Pointer. See examples
        value:
          description: The value to be used within the operations
    PatchRequest:
      description: A JSON Patch document as defined by RFC 6902
      items:
        $ref: '#/components/schemas/PatchOperation'
      type: array
    PaymentoptionsDeduction:
      description: Deduction (optionally applied to payment types).
      type: object
      required:
        - deductionType
        - applied
      properties:
        deductionType:
          type: string
          description: The type of deduction.
          enum:
            - takeawayPay
            - accountCredit
            - voucher
        applied:
          type: boolean
          description: If the deduction has been applied to any payment.
        appliedAmount:
          type: integer
          description: The amount deducted, if applied (in minor currency units).
          nullable: true
        availableAmount:
          type: integer
          description: The amount available for this deduction, if not applied (in minor currency units).
          nullable: true
        appliesTo:
          type: object
          description: Defines how this deduction can be applied.
          nullable: true
          properties:
            paymentTypes:
              type: array
              description: List of paymentTypes this deduction can apply to.
              nullable: true
              items:
                type: string
        code:
          type: string
          description: Any code associated with this deduction - e.g. voucherCode.
          nullable: true
        errorKeys:
          type: array
          description: List of error codes when attempting to apply this deduction (e.g. voucher validation errors).
          nullable: true
          items:
            type: string
    PaymentoptionsPaymentOptionsResponse:
      description: Get detailed payment options.
      type: object
      required:
        - orderId
        - basketTotal
        - orderTotal
        - chargesTotal
        - availablePaymentTypes
      properties:
        orderId:
          type: string
          description: Identifier of the order.
        basketTotal:
          type: integer
          description: Total basket amount (in minor currency units).
        orderTotal:
          type: integer
          description: Total order amount - includes charges (in minor currency units).
        chargesTotal:
          type: integer
          description: Total of charges applied (in minor currency units).
        charges:
          type: array
          description: List of charges/fees applied to the order.
          nullable: true
          items:
            type: object
            required:
              - chargeType
              - chargeAmount
            properties:
              chargeType:
                type: string
                description: The type of charge.
                enum:
                  - serviceFee
              chargeAmount:
                type: integer
                description: Monetary amount of the charge (in minor currency units).
              displayText:
                type: string
                description: Display context associated with the charge, if any.
                nullable: true
        balances:
          type: array
          description: List of available balances for credit.
          nullable: true
          items:
            type: object
            required:
              - balanceType
              - balanceAmount
            properties:
              balanceType:
                type: string
                description: The type of balance.
                enum:
                  - takeawayPay
                  - accountCredit
              balanceAmount:
                type: integer
                description: Amount of balance available (in minor currency units).
        availableDeductions:
          type: array
          description: List of optional deductions.
          nullable: true
          items:
            $ref: '#/components/schemas/PaymentoptionsDeduction'
        availablePaymentTypes:
          type: array
          description: List of available payment types.
          items:
            anyOf:
              - $ref: '#/components/schemas/PaymentoptionsPaymentTypesAccountCredit'
              - $ref: '#/components/schemas/PaymentoptionsPaymentTypesApplePay'
              - $ref: '#/components/schemas/PaymentoptionsPaymentTypesCard'
              - $ref: '#/components/schemas/PaymentoptionsPaymentTypesCash'
              - $ref: '#/components/schemas/PaymentoptionsPaymentTypesGooglePay'
              - $ref: '#/components/schemas/PaymentoptionsPaymentTypesPayPal'
              - $ref: '#/components/schemas/PaymentoptionsPaymentTypesSavedCard'
              - $ref: '#/components/schemas/PaymentoptionsPaymentTypesTakeawayPay'
            discriminator:
              propertyName: paymentType
              mapping:
                accountCredit: '#/components/schemas/PaymentoptionsPaymentTypesAccountCredit'
                applePay: '#/components/schemas/PaymentoptionsPaymentTypesApplePay'
                card: '#/components/schemas/PaymentoptionsPaymentTypesCard'
                cash: '#/components/schemas/PaymentoptionsPaymentTypesCash'
                googlePay: '#/components/schemas/PaymentoptionsPaymentTypesGooglePay'
                payPal: '#/components/schemas/PaymentoptionsPaymentTypesPayPal'
                savedCard: '#/components/schemas/PaymentoptionsPaymentTypesSavedCard'
                takeawayPay: '#/components/schemas/PaymentoptionsPaymentTypesTakeawayPay'
        basketBreakdown:
          type: array
          description: List of necessary amounts.
          items:
            type: object
            required:
              - itemType
              - itemAmount
            properties:
              itemType:
                type: string
                description: The type of basket item.
                enum:
                  - subTotal
                  - multiBuyDiscount
                  - restaurantDiscount
                  - basketAdjustments
                  - deliveryFee
                  - serviceFee
              itemAmount:
                type: integer
                description: Amount of basket item available (in minor currency units).
              subItems:
                type: array
                description: Sub items for this basket item.
                nullable: true
                items:
                  type: object
                  required:
                    - name
                    - type
                    - amount
                  properties:
                    name:
                      type: string
                      description: The name of the relevant sub-item.
                    type:
                      type: string
                      description: The identifier of the relevant sub-item.
                    amount:
                      type: integer
                      description: Amount of the sub-item (in minor currency units).
      example:
        orderId: 8d523bc6850d49dab6cccf3084971578
        basketTotal: 1000
        chargesTotal: 50
        orderTotal: 1050
        charges:
          - chargeType: serviceFee
            chargeAmount: 50
            displayText: Service Charge
        balances:
          - balanceType: accountCredit
            balanceAmount: 200
          - balanceType: takeawayPay
            balanceAmount: 0
        availableDeductions:
          - deductionType: voucher
            applied: false
            appliesTo:
              paymentTypes:
                - cash
                - card
                - savedCard
                - payPal
          - deductionType: accountCredit
            applied: true
            appliesTo:
              types:
                - card
                - savedCard
                - payPal
            availableAmount: 200
            appliedAmount: 200
        availablePaymentTypes:
          - paymentType: cash
            paymentAmount: 1050
          - paymentType: card
            paymentAmount: 850
            appliedDeductions:
              - accountCredit
            psp: Adyen
            cardTypes:
              - VISA
              - MASTERCARD
              - AMEX
          - paymentType: savedCard
            paymentAmount: 850
            appliedDeductions:
              - accountCredit
            cards:
              - id: '12334456'
                cardType: VISA
                expiry: 2022-01
                last4Digits: '1234'
                psp: Adyen
          - paymentType: payPal
            paymentAmount: 850
            appliedDeductions:
              - accountCredit
            psp: Braintree
        basketBreakdown:
          - itemType: subTotal
            itemAmount: 1000
          - itemType: multiBuyDiscount
            itemAmount: -250
          - itemType: restaurantDiscount
            itemAmount: -150
          - itemType: basketAdjustments
            itemAmount: -150
            subItems:
              - name: StampCard discount
                type: StampCard
                amount: -250
              - name: Bag fee
                type: BagFee
                amount: 100
          - itemType: deliveryFee
            itemAmount: 550
          - itemType: serviceFee
            itemAmount: 50
    PaymentoptionsPaymentTypesAccountCredit:
      type: object
      description: The payment type for account-credit.
      allOf:
        - $ref: '#/components/schemas/PaymentoptionsPaymentTypesPaymentType'
    PaymentoptionsPaymentTypesApplePay:
      type: object
      description: The payment type for Apple Pay.
      allOf:
        - $ref: '#/components/schemas/PaymentoptionsPaymentTypesPaymentType'
      required:
        - psp
      properties:
        psp:
          description: Payment service provider.
          type: string
    PaymentoptionsPaymentTypesCard:
      type: object
      description: The payment type for credit card.
      allOf:
        - $ref: '#/components/schemas/PaymentoptionsPaymentTypesPaymentType'
      required:
        - psp
        - cardTypes
      properties:
        psp:
          description: Payment service provider.
          type: string
        cardTypes:
          description: List of supported card types.
          type: array
          items:
            type: string
    PaymentoptionsPaymentTypesCash:
      type: object
      description: The payment type for cash.
      allOf:
        - $ref: '#/components/schemas/PaymentoptionsPaymentTypesPaymentType'
    PaymentoptionsPaymentTypesGooglePay:
      type: object
      description: The payment type for GooglePay.
      allOf:
        - $ref: '#/components/schemas/PaymentoptionsPaymentTypesPaymentType'
      required:
        - psp
      properties:
        psp:
          description: Payment service provider.
          type: string
    PaymentoptionsPaymentTypesPayPal:
      type: object
      description: The payment type for PayPal.
      allOf:
        - $ref: '#/components/schemas/PaymentoptionsPaymentTypesPaymentType'
      required:
        - psp
      properties:
        psp:
          type: string
          description: Payment service provider.
        savedId:
          type: string
          description: Identifier for tokenised PayPal, if appropriate.
          nullable: true
    PaymentoptionsPaymentTypesPaymentType:
      type: object
      required:
        - paymentType
        - paymentAmount
      properties:
        paymentType:
          description: The type of payment.
          enum:
            - accountCredit
            - applePay
            - card
            - cash
            - googlePay
            - payPal
            - savedCard
            - takeawayPay
          type: string
        selected:
          type: boolean
          description: If this payment type should be the default one selected.
        paymentAmount:
          type: integer
          description: The amount to be paid (in minor currency units).
        appliedDeductions:
          description: List of deductions that have been applied to this payment type.
          type: array
          items:
            type: string
    PaymentoptionsPaymentTypesSavedCard:
      type: object
      description: The payment type for saved-cards.
      allOf:
        - $ref: '#/components/schemas/PaymentoptionsPaymentTypesPaymentType'
      required:
        - cards
      properties:
        cards:
          type: array
          description: List of cards.
          items:
            type: object
            required:
              - id
              - cardType
              - psp
            properties:
              id:
                type: string
                description: Identifier for the saved card.
              cardType:
                type: string
                description: card type (VISA/MC etc.).
              psp:
                type: string
                description: Payment service provider.
              expiry:
                type: string
                description: Expiry date (YYYY-MM).
                nullable: true
              last4Digits:
                type: string
                description: Last 4 digits of the card number.
                nullable: true
    PaymentoptionsPaymentTypesTakeawayPay:
      type: object
      description: The payment type for TakeawayPay.
      allOf:
        - $ref: '#/components/schemas/PaymentoptionsPaymentTypesPaymentType'
    Paymentoptionsv2BasePaymentTypeProperties:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsBasePaymentTypeProperties'
      properties:
        fee:
          type: object
          nullable: true
          description: Additional fee for this payment type. This should be used to generate line items at checkout.
          properties:
            value:
              type: integer
              description: Fee in minor currency units
            currency:
              type: string
              description: ISO 4217 currency code of fee
            calculation:
              type: string
              description: The way the fee should be added
              enum:
                - flatFee
        excludedPaymentCapabilities:
          type: array
          nullable: true
          description: Determines if this payment type must be excluded from paying for certain items. If these items are present, this payment type should be ignored.
          items:
            type: string
            enum:
              - driverTip
              - membership
              - stampcard
              - serviceFee
              - membershipSubscription
    Paymentoptionsv2PaymentOptionsResponse:
      type: object
      properties:
        availablePaymentTypes:
          type: array
          description: List of available payment types. This list should be presented in the order provided.
          items:
            $ref: '#/components/schemas/Paymentoptionsv2PaymentType'
        savedPaymentTypes:
          type: array
          description: List of payment types that the customer has saved for lower friction repeat payments. This list should be presented in the order provided.
          items:
            $ref: '#/components/schemas/Paymentoptionsv2SavedPaymentType'
        preferredPaymentTypes:
          type: array
          description: |
            List of payment types that are recommended to the customer for quick selection. This array can contain a mix of these types. The first item in the array should be  pre-selected as the default.
          items:
            $ref: '#/components/schemas/Paymentoptionsv2PreferredPaymentType'
      example:
        availablePaymentTypes:
          - paymentType: cash
            displayName: Cash
            status: available
            isOnlinePayment: false
            behaviour: external
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/cash.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: false
            isDefaultPreselected: false
          - paymentType: voucher
            displayName: Voucher
            status: available
            isOnlinePayment: true
            behaviour: external
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/voucher.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: false
            isDefaultPreselected: false
          - paymentType: accountcredit
            displayName: Account Credit
            status: available
            isOnlinePayment: true
            behaviour: external
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/accountcredit.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: false
            isDefaultPreselected: false
          - paymentType: jetpay
            displayName: JET Pay
            status: available
            isOnlinePayment: true
            behaviour: external
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/jetpay.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: false
            isDefaultPreselected: false
            balance: 750
            availableBalance: 650
            messages:
              - displayMode: info
                displayText: JetPay cannot be used for alcohol or tobacco purchases
          - paymentType: creditcard
            displayName: Card
            status: available
            isOnlinePayment: true
            behaviour: external
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/card.svg
            hasOneClickPaymentDetails: true
            supportsOneClickPayment: true
            isDefaultPreselected: false
          - paymentType: ideal
            displayName: IDEAL
            status: available
            isOnlinePayment: true
            behaviour: external
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/ideal.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: false
            isDefaultPreselected: true
            fee:
              value: 25
              calculation: flatFee
              currency: EUR
            choice:
              type: bank
              displayName: Select bank
              items:
                - id: 001A
                  displayName: ABN Amro
                - id: 002I
                  displayName: ING Bank
          - paymentType: applepay
            displayName: Apple Pay
            status: available
            isOnlinePayment: true
            behaviour: native
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/applepay.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: false
            isDefaultPreselected: false
          - paymentType: googlepay
            displayName: Google Pay
            status: available
            isOnlinePayment: true
            behaviour: native
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/googlepay.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: false
            isDefaultPreselected: false
          - paymentType: paypal
            displayName: PayPal
            status: available
            isOnlinePayment: true
            behaviour: external
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/paypal.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: true
            isDefaultPreselected: false
          - paymentType: paypal_braintree
            displayName: PayPal
            status: available
            isOnlinePayment: false
            behaviour: native
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/paypal.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: false
            isDefaultPreselected: false
            additionalData:
              clientKey: clientKey
              merchantAccountId: merchantAccountId
          - paymentType: openbanking
            displayName: Pay by bank app
            status: available
            isOnlinePayment: true
            behaviour: external
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/openbanking.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: false
            isDefaultPreselected: false
            choice:
              type: bank
              displayName: Select bank
              items:
                - id: A001
                  displayName: Lloyds
                - id: A002
                  displayName: Natwest
                - id: A003
                  displayName: Monzo
        savedPaymentTypes:
          - paymentType: openbanking
            choiceId: abc0001
            displayName: Monzo
            subtitle: ••••0123
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/openbanking.svg
            behaviour: external
          - paymentType: openbanking
            choiceId: xyz1234
            displayName: Natwest
            subtitle: ••••9876
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/openbanking.svg
            behaviour: external
        preferredPaymentTypes:
          - preferredType: saved
            paymentType: openbanking
            choiceId: abc0001
            displayName: Monzo
            subtitle: ••••0123
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/openbanking.svg
            behaviour: external
          - preferredType: new
            paymentType: applepay
            displayName: Apple Pay
            status: available
            isOnlinePayment: true
            behaviour: native
            iconUrl: https://static.takeaway.com/images/inno-payments/icons/applepay.svg
            hasOneClickPaymentDetails: false
            supportsOneClickPayment: false
            isDefaultPreselected: false
    Paymentoptionsv2PaymentType:
      allOf:
        - $ref: '#/components/schemas/Paymentoptionsv2BasePaymentTypeProperties'
        - $ref: '#/components/schemas/Paymentoptionsv2PaymentTypeProperties'
    Paymentoptionsv2PaymentTypeProperties:
      allOf:
        - $ref: '#/components/schemas/CheckoutCheckoutPaymentOptionsPaymentTypeProperties'
      properties:
        isDefaultPreselected:
          type: boolean
          description: Indicates that the payment method should be the default preselected item for new customers. Clients may remember the last used selection and use that for repeat customers. Only one will have the value `true`.
          deprecated: true
    Paymentoptionsv2PreferredAvailablePaymentType:
      allOf:
        - $ref: '#/components/schemas/Paymentoptionsv2PreferredType'
        - $ref: '#/components/schemas/Paymentoptionsv2BasePaymentTypeProperties'
        - $ref: '#/components/schemas/Paymentoptionsv2PaymentType'
      type: object
    Paymentoptionsv2PreferredPaymentMethod:
      type: object
      required:
        - preferred
      properties:
        preferred:
          type: boolean
          description: Indicates whether a payment method should be set as preferred or not.
    Paymentoptionsv2PreferredPaymentType:
      type: object
      properties:
        preferredType:
          enum:
            - saved
            - new
      discriminator:
        propertyName: preferredType
        mapping:
          new: '#/components/schemas/Paymentoptionsv2PreferredAvailablePaymentType'
          saved: '#/components/schemas/Paymentoptionsv2PreferredSavedPaymentType'
        oneOf:
          - $ref: '#/components/schemas/Paymentoptionsv2PreferredAvailablePaymentType'
          - $ref: '#/components/schemas/Paymentoptionsv2PreferredSavedPaymentType'
      required:
        - preferredType
    Paymentoptionsv2PreferredSavedPaymentType:
      allOf:
        - $ref: '#/components/schemas/Paymentoptionsv2PreferredType'
        - $ref: '#/components/schemas/Paymentoptionsv2BasePaymentTypeProperties'
        - $ref: '#/components/schemas/Paymentoptionsv2SavedPaymentType'
      type: object
    Paymentoptionsv2PreferredType:
      description: The preferred type being used
      required:
        - preferredType
      properties:
        preferredType:
          description: |
            A string describing which preferred type is being used
            `new`: an "unsaved" payment type, similar to those in `availablePaymentTypes` `saved`: a saved payment type, similar to those in `savedPaymentTypes`
          type: string
          enum:
            - new
            - saved
      discriminator:
        propertyName: preferredType
    Paymentoptionsv2SavedPaymentType:
      allOf:
        - $ref: '#/components/schemas/Paymentoptionsv2BasePaymentTypeProperties'
        - $ref: '#/components/schemas/Paymentoptionsv2SavedPaymentTypeProperties'
    Paymentoptionsv2SavedPaymentTypeProperties:
      type: object
      required:
        - paymentType
        - choiceId
        - displayName
        - behaviour
      properties:
        subtitle:
          type: string
          description: Additional text to give context, for example the name of the bank account or masked account number.
        choiceId:
          type: string
          description: Id to distinguish multiple options of the same payment type. If provided, this must be included with the payment method in the payment request.
    Paymentorchestration4XxErrorSchema:
      type: object
      description: A HTTP 4xx error response
      properties:
        fault:
          type: object
          description: An object representing the nature of the failure
          required:
            - faultId
          properties:
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            errors:
              type: array
              description: The list of errors
              items:
                type: object
                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
                    enum:
                      - paymentRefused
                      - paymentFailed
                      - invalidRequest
                      - unknown
                  description:
                    description: Specific details about the error that may assist you in resolving the issue
                    type: string
                    nullable: true
                  paymentMethod:
                    description: The payment method
                    type: string
                    nullable: true
                  reasons:
                    description: Reasons for the error in slug format
                    type: array
                    nullable: true
                    items:
                      type: string
                  displayText:
                    description: Customer facing display context associated with the error
                    type: string
                    nullable: true
      example:
        faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
        errors:
          - errorCode: paymentRefused
            description: JetPay error received with reason code
            paymentMethod: jetpay
            reasons:
              - moneycardMonthlyLimitExceededError
            displayText: An unexpected error has occurred with your payment. Please try a different payment method.
    Paymentorchestration5XxErrorSchema:
      type: object
      description: A HTTP 5xx error response
      properties:
        fault:
          type: object
          description: An object representing the nature of the failure
          required:
            - faultId
          properties:
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            errors:
              type: array
              description: The list of errors
              items:
                type: object
                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
                  description:
                    description: Specific details about the error that may assist you in resolving the issue
                    type: string
                    nullable: true
                  displayText:
                    description: Customer facing display context associated with the error
                    type: string
                    nullable: true
      example:
        faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
        errors:
          - errorCode: paymentFailed
            description: Requested partner doesn't support any payment method
            displayText: An unexpected error has occurred. Please try again or contact support for assistance
    PaymentorchestrationAuthorizeRequest:
      description: The details needed to authorize a native payment transaction
      type: object
      properties:
        paymentMethod:
          description: |
            An identifier used to determine method of payment
          type: string
          nullable: false
        identifier:
          description: |
            A unique payment identifier
          type: string
          minLength: 1
          nullable: false
        paymentToken:
          description: |
            An authorization payment token generated by client device
          type: string
          minimum: 1
        additionalData:
          description: |
            Additional data for Braintree PayPal
          type: object
          nullable: true
          properties:
            payerID:
              type: string
              description: ID of the Payer
            payerEmail:
              type: string
              description: Email of the Payer
            deviceData:
              type: string
              description: Device fingerprint coming from SDK
      required:
        - paymentMethod
        - identifier
        - paymentToken
      additionalProperties: false
    PaymentorchestrationAuthorizeResponse:
      description: Payment authorized
      type: object
      required:
        - orderId
      properties:
        orderId:
          type: string
          description: The Id of the order.
      example:
        orderId: ryuwbcq0vkaj0q0zfiex8w
    PaymentorchestrationOrchestrateRequest:
      description: Details of a payment
      type: object
      properties:
        serviceType:
          description: Type of fulfilment
          type: string
          enum:
            - delivery
            - collection
            - dineIn
        legacyOrderId:
          description: Takeaway order id
          type: string
          nullable: true
        orderId:
          description: Modern order id
          type: string
        orderReference:
          description: The reference used by the customer to identify their order
          type: string
        device:
          type: object
          description: Properties of the ordering device
          properties:
            platform:
              type: string
              description: Type of operating system
              enum:
                - android
                - ios
                - web
            ip:
              description: Public IP address of device
              type: string
        products:
          type: array
          description: Products of the order
          nullable: true
          items:
            $ref: '#/components/schemas/PaymentorchestrationProduct'
        currency:
          type: string
          description: Currency of basket
        deliveryDateTime:
          type: string
          description: Date and time of requested delivery
          format: date-time
        orderDate:
          type: string
          description: Date and time of order placement
          format: date-time
        returnUrl:
          type: string
          description: Return URL for redirection after payment has succeeded.
          format: uri
        paymentMethods:
          type: array
          minLength: 1
          items:
            $ref: '#/components/schemas/PaymentsPaymentType'
        partner:
          type: object
          description: Properties of restaurant/grocery partner
          required:
            - id
            - type
          properties:
            id:
              type: string
              description: Partner id
            type:
              type: string
              description: Business type of partner
              enum:
                - restaurant
                - groceries
            isTest:
              type: boolean
              description: Whether partner is test partner or not
            name:
              type: string
              description: Partner name
              nullable: true
            brand:
              type: string
              description: Partner brand
              nullable: true
            deliveryModel:
              type: string
              description: Partner delivery model
              nullable: true
              enum:
                - marketplace
                - logistics
            cuisines:
              type: array
              description: Partner cuisines
              nullable: true
              items:
                $ref: '#/components/schemas/PaymentorchestrationCuisine'
            address:
              type: object
              description: Partner's address
              nullable: true
              properties:
                city:
                  type: string
                  description: This is the city
                streetAddress:
                  type: array
                  minItems: 1
                  items:
                    type: string
                  description: Street address
                postalCode:
                  type: string
                  description: Postal code
                coordinates:
                  nullable: true
                  description: The only two elements are longitude and latitude.
                  type: array
                  maxItems: 2
                  minItems: 2
                  items:
                    type: number
                    format: double
        costs:
          type: object
          description: Breakdown of costs
          properties:
            productsTotal:
              type: number
              description: Total price of the products excluding discounts
              format: integer
            discountsTotal:
              type: number
              description: Total of discounts
              format: integer
            delivery:
              type: number
              description: Delivery cost
              format: integer
            service:
              type: number
              description: Service fee
              format: integer
            bag:
              type: number
              description: Bag fee
              format: integer
            stampCardDiscount:
              type: number
              description: Bag fee
              format: integer
            voucherDiscountableAmount:
              type: number
              description: Amount that needs to be input for voucher redemption
              format: integer
            alcoholicItemsTotal:
              type: number
              description: Total of products containing alcohol
              format: integer
            driverTipAmount:
              type: number
              description: Driver tip to be paid with the order
              format: integer
        customer:
          type: object
          description: Details of customer
          properties:
            id:
              type: string
              description: Id of customer
            phone:
              type: string
              description: Customer phone number
            registrationDateTime:
              type: string
              description: Customer's registration date and time in ISO-8601 format
              format: date-time
              nullable: true
            role:
              type: string
              description: Role of customer
              enum:
                - guest
                - registered
                - unknown
            firstName:
              description: First name
              type: string
            lastName:
              type: string
              description: Last name
              nullable: true
            language:
              type: string
              description: ISO 639-1 code of customer's requested language
            email:
              type: string
              description: Email address
              format: email
            numberOfOrders:
              type: number
              description: Number of orders placed
              nullable: true
              format: integer
            consumerStatus:
              type: string
              description: Consumer status
              nullable: true
              enum:
                - newConsumer
                - returningConsumer
            deliveryAddress:
              type: object
              description: Delivery address or `null` if collection
              nullable: true
              properties:
                city:
                  type: string
                  description: This is the city
                streetAddress:
                  type: string
                  description: Street address
                postalCode:
                  type: string
                  description: Postal code
                geolocation:
                  type: object
                  description: Physical location
                  nullable: true
                  properties:
                    latitude:
                      type: number
                      description: Latitude in degrees
                    longitude:
                      type: number
                      description: Longitude in degrees
      required:
        - serviceType
        - orderId
        - orderReference
        - device
        - currency
        - deliveryDateTime
        - orderDate
        - returnUrl
        - paymentMethods
        - partner
        - costs
        - customer
    PaymentorchestrationOrchestrateResponse:
      description: Detail of status of payment orchestration and required action
      type: object
      required:
        - type
      properties:
        type:
          type: string
          description: Type of status or action
          enum:
            - authorized
            - native
            - redirect
        voucher:
          description: Voucher that was applied
          nullable: true
          type: object
          required:
            - name
          properties:
            name:
              type: string
              description: Name of the voucher
            isStampCard:
              type: boolean
              description: If voucher is a stamp card
      discriminator:
        propertyName: type
        mapping:
          authorized: '#/components/schemas/PaymentorchestrationOrchestrateResponsesAuthorized'
          native: '#/components/schemas/PaymentorchestrationOrchestrateResponsesNative'
          redirect: '#/components/schemas/PaymentorchestrationOrchestrateResponsesRedirect'
      oneOf:
        - $ref: '#/components/schemas/PaymentorchestrationOrchestrateResponsesAuthorized'
        - $ref: '#/components/schemas/PaymentorchestrationOrchestrateResponsesNative'
        - $ref: '#/components/schemas/PaymentorchestrationOrchestrateResponsesRedirect'
    PaymentorchestrationCuisine:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          description: Identifier of the cuisine
    PaymentorchestrationOrchestrateResponsesAuthorized:
      type: object
      properties:
        type:
          type: string
          description: Payment completed. No need to take further action.
      additionalProperties: false
    PaymentorchestrationOrchestrateResponsesNative:
      type: object
      required:
        - data
      properties:
        type:
          type: string
          description: Client needs to use a native SDK to get a token representing the customer's authorized payment, then send to the [Authorize](#operation/paymentTenantAuthorizePost) endpoint.
        data:
          description: Details for completing payment natively.
          type: object
          properties:
            identifier:
              description: Unique identifier required for the payment to be authorised.
              type: string
            currency:
              description: The currency code in ISO-4217 format.
              type: string
              minLength: 3
              maxLength: 3
            amount:
              description: Confirmation of the total amount that needs to be authorised as minor currency units.
              type: number
              format: integer
            sdkAmount:
              description: Formatted amount that can be passed directly to SDK.
              type: string
            summary:
              description: Basket summary lines for display to the customer upon authorisation
              type: array
              minItems: 1
              items:
                type: object
                properties:
                  label:
                    description: Description of the line item in localised text
                    type: string
                  amount:
                    description: Positive or negative amount in minor currency units.
                    type: number
                    format: integer
                  sdkAmount:
                    description: Formatted amount that can be passed directly to the SDK.
                    type: string
                required:
                  - label
                  - amount
                  - sdkAmount
          required:
            - identifier
            - currency
            - amount
            - sdkAmount
            - summary
      additionalProperties: false
    PaymentorchestrationOrchestrateResponsesRedirect:
      type: object
      required:
        - data
      properties:
        type:
          type: string
          description: Client needs to redirect user to a payment page
        data:
          type: object
          description: Action details
          properties:
            redirectUrl:
              type: string
              description: Target redirection URL
              format: uri
            target:
              $ref: '#/components/schemas/PaymentorchestrationOrchestrateResponsesSharedTarget'
            pollingPageUrl:
              description: The polling page URL used to ensure an accurate payment status.
              type: string
              format: uri
              nullable: true
      additionalProperties: false
      example:
        type: redirect
        data:
          redirectUrl: https://test.adyen.com
          target: internalBrowser
          pollingPageUrl: https://payment-view.payments-view.int.sre-eks-staging-1.tkwy.cloud/status/fakepaymentreference?countryCode=nl&language=nl&returnUrl=fakereturnurl&traceId=faketraceid&hash=fakehash
    PaymentorchestrationOrchestrateResponsesSharedTarget:
      type: string
      description: The target used to complete the payment.
      enum:
        - webView
        - internalBrowser
        - externalBrowser
      nullable: true
    PaymentorchestrationProduct:
      type: object
      required:
        - id
        - name
        - category
        - combinedPrice
      properties:
        id:
          type: string
          description: Identifier of the product
        name:
          type: string
          description: Name of the product
        category:
          type: string
          description: Category of the product
        combinedPrice:
          type: integer
          description: Total price in minor units of the currency for the item including side dishes or any other sub products come with it
    PaymentsPaymentType:
      description: Detail of payment by payment method.
      type: object
      nullable: false
      properties:
        type:
          description: |
            The type of the payment method.

            This corresponds to the `availablePaymentTypes`->`paymentType` in the OK response of the [Payment Options](#operation/paymentTenantPartnersPartnerIdOptionsGet) endpoint.
          type: string
          minLength: 1
          maxLength: 100
          nullable: false
        amount:
          description: |
            Amount to charge for this payment method as minor currency units in ISO-4217 format.

            The amount should not include the fee.
          type: number
          format: integer
          minimum: 1
          nullable: false
        fee:
          description: Fee applied for using this payment method as minor currency units in ISO-4217 format.
          type: number
          format: integer
          minimum: 0
          nullable: true
        additionalData:
          description: Additional data that is required for a particular payment method.
          oneOf:
            - $ref: '#/components/schemas/PaymentsTypesGenericWithDeprecated'
            - $ref: '#/components/schemas/PaymentsTypesVoucher'
            - $ref: '#/components/schemas/PaymentsTypesVouchers'
            - $ref: '#/components/schemas/PaymentsTypesJetPay'
            - $ref: '#/components/schemas/PaymentsTypesCash'
            - $ref: '#/components/schemas/PaymentsTypesJetCredit'
          nullable: true
      required:
        - type
        - amount
      additionalProperties: false
    PaymentsStatusPaymentStatusResponse:
      description: Payment status response.
      type: object
      properties:
        status:
          description: Status of the payment.
          type: string
        redirect:
          description: Redirect url (available for for success, failure, cancelled, expired statuses only).
          type: string
      required:
        - status
      example:
        status: success
        redirect: https://just-eat.co.uk/after-order-example/IK123
    PaymentsTypesCash:
      type: object
      nullable: false
      properties:
        paysWith:
          description: The amount of money that the customer will pay with to the courier.
          type: number
          format: integer
          nullable: true
      additionalProperties: false
    PaymentsTypesGeneric:
      type: object
      nullable: false
      properties:
        choiceId:
          description: When the payment method required a choice to be made, the id of the choice selected by the customer.
          type: string
          nullable: true
        storePaymentDetails:
          description: |
            When this flag is 'true', it will indicate that the user's payment option should be tokenized. (i.e. saved for next checkout).
            If 'false', no payment details will be saved.
          type: boolean
          nullable: true
      additionalProperties: false
    PaymentsTypesGenericWithDeprecated:
      allOf:
        - $ref: '#/components/schemas/PaymentsTypesGeneric'
      properties:
        useOneClickPayment:
          description: |
            When a payment option supports one-click payments, 'true' indicates that, if the customer already has saved payment details, those should be used,
            and if no details are already saved, they should be saved for use next time.
            If 'false', no saved payment details will be used and none will be saved.
          type: boolean
          deprecated: true
          nullable: true
    PaymentsTypesJetCredit:
      type: array
      nullable: false
      items:
        type: object
        description: List of choices.
        properties:
          choices:
            type: object
            nullable: false
            description: List of choices.
            properties:
              choiceId:
                description: The unique identifier of a balance.
                type: string
                nullable: false
    PaymentsTypesJetPay:
      type: object
      nullable: false
      properties:
        purchaseNumber:
          description: Customer's own reference.
          maxLength: 50
          type: string
          nullable: true
      additionalProperties: false
    PaymentsTypesVoucher:
      type: object
      nullable: false
      properties:
        code:
          description: Voucher code to be redeemed.
          type: string
          nullable: false
      required:
        - code
    PaymentsTypesVouchers:
      type: object
      nullable: false
      properties:
        codes:
          type: array
          minItems: 1
          maxItems: 2
          items:
            type: string
          description: Voucher codes to be redeemed.
      required:
        - codes
    PerformanceLateOrdersResponse:
      type: object
      properties:
        totalNumberOfRequests:
          description: Total number of late night orders
          format: int32
          type: number
        averageResponseTimeInSeconds:
          description: Average time to accept late order in seconds
          format: int32
          type: number
        responses:
          description: List of late order responses from restaurant. Returns response type and count.
          type: array
          items:
            description: Type of available response and how many times it was selected.
            type: object
            properties:
              responseType:
                description: The response type for late order
                type: string
              count:
                description: Total number of late orders for the type
                format: int32
                type: integer
    PerformanceRatingsResponse:
      type: object
      properties:
        restaurantId:
          description: Just Eat restaurant identifier
          format: int32
          type: integer
        ratingCount:
          description: Count of ratings
          format: double
          type: number
        delivery:
          description: Average delivery rating
          format: double
          type: number
        periodStart:
          description: UTC date to specify date range start.
          type: string
          format: date-time
        periodEnd:
          description: UTC date to specify date range end.
          type: string
          format: date-time
    PerformanceReorderRateResponse:
      type: object
      properties:
        rate:
          description: Customer reorder rate
          format: double
          type: number
        lastUpdatedUtc:
          description: UTC date to specify last update of reorder rate.
          type: string
          format: date-time
    PerformanceRestaurantResponse:
      type: object
      properties:
        id:
          description: Just Eat restaurant identifier
          format: int32
          type: number
        name:
          description: Restaurant name
          type: string
        address:
          description: Restaurant address
          type: string
        logoUrl:
          description: Restaurant logo url
          type: string
        deliveryType:
          description: Type of restaurant delivery
          format: int32
          type: number
        deliveryRadiusUrl:
          description: Restaurant delivery radius url
          type: string
        goOffLineUrl:
          description: Temporary offline
          type: string
    PerformanceDeliveryOnTheWayResponse:
      type: object
      properties:
        acceptedOrders:
          description: Total value of accepted orders
          format: int32
          type: number
        onTheWayOrders:
          description: Total value of on the way orders
          format: int32
          type: number
        tips:
          description: List of tips for improvement for on the way orders. Returns type of tip and the blog url.
          type: array
          items:
            type: object
            properties:
              findOutMoreLink:
                description: Url for on it's way information
                type: string
              type:
                description: Type of information
                type: string
    PerformanceDeliveryTimesResponse:
      type: object
      properties:
        delivery:
          description: Performance analytics for delivery. Returns accepted orders, orders with added time, average and daily breakdown for additional time
          type: object
          properties:
            acceptedOrders:
              description: Total of accepted orders for delivery
              format: int32
              type: number
            ordersWithAddedTime:
              description: Total of accepted orders with added time for delivery
              format: int32
              type: number
            averageAcceptedTimePerOrder:
              description: Average value of accepted time per order
              format: double
              type: number
            dailyBreakdown:
              description: List of daily breakdown for additional minutes.
              type: array
              items:
                description: Day of the week and additional minutes.
                type: object
                properties:
                  dayOfWeek:
                    description: Number representing day of the week
                    format: int32
                    type: number
                  timeAdded:
                    description: List of added minutes. Returns minutes added and count of minutes added, with 5 minutes increments
                    type: array
                    items:
                      properties:
                        minutes:
                          description: Amount of minutes added
                          format: int32
                          type: number
                        count:
                          description: Count for minutes added for the amount
                          format: int32
                          type: number
            tips:
              description: List of tips for improving score for rejected orders.
              type: array
              items:
                description: Type of improvement tip and the link to information page.
                type: object
                properties:
                  link:
                    description: Link with information for delivery time
                    type: string
                  type:
                    description: Delivery time tip type
                    type: string
        collection:
          description: Performance analytics for collection. Returns accepted orders, orders with added time, average and daily breakdown for additional time
          type: object
          properties:
            acceptedOrders:
              description: Total of accepted orders for collection
              format: int32
              type: number
            ordersWithAddedTime:
              description: Total of accepted orders with added time for collection
              format: int32
              type: number
            averageAcceptedTimePerOrder:
              description: Average value of accepted time per order
              format: double
              type: number
            dailyBreakdown:
              description: List of daily breakdown for additional minutes.
              type: array
              items:
                type: object
                properties:
                  dayOfWeek:
                    description: Number representing day of the week
                    format: int32
                    type: number
                  timeAdded:
                    description: List of added minutes. Returns minutes added and count of minutes added, with 5 minutes increments
                    type: array
                    items:
                      properties:
                        minutes:
                          description: Amount of minutes added
                          format: int32
                          type: number
                        count:
                          description: Count for minutes added for the amount
                          format: int32
                          type: number
            tips:
              description: List of tips for improving score for rejected orders.
              type: array
              items:
                type: object
                properties:
                  link:
                    description: Link with information for collection time
                    type: string
                  type:
                    description: Collection time tip type
                    type: string
    PerformanceOrdersRejectedResponse:
      type: object
      properties:
        restaurantId:
          description: Just Eat restaurant identifier
          format: int32
          type: integer
        totalOrders:
          description: Count of rejected orders
          format: int32
          type: integer
        sets:
          description: List of total rejected orders, key of rejection, total rejected orders and list of rejected orders per reason.
          type: array
          items:
            type: object
            properties:
              key:
                description: The rejected orders key
                type: string
              total:
                description: Total number of rejected orders
                format: int32
                type: integer
              values:
                description: List rejected orders per reason. Returns rejected reason type and total number.
                type: array
                items:
                  type: object
                  properties:
                    key:
                      description: Reason for rejected order
                      type: string
                    value:
                      description: Count of rejected orders
                      format: int32
                      type: integer
        tips:
          description: List of tips for improving score for rejected orders.
          type: array
          items:
            type: object
            properties:
              type:
                description: Category of tips for improving performance score.
                type: string
    PerformanceOrdersTotalsResponse:
      type: object
      properties:
        orderCount:
          description: Count of fulfilled orders
          format: int32
          type: integer
        previousOrderCount:
          description: Count of fulfilled orders from previous week
          format: int32
          type: integer
        days:
          description: Average value of daily fulfilled orders.
          type: object
          properties:
            mon:
              description: Average value of fulfilled orders for Monday
              format: double
              type: number
            tue:
              description: Average value of fulfilled orders for Tuesday
              format: double
              type: number
            wed:
              description: Average value of fulfilled orders for Wednesday
              format: double
              type: number
            thu:
              description: Average value of fulfilled orders for Thursday
              format: double
              type: number
            fri:
              description: Average value of fulfilled orders for Friday
              format: double
              type: number
            sat:
              description: Average value of fulfilled orders for Saturday
              format: double
              type: number
            sun:
              description: Average value of fulfilled orders for Sunday
              format: double
              type: number
        averageWeeklyOrders:
          description: Average value of weekly fulfilled orders
          format: double
          type: number
    PerformanceScoreHistoryResponse:
      type: object
      properties:
        orderScore:
          description: Overall orders performance score for the last 28 days
          format: double
          type: number
        averageOverallScore:
          description: Average overall score
          format: double
          type: number
        customerExperienceScore:
          description: Overall customer experience for the last 28 days
          format: double
          type: number
        performanceScore:
          description: Performance score for the last 28 days
          format: double
          type: number
        performanceScores:
          description: List of performance score per day, for the last 28 days. Overall score and timestamp is returned.
          type: array
          items:
            type: object
            properties:
              overallScore:
                description: Overall daily score
                format: double
                type: number
              timestampUtc:
                description: The UTC date and time
                type: string
                format: date-time
        tips:
          description: List of tips for performance improvement. Type of tip is returned.
          type: array
          items:
            type: object
            properties:
              type:
                description: Type of performance score information
                type: string
    PhonemaskingTwiMlResult:
      properties:
        data:
          readOnly: true
          description: set of special TwiML instructions defined by Twilio that will be executed
          type: string
      type: object
    PhonemaskingTwilioIncomingMessageCallbackRequest:
      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
    PhonemaskingTwilioIncomingVoiceCallbackRequest:
      properties:
        from:
          description: The number of the caller in E.164 format
          type: string
        digits:
          description: Any digits the caller has entered on their phone
          type: string
      type: object
    PhonemaskingTwilioProxyOutOfSessionCallbackRequest:
      properties:
        from:
          description: The number the call or text message is from in E.164 format
          type: string
        sessionDateEnded:
          nullable: true
          description: The date and time in which the proxy session ended
          type: string
        callSid:
          description: A unique identifier for the call, generated by Twilio
          type: string
        smsSid:
          description: A unique identifier for the sms, generated by Twilio
          type: string
        sessionSid:
          description: A unique identifier for the proxy session, generated by Twilio
          type: string
      type: object
    PhonemaskinginteractionsTwilioInteractionCallbackRequest:
      properties:
        outboundResourceUrl:
          description: The URL of the Twilio outbound resource
          type: string
        outboundResourceType:
          description: The outbound resource type
          type: string
        inboundResourceType:
          description: The inbound resource type
          type: string
        inboundResourceSid:
          description: The SID of the inbound resource
          type: string
        outboundResourceSid:
          description: The SID of the outbound resource
          type: string
        interactionType:
          description: The Type of the Interaction
          type: string
        interactionData:
          description: A JSON string that includes the message body of message interactions
          type: string
        inboundParticipantSid:
          description: The SID of the inbound Participant resource
          type: string
        interactionSid:
          description: The unique string to identify the Interaction resource
          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
        outboundParticipantSid:
          description: The SID of the outbound Participant
          type: string
        interactionServiceSid:
          description: The SID of the parent Service resource
          type: string
        interactionSessionSid:
          description: The SID of the parent Session resource
          type: string
        outboundResourceStatus:
          description: The outbound resource status of the Interaction
          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
        inboundResourceStatus:
          description: The inbound resource status of the Interaction
          type: string
      type: object
    PreorderFirstAvailableTimeUtc:
      type: object
      description: Pre-order first available delivery and collection times in UTC date time.
      properties:
        delivery:
          description: First available delivery date time [YYYY-MM-DDThh:mm:ssZ (UTC)]
          type: string
          format: date-time
        collection:
          description: First available collection date time [YYYY-MM-DDThh:mm:ssZ (UTC)]
          type: string
          format: date-time
    PreorderPreOrderAvailability:
      type: object
      properties:
        FirstAvailableTimeUtc:
          $ref: '#/components/schemas/PreorderFirstAvailableTimeUtc'
          type: object
        CutOffDateTimeUtc:
          description: Cut-off date time [YYYY-MM-DDThh:mm:ssZ (UTC)]
          nullable: true
          type: string
          format: date-time
      description: Pre-order first availability and cut-off time information.
      nullable: true
    ProblematicOrdersClaimRequest:
      type: object
      description: Claim request details
      properties:
        agentName:
          type: string
          description: The name of the agent
        browserAgent:
          type: string
          description: The browser agent
        ipAddress:
          type: string
          description: The IP address of the user
    ProblematicOrdersGetProblematicOrdersResponse:
      type: object
      description: Response for problematic orders
      properties:
        problematicOrders:
          type: array
          items:
            type: object
            description: Details of a problematic order
            properties:
              agentName:
                type: string
                description: The name of the agent assigned to the order
              currentDueDate:
                type: string
                format: date-time
                description: The current due date of the order
              customer:
                type: object
                description: Details of a customer
                properties:
                  email:
                    type: string
                    description: The email of the customer
                  phoneNumber:
                    type: string
                    description: The phone number of the customer
                  timeZone:
                    type: string
                    description: The time zone of the customer
              dispatchMethod:
                type: string
                description: The dispatch method for the order
                enum:
                  - delivery
                  - collection
              friendlyOrderId:
                type: string
                description: The friendly order id
              orderId:
                type: string
                description: The order id
              paymentType:
                type: string
                description: The payment type for the order
                enum:
                  - Cash
                  - Card
              placedDate:
                type: string
                format: date-time
                description: The date and time the order was placed
              reasons:
                type: array
                items:
                  type: object
                  description: Details of a problem reason
                  properties:
                    description:
                      type: string
                      description: The description of the problem reason
                    reasonCode:
                      type: string
                      description: The code for the problem reason
              restaurant:
                type: object
                description: Details of a restaurant
                properties:
                  name:
                    type: string
                    description: The name of the restaurant
                  id:
                    type: string
                    description: The id of the restaurant
                  phoneNumber:
                    type: string
                    description: The phone number of the restaurant
                  postcode:
                    type: string
                    description: The postcode of the restaurant
        totalOrders:
          type: integer
          description: The total number of problematic orders
    ProblematicOrdersResendRequest:
      type: object
      description: Resend request details
      properties:
        agentName:
          type: string
          description: The name of the agent
    ProductCustomizationsCustomization:
      type: object
      required:
        - id
        - type
        - validationStatus
        - orderedAt
        - variation
      properties:
        id:
          type: string
          description: Id of the item
          example: 717434f9-fe1e-4425-8b0d-8bae0b6b7592
        type:
          type: string
          description: The type of the item, whether it's a menu item or a deal
          example: menuitem
        validationStatus:
          type: string
          description: The validation status for the customizations, stating if a customization is full or partial
          enum:
            - full
            - partial
          example: full
        orderedAt:
          type: string
          description: The date and time in UTC when the customized product was ordered, formatted as an ISO 8601 timestamp"
          format: date-time
          example: '2025-02-18T09:13:14Z'
        customerNotes:
          type: string
          description: The customer notes applied to the ordered product
          nullable: true
        variation:
          $ref: '#/components/schemas/ProductCustomizationsVariation'
    ProductCustomizationsDealGroup:
      type: object
      required:
        - id
        - variations
      properties:
        id:
          type: string
          description: Id of the deal group
          example: 123-deal-group
        variations:
          description: The variations inside the deal group
          type: array
          items:
            $ref: '#/components/schemas/ProductCustomizationsVariation'
    ProductCustomizationsModifier:
      type: object
      required:
        - id
        - quantity
      properties:
        id:
          type: string
          description: Id of the modifier
          example: '123'
        quantity:
          description: The quantity applied to the modifier
          type: integer
          minimum: 1
          default: 1
          example: 2
    ProductCustomizationsModifierGroup:
      type: object
      required:
        - id
        - modifiers
      properties:
        id:
          type: string
          description: Id of the modifier group
          example: 123-mod-group
        modifiers:
          description: The modifier groups applied to the variation
          type: array
          items:
            $ref: '#/components/schemas/ProductCustomizationsModifier'
    ProductCustomizationsProductCustomizationsResponse:
      type: object
      required:
        - customizations
      properties:
        customizations:
          description: The customization details for the item
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ProductCustomizationsCustomization'
    ProductCustomizationsVariation:
      type: object
      description: The customized variation
      required:
        - id
        - quantity
      properties:
        id:
          type: string
          description: Id of the variation
          example: '123456'
        quantity:
          type: integer
          description: The quantity selected for the variation
          example: 1
        modifierGroups:
          description: The modifier groups applied to the variation
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ProductCustomizationsModifierGroup'
        dealGroups:
          description: The deal groups applied to the variation
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ProductCustomizationsDealGroup'
    ProductDetailsProductDetailsResponse:
      description: Response containing a Semantic UI component tree of product details. Returns structured product information including dietary data, nutritional content, ingredients, and preparation guidance.
      type: object
      required:
        - productInformation
      properties:
        productInformation:
          type: object
          nullable: false
          required:
            - type
            - data
          properties:
            type:
              type: string
              description: The type of the root component; always a container.
              enum:
                - container
            meta:
              type: object
              description: Metadata for the product information.
              nullable: true
              additionalProperties: true
            data:
              type: object
              description: Data payload for the product information.
              nullable: false
              properties:
                items:
                  type: array
                  description: Top-level sections of the product detail page, each rendered as a collapsible container.
                  items:
                    $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesContainer'
        weightedItemNotice:
          type: object
          description: Notice displayed for weighted items indicating that prices are estimates and final charges may vary.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesTag'
        registry:
          type: object
          nullable: true
          properties:
            analytics:
              description: Analytics triggers for the response.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CatalogueSharedEntitiesAnalyticsRegistry'
    ProductInformationAdditive:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          description: The type of additive
          example: caffeine
        warnings:
          type: array
          description: An array of additive warnings
          example:
            - caffeineHighContentBeverage
          items:
            type: string
    ProductInformationAdditives:
      required:
        - provided
      type: object
      description: The Additives details for a product
      properties:
        provided:
          type: boolean
          description: An explicit property indicating whether additive data has been provided by the restaurant partner
          nullable: false
        dataSource:
          type: string
          description: The source of the additive data; Databank, Partner or Prediction
          example: databank
          nullable: true
          enum:
            - databank
            - partner
            - prediction
        validated:
          type: boolean
          description: Whether the additive data has been validated
          nullable: true
        additiveSets:
          type: array
          description: The list of additives for this product
          nullable: true
          items:
            $ref: '#/components/schemas/ProductInformationAdditive'
    ProductInformationAllergen:
      type: object
      required:
        - level
        - type
      properties:
        level:
          type: string
          description: The containment level; contains or mayContain
          example: contains
          enum:
            - contains
            - mayContain
        type:
          type: string
          description: The type of allergen
          example: peanut
        subTypes:
          type: array
          description: An array of allergen sub types, may be empty
          example:
            - walnut
            - almond
          items:
            type: string
    ProductInformationAllergens:
      required:
        - provided
      type: object
      description: The Allergen details for a product
      properties:
        provided:
          type: boolean
          description: An explicit property indicating whether allergen data has been provided by the restaurant partner
          nullable: false
        dataSource:
          type: string
          description: The source of the allergen data; Databank, Partner or Prediction
          example: databank
          nullable: true
          enum:
            - databank
            - partner
            - prediction
        validated:
          type: boolean
          description: Whether the allergen data has been validated
          nullable: true
        allergenSets:
          type: array
          description: The list of allergens for this product
          nullable: true
          items:
            $ref: '#/components/schemas/ProductInformationAllergen'
    ProductInformationProductInformationResponse:
      type: object
      required:
        - restaurantId
        - productType
        - productId
        - allergens
      properties:
        restaurantId:
          description: The id of the restaurant partner
          example: Rest1234
          type: string
          nullable: false
        productType:
          description: The type of product; variation or modifier
          example: variation
          type: string
          nullable: false
          enum:
            - variation
            - modifier
        productId:
          description: The id of the variation or modifier
          example: '56789'
          type: string
          nullable: false
        allergens:
          description: The allergen details for the product
          type: object
          nullable: false
          $ref: '#/components/schemas/ProductInformationAllergens'
        additives:
          description: The additive details for the product
          type: object
          nullable: false
          $ref: '#/components/schemas/ProductInformationAdditives'
        additionalInformation:
          description: |
            Additional information about the product.  This field will soon be deprecated and is used for compatibility with L-TA menus.
          example: 100,000 to 225,000 on the Scoville Heat Scale
          type: string
          nullable: true
          maxLength: 7000
    ProductsRestrictionsProductRestrictionItem:
      type: object
      properties:
        id:
          type: string
          description: Encrypted Id of product
        category:
          type: string
          description: Category of restriction
        age:
          type: integer
          nullable: true
          description: Age information of restriction
        amount:
          type: object
          description: Amount of restriction
          properties:
            value:
              type: integer
              description: Value
            scale:
              type: integer
              description: Scale number to get precision
            unit:
              type: string
              description: Unit of amount
    ProductsRestrictionsProductRestrictionResponse:
      type: object
      properties:
        dependencies:
          type: array
          items:
            type: object
            description: Dependency Group
            properties:
              id:
                type: string
                description: Tag Id
              dependency:
                type: array
                description: Grouped tags
                items:
                  type: string
                  description: Tag Id
        products:
          type: array
          items:
            $ref: '#/components/schemas/ProductsRestrictionsProductRestrictionItem'
        addons:
          type: array
          items:
            $ref: '#/components/schemas/ProductsRestrictionsProductRestrictionItem'
      example:
        dependencies:
          - id: age_soft_alcohol
            dependency:
              - age_hard_alcohol
        products:
          - id: 33Q535P
            category: age_hard_alcohol
            age: 18
            amount:
              value: 500
              scale: 100
              unit: '%'
        addons:
          - id: 44Q535P
            category: age_soft_alcohol
            age: 16
            amount:
              value: 50
              scale: 100
              unit: '%'
    PromotedPlacementActivePlacement:
      properties:
        status:
          type: object
          description: Contains status information for different aspects of this placement. 'normal' status is assumed if no additional status information is available.
          properties:
            budget:
              properties:
                code:
                  enum:
                    - budgetLow
                    - budgetExhausted
                  description: The status code that describes this placement's current budget status.
                  type: string
              required:
                - code
              description: The budget status of this placement.
              additionalProperties: true
            contract:
              $ref: '#/components/schemas/PromotedPlacementActivePlacementContractStatus'
            pause:
              properties:
                code:
                  enum:
                    - paused
                  description: The status code that describes this placement's pause status.
                  type: string
                pauseDate:
                  format: date-time
                  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".
                  type: string
                resumeDate:
                  format: date-time
                  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.
                  type: string
              required:
                - code
              description: The pause status of this placement.
              additionalProperties: true
        weeklyBudget:
          $ref: '#/components/schemas/PromotedPlacementWeeklyBudgetStatus'
        purchaseDate:
          format: date-time
          description: The UTC date and time at which this placement was purchased.
          type: string
        salesChannel:
          type: string
          description: The source of the placement's sale.
          enum:
            - telesales
            - selfService
        startDate:
          format: date-time
          description: The UTC date and time at which this placement started, or will start.
          type: string
        deliveryArea:
          description: The location that the placement applies to.
          type: string
        placementId:
          description: The unique identifier of the placement.
          type: string
        availableActions:
          items:
            enum:
              - adjustBudget
              - cancelAtEndOfWeek
              - cancelAtSpecifiedTime
              - cancelImmediately
              - pause
              - resume
              - undoCancel
            type: string
          description: A list of the currently supported actions for this placement.
          type: array
      type: object
      required:
        - availableActions
        - placementId
        - deliveryArea
        - purchaseDate
        - startDate
        - salesChannel
        - weeklyBudget
        - status
      additionalProperties: true
      example:
        status:
          pause:
            code: paused
            pauseDate: '2021-01-14T12:02:32.0000000+00:00'
            resumeDate: '2021-02-12T00:00:00.0000000+00:00'
        weeklyBudget:
          recommended: 13000
          minimumAllowable: 500
          total: 13000
          maximumAllowable: 100000
          remaining: 5000
        purchaseDate: '2021-01-01T14:45:00.0000000+00:00'
        startDate: '2021-01-01T14:45:00.0000000+00:00'
        deliveryArea: NW6
        placementId: '100005'
        salesChannel: telesales
        availableActions:
          - adjustBudget
          - resume
          - cancelAtEndOfWeek
          - cancelImmediately
    PromotedPlacementActivePlacementCancelledContractStatus:
      allOf:
        - $ref: '#/components/schemas/PromotedPlacementActivePlacementContractStatus'
        - additionalProperties: true
          type: object
          required:
            - code
            - endDate
          properties:
            endDate:
              format: date-time
              type: string
              description: The UTC date and time at which this placement will end.
    PromotedPlacementActivePlacementContractStatus:
      anyOf:
        - $ref: '#/components/schemas/PromotedPlacementActivePlacementCancelledContractStatus'
        - $ref: '#/components/schemas/PromotedPlacementActivePlacementNonCancellablePeriodContractStatus'
      properties:
        code:
          description: The status code that describes this placement's contract status.
          type: string
          enum:
            - cancelled
            - inNonCancellablePeriod
      discriminator:
        propertyName: code
        mapping:
          cancelled: '#/components/schemas/PromotedPlacementActivePlacementCancelledContractStatus'
          inNonCancellablePeriod: '#/components/schemas/PromotedPlacementActivePlacementNonCancellablePeriodContractStatus'
      additionalProperties: true
      type: object
      description: The status of this placement's contract.
      required:
        - code
      x-abstract: true
    PromotedPlacementActivePlacementNonCancellablePeriodContractStatus:
      allOf:
        - $ref: '#/components/schemas/PromotedPlacementActivePlacementContractStatus'
        - additionalProperties: true
          type: object
          required:
            - code
            - cancellableAfterDate
          properties:
            cancellableAfterDate:
              format: date-time
              type: string
              description: The UTC date and time after which this placement may be cancelled.
    PromotedPlacementActivePlacementsForRestaurantResponse:
      properties:
        contract:
          properties:
            nonCancellablePeriodEndDate:
              format: date-time
              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.
              type: string
          description: Information about the contract for this restaurant.
          type: object
        restaurantEligibility:
          $ref: '#/components/schemas/PromotedPlacementRestaurantEligibility'
        metadata:
          $ref: '#/components/schemas/PromotedPlacementMetadata'
        placements:
          items:
            $ref: '#/components/schemas/PromotedPlacementActivePlacement'
          description: List of promoted placements active for a given restaurant.
          type: array
      type: object
      required:
        - restaurantEligibility
        - metadata
        - placements
      additionalProperties: true
      example:
        metadata:
          currency: GBP
          timeZone: Europe/London
          effectiveDate: '2021-01-14T17:30:00.0000000+00:00'
        restaurantEligibility:
          isEligible: false
          customerExperienceScore:
            score: 12
            requiredScore: 25
            hasPassed: false
          hygiene:
            hasPassed: true
        placements:
          - status:
              pause:
                code: paused
                pauseDate: '2021-01-14T12:02:32.0000000+00:00'
                resumeDate: '2021-02-12T00:00:00.0000000+00:00'
              placement:
                code: cancelled
                endDate: '2021-01-17T23:59:59.0000000+00:00'
            weeklyBudget:
              recommended: 13000
              minimumAllowable: 500
              total: 13000
              maximumAllowable: 100000
              remaining: 5000
            purchaseDate: '2021-01-01T14:45:00.0000000+00:00'
            startDate: '2021-01-01T14:45:00.0000000+00:00'
            deliveryArea: NW6
            placementId: '100001'
            salesChannel: selfService
            availableActions:
              - adjustBudget
              - cancelImmediately
              - resume
              - undoCancel
          - status:
              budget:
                code: budgetLow
            weeklyBudget:
              recommended: 14000
              minimumAllowable: 500
              total: 13000
              maximumAllowable: 110000
              remaining: 210
            purchaseDate: '2021-01-01T14:47:34.0000000+00:00'
            startDate: '2021-01-01T14:47:34.0000000+00:00'
            deliveryArea: NW5
            placementId: '100002'
            salesChannel: selfService
            availableActions:
              - adjustBudget
              - cancelAtEndOfWeek
              - cancelAtSpecifiedTime
              - cancelImmediately
              - pause
          - status:
              placement:
                code: cancelled
                endDate: '2021-01-17T23:59:59.0000000+00:00'
            weeklyBudget:
              recommended: 14000
              minimumAllowable: 500
              total: 13000
              maximumAllowable: 100000
              remaining: 3200
            purchaseDate: '2021-01-01T14:51:12.0000000+00:00'
            startDate: '2021-01-01T14:51:12.0000000+00:00'
            deliveryArea: NW4
            placementId: '100003'
            salesChannel: telesales
            availableActions:
              - adjustBudget
              - cancelImmediately
              - undoCancel
          - status:
              budget:
                code: budgetExhausted
            weeklyBudget:
              recommended: 14000
              minimumAllowable: 500
              total: 13000
              maximumAllowable: 100000
              remaining: 0
            purchaseDate: '2021-01-01T14:51:12.0000000+00:00'
            startDate: '2021-01-01T14:51:12.0000000+00:00'
            deliveryArea: NW3
            placementId: '100004'
            salesChannel: telesales
            availableActions:
              - adjustBudget
              - pause
              - cancelAtEndOfWeek
              - cancelAtSpecifiedTime
              - cancelImmediately
    PromotedPlacementAvailablePlacement:
      required:
        - deliveryArea
        - weeklyBudget
      additionalProperties: true
      type: object
      example:
        weeklyBudget:
          maximumAllowable: 100000
          minimumAllowable: 500
          recommended: 13000
        deliveryArea: NW6
      properties:
        weeklyBudget:
          $ref: '#/components/schemas/PromotedPlacementWeeklyBudgetRecommendation'
        deliveryArea:
          description: The location that is available for starting a placement.
          type: string
    PromotedPlacementAvailablePlacementsForRestaurantResponse:
      properties:
        restaurantEligibility:
          $ref: '#/components/schemas/PromotedPlacementRestaurantEligibility'
        metadata:
          $ref: '#/components/schemas/PromotedPlacementMetadata'
        placements:
          items:
            $ref: '#/components/schemas/PromotedPlacementAvailablePlacement'
          description: List of promoted placements available for purchase for a given restaurant.
          type: array
      type: object
      required:
        - restaurantEligibility
        - metadata
        - placements
      example:
        metadata:
          currency: GBP
          timeZone: Europe/London
          effectiveDate: '2021-01-14T17:30:00.0000000+00:00'
        restaurantEligibility:
          isEligible: false
          customerExperienceScore:
            score: 12
            requiredScore: 25
            hasPassed: false
          hygiene:
            hasPassed: true
        placements:
          - deliveryArea: NW6
            weeklyBudget:
              minimumAllowable: 500
              maximumAllowable: 100000
              minimumRecommended: 1000
              recommended: 13000
          - deliveryArea: NW5
            weeklyBudget:
              minimumAllowable: 500
              maximumAllowable: 100000
              minimumRecommended: 1000
              recommended: 14000
          - deliveryArea: NW4
            weeklyBudget:
              minimumAllowable: 500
              maximumAllowable: 100000
              minimumRecommended: 1000
              recommended: 14000
          - deliveryArea: NW3
            weeklyBudget:
              minimumAllowable: 500
              maximumAllowable: 100000
              minimumRecommended: 1000
              recommended: 14000
      additionalProperties: true
    PromotedPlacementCampaignInsights:
      required:
        - reports
      additionalProperties: true
      type: object
      properties:
        reports:
          description: Reports keyed by the name of specific time periods.
          additionalProperties:
            $ref: '#/components/schemas/PromotedPlacementInsightsReport'
          type: object
        metadata:
          $ref: '#/components/schemas/PromotedPlacementMetadata'
      example:
        metadata:
          currency: GBP
          timeZone: Europe/London
          effectiveDate: '2021-01-22T17:30:00.0000000+00:00'
        reports:
          last-7-days:
            period:
              createdAt: '2021-01-22T08:06:14.199Z'
              startDate: '2021-01-15'
              endDate: '2021-01-21'
            data:
              overall:
                newCustomers: 50
                menuViews: 309
                orders: 165
                orderValue: 315910
              promotedPlacement:
                newCustomers: 17
                menuViews: 225
                orders: 48
                orderValue: 96090
                placementSpend: 14190
          last-28-days:
            period:
              createdAt: '2021-01-22T08:06:14.278Z'
              startDate: '2020-12-25'
              endDate: '2021-01-21'
            data:
              overall:
                newCustomers: 198
                menuViews: 1236
                orders: 660
                orderValue: 1137241
              promotedPlacement:
                newCustomers: 67
                menuViews: 922
                orders: 250
                orderValue: 403212
                placementSpend: 60630
    PromotedPlacementCancelPlacementAtEndOfWeekRequest:
      allOf:
        - $ref: '#/components/schemas/PromotedPlacementCancelPlacementRequest'
        - example:
            cancellationEffective: atEndOfWeek
    PromotedPlacementCancelPlacementAtSpecifiedTimeRequest:
      allOf:
        - $ref: '#/components/schemas/PromotedPlacementCancelPlacementRequest'
        - properties:
            cancellationTime:
              format: date-time
              description: The UTC time at which the cancellation should take effect.
              type: string
          required:
            - cancellationTime
          example:
            cancellationEffective: atSpecifiedTime
            cancellationTime: '2021-10-03T23:59:59Z'
    PromotedPlacementCancelPlacementRequest:
      anyOf:
        - $ref: '#/components/schemas/PromotedPlacementCancelPlacementAtSpecifiedTimeRequest'
        - $ref: '#/components/schemas/PromotedPlacementCancelPlacementAtEndOfWeekRequest'
      discriminator:
        propertyName: cancellationEffective
        mapping:
          atSpecifiedTime: '#/components/schemas/PromotedPlacementCancelPlacementAtSpecifiedTimeRequest'
          atEndOfWeek: '#/components/schemas/PromotedPlacementCancelPlacementAtEndOfWeekRequest'
      example:
        cancellationEffective: atSpecifiedTime
        cancellationTime: '2021-10-03T23:59:59Z'
      properties:
        cancellationEffective:
          type: string
          enum:
            - atSpecifiedTime
            - atEndOfWeek
          description: When the cancellation should take effect.
      type: object
      required:
        - cancellationEffective
      additionalProperties: true
      x-abstract: true
    PromotedPlacementCandidateRestaurant:
      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
      example:
        rank: 1
        metadata:
          key: value
        restaurantId: '1234'
      additionalProperties: true
    PromotedPlacementCandidateRestaurantsResponse:
      properties:
        candidateRestaurants:
          items:
            $ref: '#/components/schemas/PromotedPlacementCandidateRestaurant'
          description: An array of candidate restaurants that are available for Promoted Placement.
          type: array
        metadata:
          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
          description: Contains additional metadata that may affect the rendering of Promoted Placement candidate restaurants.
          additionalProperties: true
      type: object
      example:
        candidateRestaurants:
          - rank: 1
            restaurantId: '1234'
          - rank: 2
            restaurantId: '4567'
          - rank: 3
            restaurantId: '3245'
        metadata:
          availableFilteredPositions: 2
          availableUnfilteredPositions: 5
      additionalProperties: false
    PromotedPlacementCandidateRestaurantsResponseV2:
      properties:
        restaurants:
          items:
            type: object
            required:
              - rank
              - restaurantId
            properties:
              rank:
                description: |-
                  The relative rank of this candidate restaurant in relation to others in the response. 
                  For Promoted Placement - a smaller number indicates that this restaurant should be shown closer to the beginning of the list.
                  For Top Rank - a smaller number indicates that this restaurant has the bigger boosting score value. This value should be between 0 and 1.
                type: number
                format: float
              restaurantId:
                description: The unique identifier of the candidate restaurant.
                type: string
              chainBoost:
                description: This indicates whether the restaurant was ranked due to a chain boost.
                type: boolean
              demandDownRank:
                description: |-
                  This indicates whether the restaurant has been "demand-down-ranked". This can be used to ensure consistency
                  between both upstream and downstream services.
                type: boolean
          description: An array of available restaurants.
          type: array
        metadata:
          required:
            - mode
          properties:
            mode:
              description: The product type supported in the current market.
              enum:
                - promotedPlacement
                - topRank
              type: string
            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
          description: Contains additional metadata that can be used to affect the rendering of candidate restaurants.
          additionalProperties: true
      type: object
      example:
        restaurants:
          - rank: 1
            restaurantId: '1234'
          - rank: 2
            restaurantId: '4567'
          - rank: 3
            restaurantId: '3245'
        metadata:
          mode: promotedPlacement
          availableFilteredPositions: 2
          availableUnfilteredPositions: 5
      additionalProperties: false
    PromotedPlacementCreatePlacementRequest:
      type: object
      anyOf:
        - $ref: '#/components/schemas/PromotedPlacementCreatePlacementViaSelfServiceRequest'
        - $ref: '#/components/schemas/PromotedPlacementCreatePlacementViaTelesalesRequest'
      discriminator:
        propertyName: salesChannel
        mapping:
          selfService: '#/components/schemas/PromotedPlacementCreatePlacementViaSelfServiceRequest'
          telesales: '#/components/schemas/PromotedPlacementCreatePlacementViaTelesalesRequest'
      properties:
        salesChannel:
          type: string
          enum:
            - telesales
            - selfService
          description: The sales channel for this placement.
        deliveryArea:
          type: string
          description: The location for which to buy the placement.
        weeklyBudget:
          type: integer
          description: The initial weekly budget for the placement in the smallest unit of local currency (e.g., pence).
          format: int32
          minimum: 0
          maximum: 100000
          exclusiveMinimum: true
      required:
        - salesChannel
        - deliveryArea
      additionalProperties: true
      x-abstract: true
      example:
        salesChannel: telesales
        deliveryArea: NW6
        isFreePlacement: false
        remainderOfFirstWeekIsFree: true
        weeklyBudget: 13000
        nonCancellablePeriodDurationWeeks: 5
    PromotedPlacementCreatePlacementViaSelfServiceRequest:
      allOf:
        - $ref: '#/components/schemas/PromotedPlacementCreatePlacementRequest'
        - required:
            - weeklyBudget
      example:
        salesChannel: selfService
        deliveryArea: NW6
        weeklyBudget: 13000
    PromotedPlacementCreatePlacementViaTelesalesRequest:
      allOf:
        - $ref: '#/components/schemas/PromotedPlacementCreatePlacementRequest'
        - properties:
            isFreePlacement:
              description: A value indicating whether the placement is free.
              type: boolean
            remainderOfFirstWeekIsFree:
              description: A value indicating whether the restaurant will be given a free trial lasting until the end of the first week of the placement contract.
              type: boolean
            nonCancellablePeriodDurationWeeks:
              nullable: true
              type: integer
              description: The duration of the initial fixed term of the contract before switching to a rolling one-week contract.
              format: int32
              minimum: 1
              maximum: 6
            startDate:
              format: date-time
              description: The UTC date and time at which this placement should start. If specified, this must be in the future.
              type: string
          required:
            - isFreePlacement
            - remainderOfFirstWeekIsFree
      example:
        salesChannel: telesales
        deliveryArea: NW6
        isFreePlacement: false
        remainderOfFirstWeekIsFree: true
        weeklyBudget: 13000
        nonCancellablePeriodDurationWeeks: 5
        startDate: '2021-01-01T14:45:00.0000000+00:00'
    PromotedPlacementCustomerExperienceScoreDetail:
      type: object
      description: The details of how the customer experience score has contributed to the restaurant's promoted placement eligibility.
      properties:
        score:
          description: The customer experience score achieved by the restaurant.
          type: number
          format: double
        requiredScore:
          description: The customer experience score required to pass the customer experience score criteria.
          type: number
          format: double
        hasPassed:
          description: Represents if the restaurant has passed the customer experience score criteria.
          type: boolean
      required:
        - requiredScore
        - hasPassed
      example:
        score: 12
        requiredScore: 25
        hasPassed: false
    PromotedPlacementHygieneScoreDetail:
      type: object
      description: The details of how the hygiene rating has contributed to the restaurant's promoted placement eligibility.
      properties:
        hasPassed:
          description: Represents if the restaurant has passed the hygiene rating criteria.
          type: boolean
      required:
        - hasPassed
      example:
        hasPassed: true
    PromotedPlacementInsightsReport:
      required:
        - period
        - data
      additionalProperties: true
      type: object
      description: A report for a given time period.
      properties:
        period:
          required:
            - createdAt
            - startDate
            - endDate
          description: Describes the time period for this report.
          properties:
            startDate:
              description: The start date of this report period.
              format: date
              type: string
            endDate:
              description: The end date of this report period.
              format: date
              type: string
            createdAt:
              description: The UTC time at which this report was generated.
              format: date-time
              type: string
          type: object
        data:
          description: The placement insights data for this report period.
          properties:
            promotedPlacement:
              required:
                - newCustomers
                - menuViews
                - orders
                - orderValue
                - placementSpend
              additionalProperties: true
              type: object
              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
                placementSpend:
                  description: The total amount spent on promoted placement in the smallest unit of local currency (e.g., pence).
                  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
            overall:
              required:
                - newCustomers
                - menuViews
                - orders
                - orderValue
              additionalProperties: true
              type: object
              description: Total values for this period.
              properties:
                newCustomers:
                  description: The total number of new customers.
                  format: int32
                  type: integer
                menuViews:
                  description: The total number of menu views.
                  format: int32
                  type: integer
                orders:
                  description: The total number of orders.
                  format: int32
                  type: integer
                orderValue:
                  description: The total order value in the smallest unit of local currency (e.g., pence).
                  format: int32
                  type: integer
          additionalProperties: true
          type: object
    PromotedPlacementMetadata:
      type: object
      properties:
        timeZone:
          description: The restaurant's timezone in IANA format, e.g., Europe/London.
          type: string
        currency:
          description: The currency used for the budget data in ISO 4217 format, e.g., GBP, EUR or AUD.
          type: string
        effectiveDate:
          format: date-time
          description: The UTC time at which the request was processed for relative time calculations.
          type: string
      required:
        - timeZone
        - currency
        - effectiveDate
      description: Additional metadata that may assist the rendering of the response.
      additionalProperties: true
    PromotedPlacementRankingRequest:
      type: object
      required:
        - restaurants
      properties:
        restaurants:
          type: array
          description: An array of restaurants.
          items:
            $ref: '#/components/schemas/PromotedPlacementRankingRequestRestaurant'
        postalCode:
          type: string
          description: |-
            Postcode or name of the location for which to return restaurant candidates.
            Use `geolocation` instead to specify the location where available.
        geolocation:
          description: The geolocation of the user.
          $ref: '#/components/schemas/SharedGeoJsonPoint'
          nullable: true
      example:
        restaurants:
          - id: '123123'
          - id: '456456'
          - id: '789789'
        postalCode: EC4M 7RF
        geolocation:
          coordinates:
            - 51.501285
            - -0.142442
          type: point
    PromotedPlacementRankingRequestRestaurant:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          description: The unique identifier of the restaurant.
    PromotedPlacementRestaurantEligibility:
      type: object
      description: Represents the details of restaurant's promoted placement eligibility.
      properties:
        customerExperienceScore:
          $ref: '#/components/schemas/PromotedPlacementCustomerExperienceScoreDetail'
        hygiene:
          $ref: '#/components/schemas/PromotedPlacementHygieneScoreDetail'
        isEligible:
          description: Represents if the restaurant is eligible to use promoted placement.
          type: boolean
      required:
        - customerExperienceScore
        - isEligible
    PromotedPlacementRestaurantPromotedPlacementInfo:
      properties:
        defaultPromoted:
          description: Should be promoted by default
          type: boolean
        restaurantId:
          description: Id of the restaurant
          type: string
      example:
        defaultPromoted: true
        restaurantId: '84335'
      type: object
    PromotedPlacementWeeklyBudgetRecommendation:
      type: object
      description: Contains information about the required weekly budget for this placement location.
      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
          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
          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
          type: integer
      required:
        - maximumAllowable
        - minimumAllowable
        - recommended
      additionalProperties: true
    PromotedPlacementWeeklyBudgetStatus:
      type: object
      description: Contains information about the weekly budget for this placement.
      properties:
        recommended:
          format: int32
          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).
          type: integer
        minimumAllowable:
          format: int32
          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.
          type: integer
        total:
          format: int32
          description: The total budget for this week in the smallest unit of local currency (e.g., pence).
          type: integer
        maximumAllowable:
          format: int32
          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.
          type: integer
        remaining:
          format: int32
          description: The remaining budget for this week in the smallest unit of local currency (e.g., pence).
          type: integer
        remainderOfWeekIsFree:
          description: Indicates whether this placement has been given a free trial that lasts until the end of the current week (the end of Sunday).
          type: boolean
      required:
        - remaining
        - total
        - maximumAllowable
        - minimumAllowable
        - recommended
        - remainderOfWeekIsFree
    ProofofarrivalNfcRegistrationErrorResponse:
      description: Error response returned when NFC tag registration fails.
      type: object
      required:
        - reasonCode
      properties:
        reasonCode:
          type: string
          enum:
            - INVALID_REQUEST
            - TAG_PARTNER_MISMATCH
            - TAG_NOT_REGISTERED
            - GENERAL_ERROR
            - PARTNER_NOT_FOUND
          description: Machine-readable code identifying the registration failure reason.
        tagId:
          type: string
          description: Identifier of the tag that failed registration. Included when available.
      example:
        reasonCode: TAG_NOT_REGISTERED
        tagId: 8739tm8c
    ProofofarrivalNfcValidationErrorResponse:
      description: Error response returned when NFC tag validation fails.
      type: object
      required:
        - reasonCode
        - status
      properties:
        reasonCode:
          type: string
          enum:
            - INVALID_REQUEST
            - CMAC_INVALID
            - COUNTER_REPLAY
            - TAG_NOT_REGISTERED
            - TAG_PARTNER_MISMATCH
            - TAG_DEACTIVATED
            - TAG_UID_MISMATCH
            - GENERAL_ERROR
            - PARTNER_NOT_FOUND
          description: Machine-readable code identifying the validation failure reason.
        status:
          type: string
          enum:
            - INVALID
          description: Validation result status.
        tagId:
          type: string
          description: Identifier of the tag that failed validation. Included when available.
      example:
        reasonCode: COUNTER_REPLAY
        status: INVALID
        tagId: 8739tm8c
    ProofofdeliveryserviceProofOfDeliveryValidateErrorResponse:
      type: object
      description: The proof of delivery validation error response object.
      properties:
        body:
          type: object
          description: The error response body.
          properties:
            attemptsRemaining:
              type: integer
              description: The number of attempts remaining for the proof of delivery validation
              nullable: false
            protectionTypesAvailable:
              enum:
                - DELIVERY_CODE
                - PHONE_NUMBER
                - LIVE_OPS_AGENT
                - DOB_MATCH
                - LEGAL_AGE_VERIFICATION
              type: string
              description: The protection types available for the proof of delivery validation
              nullable: false
            status:
              enum:
                - VALID
                - INVALID
              type: string
              description: The status of the proof of delivery validation
              nullable: false
        message:
          type: string
          description: The error message
          nullable: false
        name:
          type: string
          description: The error name
          nullable: false
        status:
          type: integer
          description: The HTTP status code
          nullable: false
    ProofofdeliveryserviceProofOfDeliveryValidateRequest:
      type: object
      description: The proof of delivery validation request object.
      properties:
        deliveryCode:
          type: string
          description: The pin code
          nullable: false
    ProofofdeliveryserviceProofOfDeliveryValidateResponse:
      type: object
      description: The proof of delivery validation response object.
      properties:
        status:
          enum:
            - VALID
            - INVALID
          type: string
          description: The status of the proof of delivery validation
          nullable: false
    ProvidersSocialProvidersResponse:
      description: A list of social login providers
      type: object
      properties:
        Providers:
          description: An array of social login providers
          type: array
          items:
            type: object
            properties:
              ProviderName:
                description: Social Provider name
                type: string
              ClientId:
                description: Client ID
                type: string
              AppClientId:
                description: App client ID
                type: string
                nullable: true
              Scopes:
                description: Scope
                type: array
                items:
                  type: string
      example:
        Providers:
          - ProviderName: Apple
            ClientId: com.justeat.JUSTEAT.ie
            AppClientId: null
            Scopes:
              - email
          - ProviderName: Appleweb
            ClientId: com.justeat.JUSTEAT.ie.signinwithapple
            AppClientId: null
            Scopes:
              - openid
              - email
              - profile
    PurchaseRequestsModifierGroup:
      description: A group of modifiers applied to apply to an item.
      type: object
      required:
        - id
        - modifiers
      properties:
        id:
          type: string
          description: The unique identifier of the modifier group.
        modifiers:
          type: array
          description: The list of modifiers in the group.
          minItems: 1
          items:
            type: object
            description: The selected modifiers from the modifier group.
            required:
              - id
              - quantity
            properties:
              id:
                type: string
                description: The unique identifier of the modifier.
              quantity:
                type: integer
                description: The quantity of the modifier.
    PurchaseRequestsPurchaseCreateRequest:
      description: The request object for creating a purchase.
      type: object
      properties:
        actions:
          type: array
          minItems: 1
          description: |
            Specify actions to be executed when creating a new purchase. 

            Constraints:
              - Exactly 1 AddPartnerAction is required
              - At most 1 SetFulfillmentMethodAction is allowed
              - At most 1 SetFulfillmentLocationAction is allowed
              - For 'Delivery' purchases, exactly 1 SetFulfillmentLocation should also be supplied
          items:
            anyOf:
              - $ref: '#/components/schemas/PurchaseRequestsActionsAddPartnerAction'
              - $ref: '#/components/schemas/PurchaseRequestsActionsSetFulfillmentMethodAction'
              - $ref: '#/components/schemas/PurchaseRequestsActionsSetFulfillmentLocationAction'
              - $ref: '#/components/schemas/PurchaseRequestsActionsAddItemAction'
      required:
        - actions
    PurchaseRequestsPurchaseUpdateRequest:
      description: The request object for updating a purchase.
      type: object
      properties:
        actions:
          type: array
          minItems: 1
          description: |
            Specify actions to be executed when updating an existing purchase.

            Constraints:
              - At most 1 SetFulfillmentMethodAction is allowed
              - At most 1 SetFulfillmentLocationAction is allowed
          items:
            anyOf:
              - $ref: '#/components/schemas/PurchaseRequestsActionsAddItemAction'
              - $ref: '#/components/schemas/PurchaseRequestsActionsUpdateItemConfigurationAction'
              - $ref: '#/components/schemas/PurchaseRequestsActionsUpdateItemQuantityAction'
              - $ref: '#/components/schemas/PurchaseRequestsActionsRemoveItemAction'
              - $ref: '#/components/schemas/PurchaseRequestsActionsSetFulfillmentMethodAction'
              - $ref: '#/components/schemas/PurchaseRequestsActionsSetFulfillmentLocationAction'
      required:
        - actions
    PurchaseRequestsActionsAddItemAction:
      description: Action to add an new item to a purchase.
      allOf:
        - $ref: '#/components/schemas/PurchaseRequestsActionsSharedAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - addItem
              description: The type of action
            data:
              type: object
              description: Specific parameters for the item addition, defining the item's configuration and the quantity.
              properties:
                configuration:
                  description: The configuration of the item being added
                  $ref: '#/components/schemas/PurchaseRequestsActionsSharedItemConfiguration'
                quantity:
                  type: integer
                  format: int32
                  minimum: 1
                  description: The quantity of the item to add
              required:
                - configuration
                - quantity
          required:
            - data
            - type
    PurchaseRequestsActionsAddPartnerAction:
      description: Action to add an partner to a purchase.
      allOf:
        - $ref: '#/components/schemas/PurchaseRequestsActionsSharedAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - addPartner
              description: The type of action
            data:
              type: object
              description: Specific parameters for the partner addition.
              properties:
                partnerId:
                  description: The id of the partner being added
                  type: string
              required:
                - partnerId
          required:
            - data
            - type
    PurchaseRequestsActionsRemoveItemAction:
      description: Action to remove an existing item from a purchase.
      allOf:
        - $ref: '#/components/schemas/PurchaseRequestsActionsSharedAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - removeItem
              description: The type of action
            data:
              type: object
              description: Specific parameters for the item removal.
              properties:
                itemAssignmentKey:
                  type: string
                  description: The key of the assigned item to remove
              required:
                - itemAssignmentKey
          required:
            - data
            - type
    PurchaseRequestsActionsSetFulfillmentLocationAction:
      description: Action to set the fulfillment location for a purchase.
      allOf:
        - $ref: '#/components/schemas/PurchaseRequestsActionsSharedAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - setFulfillmentLocation
              description: The type of action
            data:
              type: object
              description: Specific parameters for the fulfillment location.
              properties:
                geolocation:
                  description: The geolocation coordinates for the fulfillment location.
                  type: object
                  nullable: true
                  required:
                    - longitude
                    - latitude
                  properties:
                    longitude:
                      type: number
                      format: double
                      minimum: -180
                      maximum: 180
                      description: Longitude coordinate.
                    latitude:
                      type: number
                      format: double
                      minimum: -90
                      maximum: 90
                      description: Latitude coordinate.
                address:
                  description: The address for the fulfillment location.
                  type: object
                  nullable: true
                  properties:
                    postalCode:
                      type: string
                      description: Postal code for the address.
                  required:
                    - postalCode
              oneOf:
                - required:
                    - geolocation
                - required:
                    - address
          required:
            - data
            - type
    PurchaseRequestsActionsSetFulfillmentMethodAction:
      description: Action to set the fulfillment method on a purchase.
      allOf:
        - $ref: '#/components/schemas/PurchaseRequestsActionsSharedAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - setFulfillmentMethod
              description: The type of action
            data:
              type: object
              description: Specific parameters for the fulfillment method.
              properties:
                serviceType:
                  description: The fulfillment service type to set on the purchase.
                  type: string
                  enum:
                    - collection
                    - delivery
              required:
                - serviceType
          required:
            - data
            - type
    PurchaseRequestsActionsUpdateItemConfigurationAction:
      description: Action to update the configuration of an existing item in a purchase.
      allOf:
        - $ref: '#/components/schemas/PurchaseRequestsActionsSharedAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - updateItemConfiguration
              description: The type of action
            data:
              type: object
              description: Specific parameters for the item configuration update.
              properties:
                itemAssignmentKey:
                  type: string
                  description: The key for the assigned item being updated
                configuration:
                  description: The updated configuration for the item
                  $ref: '#/components/schemas/PurchaseRequestsActionsSharedItemConfiguration'
              required:
                - itemAssignmentKey
                - configuration
          required:
            - data
            - type
    PurchaseRequestsActionsUpdateItemQuantityAction:
      description: Action to update the configuration of an existing item in a purchase.
      allOf:
        - $ref: '#/components/schemas/PurchaseRequestsActionsSharedAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - updateItemQuantity
              description: The type of action
            data:
              type: object
              description: Specific parameters for the item quantity update.
              properties:
                itemAssignmentKey:
                  type: string
                  description: The key for the assigned item being updated
                quantity:
                  type: integer
                  description: The updated quantity for the item
              required:
                - itemAssignmentKey
                - quantity
          required:
            - data
            - type
    PurchaseRequestsActionsSharedAction:
      description: Base action schema for purchase updates
      type: object
      properties:
        type:
          type: string
          description: The type of action
      required:
        - type
    PurchaseRequestsActionsSharedItemConfiguration:
      type: object
      description: The configuration of choices for an item.
      required:
        - productId
        - partnerId
        - type
      properties:
        productId:
          type: string
          description: The product ID for this item.
        partnerId:
          type: string
          description: The partner ID for this item.
        type:
          type: string
          description: The product type for this item.
          enum:
            - product
            - deal
        modifierGroups:
          type: array
          nullable: true
          description: Modifier groups configured for this item.
          items:
            $ref: '#/components/schemas/PurchaseRequestsModifierGroup'
        dealGroups:
          type: array
          nullable: true
          description: Deal groups configured for this item. Only provided for deals.
          items:
            type: object
            required:
              - id
              - items
            properties:
              id:
                type: string
                description: The unique identifier of the deal group.
              items:
                type: array
                description: The items to add to this deal group.
                minItems: 1
                items:
                  type: object
                  required:
                    - productId
                    - quantity
                  properties:
                    productId:
                      type: string
                      description: The unique identifier of the deal group product.
                    quantity:
                      type: integer
                      description: The quantity of this deal group product.
                    modifierGroups:
                      type: array
                      nullable: true
                      description: Modifier groups configured for the deal group product.
                      items:
                        $ref: '#/components/schemas/PurchaseRequestsModifierGroup'
    PurchaseResponsesBasketPurchaseResponse:
      description: A platform representation of an entire purchase.
      type: object
      properties:
        currency:
          type: string
          description: The currency used to represent prices, represented as an ISO 4217 currency code. For example, GBP, EUR or AUD.
          minLength: 3
          maxLength: 3
        id:
          type: string
          description: The unique identifier of the purchase.
        partners:
          type: array
          description: The partners involved in the purchase.
          minItems: 1
          items:
            $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponsePartner'
        contributors:
          type: array
          description: The contributors involved in the purchase.
          minItems: 1
          items:
            $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseContributor'
        items:
          type: array
          items:
            $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseItem'
        itemAssignments:
          type: array
          items:
            $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseItemAssignment'
        fulfillment:
          $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseFulfillment'
        actions:
          type: array
          description: Actions that can be performed against the purchase
          nullable: true
          items:
            anyOf:
              - $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseAvailableActionsAddItemsAvailableAction'
      required:
        - id
        - partners
        - contributors
        - items
        - itemAssignments
        - fulfillment
    PurchaseResponsesPurchaseResponse:
      description: A BFF representation of an entire purchase.
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the purchase.
        items:
          type: array
          items:
            $ref: '#/components/schemas/PurchaseResponsesPurchaseResponseItem'
        purchaseSummary:
          $ref: '#/components/schemas/PurchaseResponsesPurchaseResponsePurchaseSummary'
      required:
        - id
        - items
        - purchaseSummary
    PurchaseResponsesBasketPurchaseResponseContributor:
      description: Represents a contributor involved in the purchase
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the contributor
        name:
          type: string
          description: The name of the contributor
      required:
        - id
        - name
    PurchaseResponsesBasketPurchaseResponseDealGroup:
      description: A deal group for a product.
      type: object
      required:
        - id
        - products
      properties:
        id:
          type: string
          description: The unique identifier of the deal group.
        products:
          type: array
          description: Products selected for the deal group.
          items:
            description: The deal group products selected within this deal group.
            type: object
            required:
              - id
              - quantity
            properties:
              id:
                type: string
                description: The unique identifier of the product.
              quantity:
                type: integer
                format: int32
                minimum: 1
                description: The quantity of this product.
              modifierGroups:
                type: array
                nullable: true
                minItems: 1
                description: Modifier groups configured for the deal group product.
                items:
                  $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseModifierGroup'
    PurchaseResponsesBasketPurchaseResponseFulfillment:
      description: Represents the fulfillment details of the purchase
      type: object
      properties:
        method:
          type: object
          description: The selected fulfillment method details
          required:
            - serviceType
          properties:
            serviceType:
              type: string
              description: The service type selected for fulfillment
              enum:
                - delivery
                - collection
      required:
        - method
    PurchaseResponsesBasketPurchaseResponseItem:
      description: An item in this purchase, including the unique product configuration for this item (unique within this purchase).
      allOf:
        - type: object
        - required:
            - id
            - productId
            - partnerId
            - name
            - type
          properties:
            id:
              type: string
              description: The unique key for this product configuration (unique within this purchase).
            productId:
              type: string
              description: The product ID for this item.
            partnerId:
              type: string
              description: The partner ID for this item.
            name:
              type: string
              description: The name of the product.
            type:
              type: string
              description: The type of product configured.
              enum:
                - product
                - deal
            modifierGroups:
              type: array
              nullable: true
              description: Modifier groups applied to this item.
              items:
                $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseModifierGroup'
            dealGroups:
              type: array
              nullable: true
              description: Deal groups applied to this item - only provided for items of type 'Deal'.
              items:
                $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseDealGroup'
    PurchaseResponsesBasketPurchaseResponseItemAssignment:
      description: Represents the assignment of an item to a contributor
      type: object
      properties:
        key:
          type: string
          description: A unique key assigned to the assignment of an item to a contributor
        itemId:
          type: string
          description: The id of the item configuration being assigned
        contributorId:
          type: string
          description: The identifier of the contributor this item is assigned to
        quantity:
          type: integer
          description: The quantity of the item being assigned
          minimum: 1
        price:
          description: The price details for the assigned item
          type: object
          required:
            - total
          properties:
            preDiscountTotal:
              description: The price of the item prior to any discounts. Provided in the minor format (£12.50 is returned as 1250). Will only be present when discounts applied.
              type: number
              format: integer
              nullable: true
            total:
              description: The total price of the item after any discounts. Provided in the minor format (£10.50 is returned as 1050).
              type: number
              format: integer
        actions:
          type: array
          description: Actions that can be performed against the item
          nullable: true
          items:
            anyOf:
              - $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseAvailableActionsUpdateItemConfigAvailableAction'
              - $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseAvailableActionsUpdateItemQuantityAvailableAction'
              - $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseAvailableActionsRemoveItemAvailableAction'
      required:
        - key
        - itemId
        - contributorId
        - partnerId
        - quantity
        - price
    PurchaseResponsesBasketPurchaseResponseModifierGroup:
      description: A group of modifiers applied to a product or deal.
      type: object
      required:
        - id
        - name
        - modifiers
      properties:
        id:
          type: string
          description: The unique identifier of the modifier group.
        name:
          type: string
          description: The name of the modifier group.
        modifiers:
          type: array
          description: The list of modifiers in the group.
          minItems: 1
          items:
            type: object
            description: The selected modifiers from the modifier group.
            required:
              - id
              - name
              - quantity
            properties:
              id:
                type: string
                description: The unique identifier of the modifier.
              name:
                type: string
                description: The name of the modifier.
              quantity:
                type: integer
                description: The quantity of the modifier.
    PurchaseResponsesBasketPurchaseResponsePartner:
      description: Represents a partner involved in the purchase
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the partner
        name:
          type: string
          description: The name of the partner
        seoName:
          type: string
          description: The SEO-friendly name of the partner.
      required:
        - id
        - name
        - seoName
    PurchaseResponsesBasketPurchaseResponseAvailableActionsAddItemsAvailableAction:
      description: Represents the action for adding items to the purchase is available
      allOf:
        - $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseAvailableActionsAvailableAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - addItems
              description: The type of available action
            data:
              type: object
              description: Specific properties relating to the add items action
              properties:
                maxQuantity:
                  type: integer
                  format: int32
                  minimum: 1
                  description: The maximum quantity of items that can be added to the purchase
                contributorId:
                  type: string
                  description: The identifier of the contributor which added items should be assigned to
              required:
                - maxQuantity
                - contributorId
          required:
            - type
            - data
    PurchaseResponsesBasketPurchaseResponseAvailableActionsAvailableAction:
      description: Base definition for an available action
      type: object
      properties:
        type:
          type: string
          description: The type of available action
      required:
        - type
    PurchaseResponsesBasketPurchaseResponseAvailableActionsRemoveItemAvailableAction:
      description: Represents the available action for removing an item
      allOf:
        - $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseAvailableActionsAvailableAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - removeItem
              description: The type of available action
    PurchaseResponsesBasketPurchaseResponseAvailableActionsUpdateItemConfigAvailableAction:
      description: Represents the available action for updating an items configuration
      allOf:
        - $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseAvailableActionsAvailableAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - updateItem
              description: The type of available action
          required:
            - type
    PurchaseResponsesBasketPurchaseResponseAvailableActionsUpdateItemQuantityAvailableAction:
      description: Represents the available action for updating items quantity
      allOf:
        - $ref: '#/components/schemas/PurchaseResponsesBasketPurchaseResponseAvailableActionsAvailableAction'
        - type: object
          properties:
            type:
              type: string
              enum:
                - updateItemQuantity
              description: The type of available action
            data:
              type: object
              description: Specific properties relating to the update item quantity action
              properties:
                maxQuantity:
                  type: integer
                  format: int32
                  description: The maximum quantity allowed for this item
                  minimum: 1
                  nullable: true
              required:
                - maxQuantity
          required:
            - type
            - data
    PurchaseResponsesPurchaseResponseDealGroup:
      description: A deal group for a product.
      type: object
      required:
        - id
        - products
      properties:
        id:
          type: string
          description: The unique identifier of the deal group.
        products:
          type: array
          description: Products selected for the deal group.
          items:
            description: The deal group products selected within this deal group.
            type: object
            required:
              - id
              - quantity
            properties:
              id:
                type: string
                description: The unique identifier of the product.
              quantity:
                type: integer
                format: int32
                minimum: 1
                description: The quantity of this product.
              modifierGroups:
                type: array
                nullable: true
                minItems: 1
                description: Modifier groups configured for the deal group product.
                items:
                  $ref: '#/components/schemas/PurchaseResponsesPurchaseResponseModifierGroup'
    PurchaseResponsesPurchaseResponseItem:
      description: An item in this purchase, including the unique product configuration for this item (unique within this purchase).
      allOf:
        - type: object
        - required:
            - id
            - productId
            - type
          properties:
            id:
              type: string
              description: The unique key for this product configuration (unique within this purchase).
            productId:
              type: string
              description: The product ID for this item.
            type:
              type: string
              description: The type of product configured.
              enum:
                - product
                - deal
            modifierGroups:
              type: array
              nullable: true
              description: Modifier groups applied to this item.
              items:
                $ref: '#/components/schemas/PurchaseResponsesPurchaseResponseModifierGroup'
            dealGroups:
              type: array
              nullable: true
              description: Deal groups applied to this item - only provided for items of type 'Deal'.
              items:
                $ref: '#/components/schemas/PurchaseResponsesPurchaseResponseDealGroup'
    PurchaseResponsesPurchaseResponseModifierGroup:
      description: A group of modifiers applied to a product or deal.
      type: object
      required:
        - id
        - modifiers
      properties:
        id:
          type: string
          description: The unique identifier of the modifier group.
        modifiers:
          type: array
          description: The list of modifiers in the group.
          minItems: 1
          items:
            type: object
            description: The selected modifiers from the modifier group.
            required:
              - id
              - quantity
            properties:
              id:
                type: string
                description: The unique identifier of the modifier.
              quantity:
                type: integer
                description: The quantity of the modifier.
    PurchaseResponsesPurchaseResponsePurchaseSummary:
      description: A tailored summary of the purchase, specifically tailored to the caller.
      type: object
      required:
        - groups
        - pricingSummary
      properties:
        name:
          type: string
          description: The name of the purchase summary e.g. "Joe's group order"
          nullable: true
        groups:
          type: array
          description: Collections of items that should be grouped together, with an optional group name.
          items:
            type: object
            required:
              - items
            properties:
              name:
                type: string
                nullable: true
                description: The name of the group e.g. "Joe (You)"
              items:
                type: array
                items:
                  type: object
                  description: Items that belong to the group.
                  required:
                    - itemAssignmentKey
                    - name
                    - quantity
                    - price
                  properties:
                    itemAssignmentKey:
                      type: string
                      description: The key for the assignment of the represented items configuration to a contributor.
                    name:
                      type: string
                      description: The name of the item e.g. "Chicken Feast Pizza".
                    quantity:
                      type: integer
                      format: int32
                      minimum: 1
                      description: The quantity of the item assigned to this group.
                    options:
                      type: array
                      description: A collection of selected options for the item
                      items:
                        $ref: '#/components/schemas/PurchaseResponsesPurchaseResponsePurchaseSummaryOption'
                    price:
                      type: object
                      description: The pricing data for item.
                      required:
                        - total
                      properties:
                        preDiscountTotal:
                          description: The price of the item prior to any discounts. Provided in the minor format (£12.50 is returned as 1250). Will only be present when discounts applied.
                          type: integer
                          format: int32
                          minimum: 0
                          nullable: true
                        total:
                          type: integer
                          format: int32
                          minimum: 0
                          description: The price of the item after any discounts. Provided in the minor format e.g £5.25 would be 525
        pricingSummary:
          $ref: '#/components/schemas/PurchaseResponsesPurchaseResponsePricingSummaryPricingSummary'
          description: Structured breakdown of pricing information including line items and prompts
    PurchaseResponsesPurchaseResponsePurchaseSummaryOption:
      description: A single option that applies to a purchase summary item.
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: The name of the option e.g. "Extra Cheese".
        quantity:
          nullable: true
          type: integer
          format: int32
          minimum: 1
          description: The optional quantity of the option.
        price:
          nullable: true
          type: object
          properties:
            total:
              nullable: true
              type: integer
              format: int32
              description: The total price of the option (unit price * quantity). Provided in the minor format e.g £3 would be 300.
        options:
          nullable: true
          description: A collection of selected options for the item
          type: array
          items:
            $ref: '#/components/schemas/PurchaseResponsesPurchaseResponsePurchaseSummaryOption'
    PurchaseResponsesPurchaseResponsePricingSummaryLineItem:
      description: A monetary pricing line representing discounts, fees, subtotals, or totals
      allOf:
        - $ref: '#/components/schemas/PurchaseSharedEntitiesBaseEntity'
        - type: object
          properties:
            type:
              type: string
              enum:
                - lineItem
            meta:
              type: object
              required:
                - impact
              properties:
                impact:
                  nullable: true
                  type: string
                  description: Indicates whether this line contributes and increase or decrease to the total purchase price
                  enum:
                    - increase
                    - decrease
                tags:
                  type: array
                  description: Unordered tags for additional line item classification
                  nullable: true
                  items:
                    type: string
                    enum:
                      - jetPlus
                      - offer
                      - subtotal
                      - total
            data:
              type: object
              required:
                - name
                - price
              properties:
                name:
                  description: The name of the line item as it should appear to the customer
                  type: string
                price:
                  description: The price of the line item represented with numeric and formatted values
                  type: object
                  required:
                    - amount
                    - formattedAmount
                  properties:
                    amount:
                      type: integer
                      format: int32
                      description: Price in minor currency units (e.g. 269 represents £2.69)
                    formattedAmount:
                      type: string
                      description: Human-readable formatted price string (e.g., "£2.69" or "- £2.69" for negative amounts)
                info:
                  description: Additional details about the line item.
                  allOf:
                    - $ref: '#/components/schemas/PurchaseSharedEntitiesCompositesLineItemDetailsEntity'
                  nullable: true
    PurchaseResponsesPurchaseResponsePricingSummaryPricingSummary:
      description: A structured breakdown of pricing information including line items and prompts
      type: object
      required:
        - lines
      properties:
        lines:
          type: array
          description: Collection of pricing lines, which can be monetary line items or prompts
          items:
            anyOf:
              - $ref: '#/components/schemas/PurchaseResponsesPurchaseResponsePricingSummaryLineItem'
              - $ref: '#/components/schemas/PurchaseResponsesPurchaseResponsePricingSummaryPrompt'
    PurchaseResponsesPurchaseResponsePricingSummaryPrompt:
      description: A non-monetary promotional message or call-to-action within the pricing breakdown
      allOf:
        - $ref: '#/components/schemas/PurchaseSharedEntitiesBaseEntity'
        - type: object
          properties:
            type:
              type: string
              enum:
                - prompt
            meta:
              type: object
              properties:
                tags:
                  type: array
                  description: Unordered tags for additional prompt classification
                  nullable: true
                  items:
                    type: string
                    enum:
                      - jetPlus
                      - offer
            data:
              type: object
              required:
                - name
              properties:
                name:
                  description: The name of the prompt as it should appear to the customer
                  type: string
    PurchaseSharedEntitiesBaseEntity:
      description: Common properties shared by all entities
      type: object
      required:
        - type
        - data
      properties:
        type:
          type: string
          description: Type of the entity
          nullable: false
        meta:
          description: Metadata for the entity
          type: object
          nullable: true
          additionalProperties: true
        data:
          description: Data payload for the entity
          type: object
          nullable: false
          additionalProperties: true
      additionalProperties: false
    PurchaseSharedEntitiesCompositesLineItemDetailsEntity:
      description: Represents details of subject including fees, offers, products etc.
      type: object
      required:
        - type
        - meta
        - data
      properties:
        type:
          type: string
          enum:
            - container
        meta:
          type: object
          required:
            - type
          properties:
            type:
              type: string
              enum:
                - lineItemDetails
        data:
          type: object
          required:
            - items
          properties:
            items:
              type: array
              description: The items encapsulated by the line item details.
              items:
                oneOf:
                  - $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesTextPrimitive'
                  - $ref: '#/components/schemas/PurchaseSharedEntitiesStructuresTableEntity'
      x-examples:
        line_item_details:
          type: container
          meta:
            type: lineItemDetails
          data:
            items:
              - type: text
                meta:
                  tags:
                    role: heading
                data:
                  value: Small orders
              - type: text
                data:
                  value: This fee helps cover the cost of delivering small orders.
              - type: text
                meta:
                  tags:
                    role: subHeading
                data:
                  value: How does it work?
              - type: text
                data:
                  value: It's a fee that applies at this store when a basket subtotal is below £10. To avoid it, add more items to your basket.
                  template:
                    pattern: It's a fee that applies at this store when a basket subtotal is below . To avoid it, add more items to your basket.
                    tokens:
                      - key: minimum_order_value
                        value: £0
                        tags:
                          traits:
                            - strong
    PurchaseSharedEntitiesPrimitivesContainer:
      description: |
        A generic container entity.
      type: object
      required:
        - type
        - data
      properties:
        type:
          type: string
          enum:
            - container
        meta:
          type: object
          nullable: true
          properties:
            layout:
              type: object
              description: Layout hints for rendering the container's items.
              nullable: true
              properties:
                direction:
                  type: string
                  description: |
                    Sets the primary axis along which items are arranged.

                    Clients should assume vertical when absent.
                  nullable: true
                  default: vertical
                  enum:
                    - vertical
                    - horizontal
                indent:
                  type: integer
                  nullable: true
                  default: 0
                  minimum: 0
                  maximum: 3
                  description: |
                    The indentation depth, applied as `padding-inline-start`
                    using the client's design token spacing scale. This ensures consistent spacing
                    without hard-coded pixel values and correct behaviour in RTL layouts.

                    Levels:
                    - `0` — no indentation (equivalent to omitting the property)
                    - `1` — standard indent; typically used for sub-items within a section
                    - `2` — double indent; typically used for nested sub-items
                    - `3` — maximum indent; use sparingly
            collapsible:
              type: object
              nullable: true
              description: Configuration for the container's collapsing behaviour. If null or omitted, the container is static.
              properties:
                initialState:
                  type: string
                  nullable: true
                  enum:
                    - expanded
                    - collapsed
                  default: expanded
        data:
          type: object
          required:
            - items
          properties:
            heading:
              type: object
              description: An optional heading for the container.
              nullable: true
              allOf:
                - $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesTextPrimitive'
            items:
              type: array
              description: The items encapsulated by the container.
              minItems: 1
              items:
                oneOf:
                  - $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesContainer'
                  - $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesTextPrimitive'
                  - $ref: '#/components/schemas/PurchaseSharedEntitiesStructuresTableEntity'
                  - $ref: '#/components/schemas/CatalogueSharedEntitiesTag'
                  - $ref: '#/components/schemas/CatalogueSharedEntitiesIcon'
                  - $ref: '#/components/schemas/CatalogueSharedEntitiesMedia'
    PurchaseSharedEntitiesPrimitivesTextPrimitive:
      description: Represents a single text block.
      type: object
      required:
        - type
        - data
      properties:
        type:
          type: string
          description: Type of the entity
          enum:
            - text
        meta:
          type: object
          description: Metadata for the entity
          properties:
            accessibilityLabel:
              type: string
              description: A localized string that provides a clear, functional description of the text for assistive technologies.
              nullable: true
            tags:
              type: object
              description: Structural and visual identifiers applied to the text.
              nullable: true
              additionalProperties: false
              properties:
                role:
                  type: string
                  description: |
                    The structural skeleton. If omitted, the client MUST default to 'body'.
                    The role also applies to any nested text tokens.
                  nullable: true
                  enum:
                    - heading
                    - subHeading
                    - body
                    - caption
                traits:
                  type: array
                  description: Visual or semantic modifiers for text.
                  nullable: true
                  uniqueItems: true
                  items:
                    type: string
                    enum:
                      - strong
                      - emphasis
                      - superscript
                      - subscript
                      - replaced
        data:
          type: object
          required:
            - value
          properties:
            value:
              type: string
              description: The text content to be displayed to the user if no template is provided or as a fallback.
            template:
              type: object
              description: Contains structured data for dynamic text generation using a pattern-and-token approach.
              required:
                - pattern
              properties:
                pattern:
                  type: string
                  description: |
                    A string containing placeholders (e.g. ) that will be replaced by token values.
                    Tokens only need to be provided if the pattern includes placeholders that need to provide additional context such as formatting or links.
                tokens:
                  type: array
                  description: A collection of key-value pairs used to populate the placeholders within the pattern.
                  items:
                    type: object
                    description: An individual data point used to replace a specific placeholder in the template.
                    required:
                      - key
                      - value
                    properties:
                      key:
                        type: string
                        description: The identifier within the pattern that this token replaces.
                      value:
                        type: string
                        description: The actual text string to be inserted into the pattern.
                      uri:
                        type: string
                        description: An optional hyperlink associated with this specific token for interactive text.
                        format: uri
                      tags:
                        type: object
                        description: A grouping of structural and visual identifiers for text token.
                        nullable: true
                        additionalProperties: false
                        properties:
                          traits:
                            type: array
                            description: |
                              Visual modifiers for this specific token. 
                              These will replace any traits provided at the parent text block level.
                              Do not inherit or fallback to the parent if omitted or empty.
                            nullable: true
                            uniqueItems: true
                            items:
                              type: string
                              enum:
                                - strong
                                - emphasis
                                - superscript
                                - subscript
                                - replaced
      x-examples:
        text_only:
          type: text
          data:
            value: This contributes to the costs of delivery to you.
        text_with_tag_role:
          type: text
          meta:
            tags:
              role: heading
          data:
            value: Delivery fee
        text_with_tag_traits:
          type: text
          meta:
            tags:
              traits:
                - strong
          data:
            value: Delivery fee
        templated_text:
          type: text
          data:
            value: Minimum order value for this place is £0
            template:
              pattern: 'Minimum order value for this place is '
              tokens:
                - key: minimum_order_value
                  value: £0
                  tags:
                    traits:
                      - strong
        templated_text_with_links:
          type: text
          data:
            value: When you buy a drink in a plastic bottle, aluminium or steel can that features the Re-turn logo, you pay a small refundable deposit in addition to the price of the drink. Find out more at the Re-Turn Ireland Website.
            template:
              pattern: When you buy a drink in a plastic bottle, aluminium or steel can that features the Re-turn logo, you pay a small refundable deposit in addition to the price of the drink. Find out more at the .
              tokens:
                - key: return_ireland_website
                  value: Re-Turn Ireland Website
                  uri: https://re-turn.ie/
        templated_text_with_token_trait_replacing_parent_trait:
          type: text
          meta:
            tags:
              traits:
                - strong
          data:
            value: Minimum order value for this place is £0
            template:
              pattern: 'Minimum order value for this place is '
              tokens:
                - key: minimum_order_value
                  value: £0
                  tags:
                    traits:
                      - strong
                      - emphasis
    PurchaseSharedEntitiesStructuresTableEntity:
      description: |
        Represents a generic table entity.
        Follows the base entity pattern (type: table) with rows containing cell items constrained to primitives.
      type: object
      required:
        - type
        - data
      properties:
        type:
          type: string
          enum:
            - table
        meta:
          type: object
          nullable: true
          additionalProperties: true
          properties:
            accessibilityLabel:
              type: string
              description: A localized string that provides a clear, functional description of the table for assistive technologies.
              nullable: true
        data:
          type: object
          required:
            - rows
          properties:
            rows:
              type: array
              description: The rows encapsulated by the table.
              items:
                type: object
                required:
                  - type
                  - data
                properties:
                  type:
                    type: string
                    enum:
                      - row
                  meta:
                    type: object
                    nullable: true
                    additionalProperties: true
                    properties:
                      accessibilityLabel:
                        type: string
                        description: A localized string that provides a clear, functional description of the row for assistive technologies.
                        nullable: true
                      role:
                        type: string
                        description: |
                          Details the role of a table row so that it can be styled accordingly.
                          Known values: "header". Clients should be tolerant of other values.
                        nullable: true
                  data:
                    type: object
                    required:
                      - items
                    properties:
                      items:
                        type: array
                        description: |
                          Items to be included in the cells of a row.
                        items:
                          oneOf:
                            - $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesTextPrimitive'
                            - $ref: '#/components/schemas/PurchaseSharedEntitiesPrimitivesContainer'
          x-examples:
            table:
              type: table
              meta:
                accessibilityLabel: This table shows a breakdown of the delivery fees by range.
              data:
                rows:
                  - type: row
                    meta:
                      role: header
                    data:
                      items:
                        - type: text
                          data:
                            value: Range
                        - type: text
                          data:
                            value: Fee
                  - type: row
                    meta:
                      accessibilityLabel: For orders between £2.00 and £5.00, the fee is £4.00
                    data:
                      items:
                        - type: text
                          data:
                            value: £2 - £5
                        - type: text
                          data:
                            value: £4
                  - type: row
                    meta:
                      accessibilityLabel: For orders over £5.00, the fee is £0.50
                    data:
                      items:
                        - type: text
                          data:
                            value: Over £5
                        - type: text
                          data:
                            value: £0.50
            indented_nutritional_table:
              type: table
              meta:
                accessibilityLabel: This table shows nutritional information per 100ml and per serving.
              data:
                rows:
                  - type: row
                    meta:
                      role: header
                    data:
                      items:
                        - type: text
                          data:
                            value: Typical values
                        - type: text
                          data:
                            value: Per 100ml
                        - type: text
                          data:
                            value: Per serving
                  - type: row
                    data:
                      items:
                        - type: text
                          data:
                            value: Fat
                        - type: text
                          data:
                            value: 13g
                        - type: text
                          data:
                            value: 6.5g
                  - type: row
                    data:
                      items:
                        - type: container
                          meta:
                            layout:
                              indent: 1
                          data:
                            items:
                              - type: text
                                meta:
                                  tags:
                                    traits:
                                      - emphasis
                                data:
                                  value: of which saturates
                        - type: text
                          data:
                            value: 4.5g
                        - type: text
                          data:
                            value: 2.3g
                  - type: row
                    data:
                      items:
                        - type: container
                          meta:
                            layout:
                              indent: 1
                          data:
                            items:
                              - type: text
                                meta:
                                  tags:
                                    traits:
                                      - emphasis
                                data:
                                  value: of which Trans
                        - type: text
                          data:
                            value: 0.5g
                        - type: text
                          data:
                            value: 0.3g
    QuickguidesIntroModalVisibilityResponse:
      description: Indicates whether the intro modal should be shown to the user
      type: object
      required:
        - visible
      properties:
        visible:
          description: Whether the intro modal should be displayed to the user
          type: boolean
      example:
        visible: true
    QuickguidesQuickGuideCompletionRequest:
      description: A request model to complete guide
      properties:
        guideId:
          type: string
          description: ID of guide which user is completing
      example:
        guideId: '1'
      type: object
    QuickguidesQuickGuidesMetadataResponse:
      description: A response model of the guide, which returns the ID
      properties:
        id:
          description: The unique identifier for the guide (Quick Guide series).
          type: string
      example:
        id: '1'
      type: object
    QuotationServiceBasketData:
      type: object
      description: Aggregated basket data for delivery eligibility.
      required:
        - basketId
        - items
      properties:
        basketId:
          type: string
          description: Basket identifier.
          example: basket-123
        items:
          type: array
          description: Basket item data.
          items:
            type: object
            description: Basket item.
            required:
              - quantity
              - grossWeight
              - grossDimensions
              - grossVolume
            properties:
              quantity:
                type: integer
                description: Quantity of this item in the basket.
                minimum: 1
                example: 2
              grossWeight:
                type: object
                description: Gross weight.
                required:
                  - unit
                  - value
                properties:
                  unit:
                    type: string
                    enum:
                      - g
                    example: g
                  value:
                    type: number
                    format: double
                    minimum: 0
                    example: 1500
              grossDimensions:
                type: object
                description: Gross dimensions.
                required:
                  - unit
                  - width
                  - height
                  - length
                properties:
                  unit:
                    type: string
                    enum:
                      - cm
                    example: cm
                  width:
                    type: number
                    format: double
                    minimum: 0
                    example: 30
                  height:
                    type: number
                    format: double
                    minimum: 0
                    example: 20
                  length:
                    type: number
                    format: double
                    minimum: 0
                    example: 10
              grossVolume:
                type: object
                description: Gross volume.
                required:
                  - unit
                  - value
                properties:
                  unit:
                    type: string
                    enum:
                      - cubicCm
                    example: cubicCm
                  value:
                    type: number
                    format: double
                    minimum: 0
                    example: 3000
              minPurchaseAge:
                type: integer
                nullable: true
                description: Minimum purchase age for the item, if applicable.
                example: 18
              productTypes:
                type: array
                description: Product types present for the item.
                items:
                  type: string
                example:
                  - product-type1
                  - product-type2
      example:
        basketId: basket-123
        items:
          - quantity: 2
            grossWeight:
              unit: g
              value: 1500
            grossDimensions:
              unit: cm
              width: 30
              height: 20
              length: 10
            grossVolume:
              unit: cubicCm
              value: 3000
            minPurchaseAge: 18
            productTypes:
              - product-type1
              - product-type2
    QuotationServiceCarrier:
      type: string
      description: Delivery option that can carry the order. Clients should be tolerant of unknown values (always fallback to courier in case of errors)
      enum:
        - courier
        - robot
        - drone
      example: robot
    QuotationServiceCarrierQuote:
      type: object
      description: Partner quote option by carrier.
      required:
        - quoteId
        - carriedBy
      properties:
        quoteId:
          type: string
          description: Identifier for this quote option.
          example: quote-robot-123
        carriedBy:
          $ref: '#/components/schemas/QuotationServiceCarrier'
        fees:
          type: object
          description: Fee information for this quote.
          properties:
            currency:
              type: string
              description: Currency code for the fees.
              example: EUR
            bands:
              type: array
              items:
                type: object
                properties:
                  minimumAmount:
                    type: number
                    format: integer
                    description: Minimum amount for this fee band.
                    example: 0
                  fee:
                    type: number
                    format: integer
                    description: Fee for this band.
                    example: 0
                required:
                  - minimumAmount
                  - fee
      example:
        quoteId: quote-robot-123
        carriedBy: robot
        fees:
          currency: EUR
          bands:
            - minimumAmount: 0
              fee: 0
    QuotationServiceCarrierQuotesRequest:
      type: object
      description: Request for partner quote options by carrier.
      required:
        - geolocation
      properties:
        geolocation:
          $ref: '#/components/schemas/QuotationServiceGeolocation'
        basketData:
          description: Aggregated basket data for delivery eligibility.
          allOf:
            - $ref: '#/components/schemas/QuotationServiceBasketData'
      example:
        geolocation:
          latitude: 51.5074
          longitude: -0.1278
        basketData:
          basketId: basket-123
          items:
            - quantity: 2
              grossWeight:
                unit: g
                value: 1500
              grossDimensions:
                unit: cm
                width: 30
                height: 20
                length: 10
              grossVolume:
                unit: cubicCm
                value: 3000
              minPurchaseAge: 18
              productTypes:
                - product-type1
                - product-type2
    QuotationServiceCarrierQuotesResponse:
      type: object
      description: Partner quote options by carrier.
      required:
        - partnerId
        - etas
        - carriers
        - preferredQuote
        - quotes
      properties:
        partnerId:
          type: string
          description: ID of the partner.
          example: partner-123
        etas:
          type: object
          description: ETAs from the partner.
          required:
            - eta
            - minEta
            - maxEta
          properties:
            eta:
              type: integer
              format: int32
              nullable: false
              minimum: 1
              description: Average ETA in minutes.
              example: 25
            minEta:
              type: integer
              format: int32
              nullable: false
              minimum: 1
              description: Minimum ETA in minutes.
              example: 20
            maxEta:
              type: integer
              format: int32
              nullable: false
              minimum: 1
              description: Maximum ETA in minutes.
              example: 30
        carriers:
          type: array
          description: Delivery options represented by the returned quotes.
          minItems: 1
          uniqueItems: true
          items:
            $ref: '#/components/schemas/QuotationServiceCarrier'
          example:
            - robot
            - courier
        preferredQuote:
          type: string
          description: ID of the recommended quote option from the quotes array.
          example: quote-robot-123
        quotes:
          type: array
          description: Quote options available for the partner.
          minItems: 1
          items:
            $ref: '#/components/schemas/QuotationServiceCarrierQuote'
      example:
        partnerId: partner-123
        etas:
          eta: 25
          minEta: 20
          maxEta: 30
        carriers:
          - robot
          - courier
        preferredQuote: quote-robot-123
        quotes:
          - quoteId: quote-courier-123
            carriedBy: courier
          - quoteId: quote-robot-123
            carriedBy: robot
    QuotationServiceCustomerLocationPartnersRequest:
      type: object
      required:
        - geolocation
      properties:
        geolocation:
          $ref: '#/components/schemas/QuotationServiceGeolocation'
      example:
        geolocation:
          latitude: 51.5074
          longitude: -0.1278
    QuotationServiceErrorResponse:
      description: A HTTP 4xx error response
      properties:
        fault:
          required:
            - faultId
          description: Details of the fault.
          properties:
            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
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            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
                  errorMessage:
                    type: string
                    description: Human-readable error message
                  errorType:
                    type: string
                    description: Error type identifier
                    example: UNAUTHORIZED
                type: object
              type: array
          type: object
      type: object
      example:
        traceId: H3TKh4QSJUSwVBCBqEtkKw==
        faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
        errors:
          - description: An error has occurred because of an issue in the request
            errorCode: ERR401
            errorMessage: Invalid ApiKey or Tenant
            errorType: UNAUTHORIZED
    QuotationServiceGeolocation:
      type: object
      description: Geolocation with latitude and longitude
      required:
        - latitude
        - longitude
      properties:
        latitude:
          type: number
          format: double
          minimum: -90
          maximum: 90
          description: Latitude
          example: 51.5074
        longitude:
          type: number
          format: double
          minimum: -180
          maximum: 180
          description: Longitude
          example: -0.1278
    QuotationServicePartnerEtaRequest:
      type: object
      required:
        - partnerId
        - geolocation
      properties:
        partnerId:
          type: string
          description: ID of the partner
          example: partner-123
        geolocation:
          $ref: '#/components/schemas/QuotationServiceGeolocation'
      example:
        partnerId: partner-123
        geolocation:
          latitude: 51.5074
          longitude: -0.1278
    QuotationServicePrePurchaseEtaResponse:
      type: object
      required:
        - partnerId
        - etas
        - carriers
      properties:
        partnerId:
          type: string
          description: ID of the partner
          example: partner-123
        etas:
          type: object
          description: ETAs from the partner
          required:
            - eta
            - minEta
            - maxEta
          properties:
            eta:
              type: integer
              format: int32
              nullable: false
              minimum: 1
              description: Average ETA in minutes (Always populated with value greater than zero)
              example: 15
            minEta:
              type: integer
              format: int32
              nullable: false
              minimum: 1
              description: Minimum ETA in minutes (Always populated with value greater than zero)
              example: 10
            maxEta:
              type: integer
              format: int32
              nullable: false
              minimum: 1
              description: Maximum ETA in minutes (Always populated with value greater than zero)
              example: 20
        carriers:
          type: array
          description: Required delivery options supported by the partner.
          minItems: 1
          uniqueItems: true
          items:
            $ref: '#/components/schemas/QuotationServiceCarrier'
          example:
            - courier
            - robot
      example:
        partnerId: partner-123
        etas:
          eta: 15
          minEta: 10
          maxEta: 20
        carriers:
          - courier
          - robot
    QuotationServiceQuotesResponse:
      type: object
      required:
        - quotes
      properties:
        quotes:
          type: array
          description: List of partner ETAs
          items:
            $ref: '#/components/schemas/QuotationServicePrePurchaseEtaResponse'
      example:
        quotes:
          - partnerId: partner-123
            etas:
              eta: 15
              minEta: 10
              maxEta: 20
            carriers:
              - courier
              - robot
          - partnerId: partner-456
            etas:
              eta: 10
              minEta: 5
              maxEta: 15
            carriers:
              - courier
          - partnerId: partner-789
            etas:
              eta: 30
              minEta: 25
              maxEta: 35
            carriers:
              - drone
    RddwebserviceAccountType:
      enum:
        - REGISTERED
        - GUEST
      type: string
    RddwebserviceCourierStatistics:
      type: object
      properties:
        courierId:
          type: string
        type:
          $ref: '#/components/schemas/RddwebserviceAccountType'
        firstName:
          type: string
        lastName:
          type: string
        trackedOrders:
          format: int32
          type: integer
        cashToCollect:
          format: double
          type: number
        tipsAmount:
          format: double
          type: number
        currencyCode:
          type: string
        topDeliveryBadge:
          type: boolean
        isDeleted:
          type: boolean
    RddwebserviceNotification:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/RddwebserviceNotificationType'
        actionType:
          $ref: '#/components/schemas/RddwebserviceNotificationActionType'
        extraParameters:
          $ref: '#/components/schemas/RddwebserviceNotificationExtraData'
        createdAt:
          format: date-time
          type: string
          example: '2022-03-10T16:15:50Z'
    RddwebserviceNotificationActionType:
      enum:
        - ORDER_DELIVERED
        - ORDER_IN_DELIVERY
        - COURIER_RETURNING_TO_RESTAURANT
        - COURIER_ACCEPTED_INVITATION
      type: string
    RddwebserviceNotificationExtraData:
      type: object
    RddwebserviceNotificationSubscriptionRequest:
      required:
        - restaurantId
        - deviceToken
        - language
      type: object
      properties:
        restaurantId:
          type: string
        deviceToken:
          pattern: \S
          type: string
        language:
          pattern: \S
          type: string
    RddwebserviceNotificationType:
      enum:
        - ORDER
        - COURIER
      type: string
    RddwebserviceNotificationUpdateRequest:
      required:
        - notificationIds
      type: object
      properties:
        notificationIds:
          minItems: 1
          type: array
          items:
            pattern: \S
            type: string
    RddwebserviceOrderStatistics:
      type: object
      properties:
        currentWeek:
          $ref: '#/components/schemas/RddwebserviceWeeklyOrderStatistics'
    RddwebserviceRestaurantNotificationSubscriptionRequest:
      required:
        - deviceToken
        - language
      type: object
      properties:
        deviceToken:
          pattern: \S
          type: string
        language:
          pattern: \S
          type: string
    RddwebserviceRestaurantStatistics:
      type: object
      properties:
        orders:
          $ref: '#/components/schemas/RddwebserviceOrderStatistics'
        couriers:
          type: array
          items:
            $ref: '#/components/schemas/RddwebserviceCourierStatistics'
    RddwebserviceWeeklyOrderStatistics:
      type: object
      properties:
        trackedPercentage:
          format: int32
          type: integer
        totalOrders:
          format: int32
          type: integer
    RealmsCredentials:
      description: The credentials for the identity
      properties:
        userName:
          $ref: '#/components/schemas/RealmsUsername'
      type: object
    RealmsIdentityRecord:
      required:
        - emailAddress
      properties:
        emailAddress:
          description: Identity's preferred email address.
          format: email
          type: string
        familyName:
          description: Surname(s) or last name(s) of the identity
          type: string
        givenName:
          description: Given name(s) or first name(s) of the identity
          type: string
        displayName:
          description: Identity's full name in displayable form including all name parts
          type: string
        roles:
          description: List of strings holding custom roles
          items:
            type: string
          minItems: 0
          type: array
        credentials:
          $ref: '#/components/schemas/RealmsCredentials'
        customClaims:
          items:
            properties:
              name:
                description: Custom claim name
                type: string
              value:
                description: Custom claim value
                type: string
            type: object
          type: array
      type: object
    RealmsIdentityRecordCreatedResponse:
      description: One time access code for an identity
      required:
        - identityId
      properties:
        otac:
          description: One time access code
          type: string
        identityId:
          description: The identity id
          type: string
      type: object
    RealmsIdentityRecordWithoutCredentials:
      required:
        - emailAddress
      description: An identity record with no credentials
      properties:
        emailAddress:
          description: Identity's preferred email address.
          format: email
          type: string
        familyName:
          description: Surname(s) or last name(s) of the identity
          type: string
        givenName:
          description: Given name(s) or first name(s) of the identity
          type: string
        displayName:
          description: Identity's full name in displayable form including all name parts
          type: string
        roles:
          description: List of strings holding custom roles
          items:
            type: string
          minItems: 0
          type: array
        customClaims:
          items:
            properties:
              name:
                description: Custom claim name
                type: string
              value:
                description: Custom claim value
                type: string
            type: object
          type: array
      type: object
    RealmsUsername:
      required:
        - userName
      description: Username credential
      properties:
        userName:
          description: The username of the credential
          type: string
        password:
          description: The credential password in plain text
          type: string
      example:
        userName: jon-doe@justeattakeaway.local
        password: password123
      type: object
    RealtimeEventsRealtimeEventsEvent:
      title: RealTimeEvents_Event
      type: object
      properties:
        tna:
          description: The tracker namespace
          type: string
        aid:
          description: Unique identifier for website / application
          type: string
        p:
          description: The platform the app runs on
          type: string
        dtm:
          description: Timestamp when event occurred, as recorded by client device
          type: string
        tz:
          description: Time zone of client devices OS
          type: string
        e:
          description: Event type
          type: string
        tid:
          description: Not documented
          type: string
        eid:
          description: Event UUID
          type: string
        tv:
          description: Identifier for Snowplow tracker
          type: string
        duid:
          description: Unique identifier for a user, based on a first party cookie (so domain specific)
          type: string
        nuid:
          description: Unique identifier for a user, based on a server-side cookie issued by the collector
          type: string
        uid:
          description: Unique identifier for user, set by the business using `setUserId`
          type: string
        vid:
          description: Index of number of visits that this user_id has made to this domain. 1 is first visit.
          type: string
        ip:
          description: IP address override. This is useful, if traffic is being proxied to a Snowplow collector (optional, as IP Address will be automatically captured by collector)
          type: string
        res:
          description: Screen / monitor resolution
          type: string
        url:
          description: Page URL
          type: string
        page:
          description: Page title
          type: string
        refr:
          description: Referrer URL
          type: string
        fp:
          description: Not documented
          type: string
        ctype:
          description: Not documented
          type: string
        cookie:
          description: Does the browser permit cookies?
          type: string
        lang:
          description: Language the browser is set to
          type: string
        f_pdf:
          description: Not documented
          type: string
        f_qt:
          description: Not documented
          type: string
        f_realp:
          description: Not documented
          type: string
        f_wma:
          description: Not documented
          type: string
        f_dir:
          description: Not documented
          type: string
        f_fla:
          description: Not documented
          type: string
        f_java:
          description: Not documented
          type: string
        f_gears:
          description: Not documented
          type: string
        f_ag:
          description: Not documented
          type: string
        cd:
          description: Browser colour depth
          type: string
        ds:
          description: Web page width and height
          type: string
        cs:
          description: Web page's character encoding
          type: string
        vp:
          description: Browser viewport width and height
          type: string
        mac:
          description: MAC address for the device running the tracker
          type: string
        pp_mix:
          description: Minimum page x offset seen in the last ping period
          type: string
        pp_max:
          description: Maximum page x offset seen in the last ping period
          type: string
        pp_miy:
          description: Minimum page y offset seen in the last ping period
          type: string
        pp_may:
          description: Maximum page y offset seen in the last ping period
          type: string
        ad_ba:
          description: Not documented
          type: string
        ad_ca:
          description: Not documented
          type: string
        ad_ad:
          description: Not documented
          type: string
        ad_uid:
          description: Not documented
          type: string
        tr_id:
          description: Order ID
          type: string
        tr_af:
          description: Transaction affiliation (e.g. channel)
          type: string
        tr_tt:
          description: Transaction total value
          type: string
        tr_tx:
          description: Transaction tax value (i.e. amount of VAT included)
          type: string
        tr_sh:
          description: Delivery cost charged
          type: string
        tr_ci:
          description: Delivery address city
          type: string
        tr_st:
          description: Delivery address state
          type: string
        tr_co:
          description: Delivery address country
          type: string
        tr_cu:
          description: Transaction Currency
          type: string
        ti_id:
          description: Order ID
          type: string
        ti_sk:
          description: Item SKU
          type: string
        ti_nm:
          description: Item name
          type: string
        ti_na:
          description: Item not set
          type: string
        ti_ca:
          description: Item category
          type: string
        ti_pr:
          description: Item price
          type: string
        ti_qu:
          description: Item quantity
          type: string
        ti_cu:
          description: Currency
          type: string
        sa:
          description: Not documented
          type: string
        sn:
          description: Not documented
          type: string
        st:
          description: Not documented
          type: string
        sp:
          description: Not documented
          type: string
        se_ca:
          description: The category of event
          type: string
        se_ac:
          description: The action / event itself
          type: string
        se_la:
          description: A label often used to refer to the object the action is performed on
          type: string
        se_pr:
          description: A property associated with either the action or the object
          type: string
        se_va:
          description: A value associated with the user action
          type: string
        ue_na:
          description: Not documented
          type: string
        ue_pr:
          description: The properties of the event JSON
          type: string
        ue_px:
          description: The properties of the event JSON (URL-safe Base64 encoded)
          type: string
        co:
          description: An array of custom contexts JSON
          type: string
        cx:
          description: An array of custom contexts JSON (URL-safe Base64 encoded)
          type: string
        ua:
          description: The User Agent
          type: string
        tnuid:
          description: Can be used be a tracker to overwrite the `nuid`
          type: string
        stm:
          description: Timestamp when event was sent by client device to collector
          type: string
        sid:
          description: Unique identifier (UUID) for this visit of this user_id to this domain
          type: string
        ttm:
          description: User-set exact timestamp
          type: string
      required:
        - tv
        - p
        - e
      additionalProperties: false
    RealtimeEventsRealtimeEventsRequest:
      title: RealTimeEventsResponse
      description: Event logged to analytics
      type: object
      properties:
        schema:
          type: string
        data:
          type: array
          description: An array of events to be logged
          items:
            $ref: '#/components/schemas/RealtimeEventsRealtimeEventsEvent'
          minItems: 1
      example:
        schema: iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4
        data:
          - e: ue
            eid: 6389ab34-e190-4387-9707-7ec594c68993
            tv: js-3.8.0
            tna: webTracker
            aid: customer_web
            p: web
            cookie: '1'
            cs: UTF-8
            lang: en-GB
            res: 1728x1117
            cd: '30'
            dtm: '1693323505255'
            vp: 847x961
            ds: 847x1667
            vid: '4'
            sid: 1df4bd76-f854-4bde-9533-3a6676699d43
            duid: c1f8dc0f-b8f7-462e-87d9-b5ce8710ef04
            uid: ixDndjh36vagH2hnjH3jbDgS1TU=
            refr: tagassistant.google.com/
            url: https://uk-publicweb-cloudflare-staging-uk.staging-uk.je-labs.com/orders/lbnhcsc2feknrgp5xyrwba
            ue_px: eyJzY2hlbWEiOiJpZ2x1OmNvbS5zbm93cGxvd2FuYWx5dGljcy5zbm93cGxvdy91bnN0cnVjdF9ldmVudC9qc29uc2NoZW1hLzEtMC0wIiwiZGF0YSI6eyJzY2hlbWEiOiJpZ2x1OmpldC5jdXN0L29yZGVyX3B1cmNoYXNlL2pzb25zY2hlbWEvMS0wLTAiLCJkYXRhIjp7fX19
            cx: >-
              eyJzY2hlbWEiOiJpZ2x1OmNvbS5zbm93cGxvd2FuYWx5dGljcy5zbm93cGxvdy9jb250ZXh0cy9qc29uc2NoZW1hLzEtMC0wIiwiZGF0YSI6W3sic2NoZW1hIjoiaWdsdTpqZXQvY3hfdXNlci9qc29uc2NoZW1hLzEtMC0wIiwiZGF0YSI6eyJhbm9ueW1vdXNJZCI6IjVlNjQ1YjY4LTY3ZGQtNGY3MC1iM2I1LWE1NjkwZWJkNDAwZCJ9fSx7InNjaGVtYSI6ImlnbHU6amV0L2N4X3BsYXRmb3JtL2pzb25zY2hlbWEvMS0wLTAiLCJkYXRhIjp7Im5hbWUiOiJ1bmRlZmluZWQiLCJ2ZXJzaW9uIjoiMS4wLjk0NTEiLCJjb3VudHJ5IjoidWsiLCJsYW5ndWFnZSI6ImVuIiwiZW52aXJvbm1elbnQiOiJwcm9kIn19LHsic2NoZW1hIjoiaWdsdTpqZXQvY3hfcGFnZS9qc29uc2NoZW1hLzEtMC0wIiwiZGF0YSI6eyJuYW1lIjoiZm9vZHRyYWNrZXIiLCJpZCI6IjY1ZjYxZDRiLWM4MjEtNDhmYi1iM2I2LTEwNGQwZTE2MzJlNiJ9fSx7InNjaGVtYSI6ImlnbHU6Y29tLmp1c3RlYXQvZ3RtL2pzb25zY2hlbWEvMS0wLTAiLCJkYXRhIjp7ImlkIjoiR1RNLVRNUFg5Rk4iLCJ2ZXJzaW9uIjoiUVVJQ0tfUFJFVklFVyJ9fSx7InNjaGVtYSI6ImlnbHU6amV0LmN1c3QvY3hfcGF5bWVudC9qc29uc2NoZW1hLzEtMC0wIiwiZGF0YSI6eyJpZCI6IkNhc2gifX0seyJzY2hlbWEiOiJpZ2x1OmpldC5jdXN0L2N4X3BhcnRuZXIvanNvbnNjaGVtYS8xLTAtMCIsImRhdGEiOnsiaWQiOiI4MjUxMCJ9fSx7InNjaGVtYSI6ImlnbHU6amV0LmN1c3QvY3hfb3JkZXIvanNvbnNjaGVtYS8xLTAtMCIsImRhdGEiOnsidG90YWwiOjE4LjUsImlkIjoibGJuaGNzYzJmZWtucmdwNXh5cndiYSJ9fV19
            stm: '1693323505256'
    RecommendationsClosedPartnerRecommendationsRequest:
      description: Request body for retrieving closed partner alternative recommendations. Specifies the recommendation context, the closed partner, the customer location and optional service preferences.
      type: object
      required:
        - context
        - location
      properties:
        context:
          type: string
          description: The context in which recommendations are being requested. The closed partner value covers partners that are closed, temporarily offline, throttled, or in pre-order mode. The cancelled order value is used when the customer's order has been cancelled. The menu end alternative partners value is used for the alternative partners carousel displayed at the end of the partner's menu page.
          enum:
            - closedPartner
            - cancelledOrder
            - menuEndAlternativePartners
        partner:
          type: object
          description: Optional details of the partner that triggered the recommendation request if known. The partner identifiers are used to exclude the originating partner from the results and improve filtering.
          properties:
            ids:
              type: array
              nullable: true
              description: Partner identifiers to exclude from recommendations.
              minItems: 1
              maxItems: 100
              items:
                type: string
        location:
          type: object
          description: The customer location used to find nearby alternative partners.
          required:
            - geolocation
          properties:
            geolocation:
              type: object
              description: The geographic coordinates of the customer.
              required:
                - latitude
                - longitude
              properties:
                latitude:
                  type: number
                  format: double
                  description: The latitude of the customer location.
                  minimum: -90
                  maximum: 90
                  example: 51.5074
                longitude:
                  type: number
                  format: double
                  description: The longitude of the customer location.
                  minimum: -180
                  maximum: 180
                  example: -0.1278
            postalCode:
              type: string
              description: The postal code of the customer location. Optional, used to refine results.
              example: E1 6AN
        preferences:
          type: object
          description: Optional service preferences to filter recommendations.
          properties:
            serviceTypes:
              type: array
              description: The service types to filter by.
              items:
                type: string
                enum:
                  - delivery
                  - collection
              default:
                - delivery
                - collection
            lookupTime:
              type: string
              description: ISO 8601 datetime for which to check partner availability. Defaults to the current time if not provided.
              format: date-time
    RecommendationsClosedPartnerRecommendationsResponse:
      description: Response containing a Semantic UI component tree of alternative partner recommendations. Returns a partner carousel with up to 50 recommended open partners, along with an analytics registry for client-side event tracking. When no alternatives are available, the carousel will be null.
      type: object
      properties:
        partnerCarousel:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CatalogueSharedEntitiesCarousel'
            - type: object
              properties:
                data:
                  type: object
                  properties:
                    items:
                      type: array
                      items:
                        $ref: '#/components/schemas/CatalogueSharedEntitiesPartnerCard'
        registry:
          type: object
          nullable: true
          properties:
            analytics:
              $ref: '#/components/schemas/CatalogueSharedEntitiesAnalyticsRegistry'
    RecommendationsMenuRecommendationsRequestV2:
      required:
        - orderRequestDetails
      description: Describes a request for item recommendations for a particular partner's catalogue.
      properties:
        orderRequestDetails:
          $ref: '#/components/schemas/RecommendationsOrderRequestDetailsV2'
      type: object
    RecommendationsMenuRecommendationsResponse:
      required:
        - themes
      description: Contains menu dish recommendations.
      properties:
        themes:
          maxItems: 10
          type: array
          minItems: 0
          items:
            properties:
              recommendations:
                maxItems: 20
                type: array
                minItems: 0
                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
                description: List of dish recommendations for the theme.
              id:
                description: Unique identifier for the theme.
                type: string
            type: object
          description: List of the themes of the recommendations, i.e. personal favourites, most popular, etc.
      type: object
    RecommendationsOrderRequestDetailsV2:
      description: Defines the time and service type for which the order is requested.
      properties:
        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
        dayOfWeek:
          description: The day of the week that the order is placed for.
          enum:
            - sunday
            - monday
            - tuesday
            - wednesday
            - thursday
            - friday
            - saturday
          type: string
        serviceType:
          description: The service type, "collection", "delivery" or "dineIn".
          enum:
            - collection
            - delivery
            - dineIn
          type: string
      required:
        - orderedForTime
        - dayOfWeek
        - serviceType
      type: object
    RecommendationsProductRecommendationsResponse:
      properties:
        renderWithView:
          description: |-
            Gets or sets the name of the UI component that the client should use to display the recommendations,
            which is taken from the experiment data for the user.
          type: string
        titleText:
          description: The title text to display with the recommendations.
          type: string
        bannerTitleText:
          description: The banner title text to display with the recommendations.
          type: string
        recommendations:
          items:
            properties:
              confidence:
                format: double
                description: Gets or sets the confidence level of this recommendation (between 0 and 1).
                type: number
              productId:
                description: Gets or sets the id of the product that is being recommended.
                type: string
              imageUrl:
                description: The URL of the image, if available, to display with the view
                type: string
              auctionId:
                description: The auction ID of the product, when recommended via a third-party ad vendor.
                type: string
                nullable: true
              campaignId:
                description: The campaign identifier from the retail media auction. Null if not a promoted product.
                type: string
                nullable: true
            description: Contains information for a single recommended product.
            type: object
          description: Gets or sets an array of products that are recommended for the source product.
          type: array
        restaurantId:
          description: Gets or sets the restaurant id
          type: string
        currency:
          description: The currency of the item's monetary values, represented as an ISO 4217 currency code.
          type: string
      description: Contains all recommendations for a product.
      type: object
    RecommendationsProductsRequest:
      properties:
        productIds:
          items:
            type: string
          description: An array of product ids for which recommendations are needed.
          type: array
        orderRequestDetails:
          $ref: '#/components/schemas/RecommendationsOrderRequestDetailsV2'
      required:
        - productIds
        - orderRequestDetails
      description: Describes a request for product recommendations based on specified collection of products.
      type: object
    RecommendationsPromotedProductsRequest:
      properties:
        productIds:
          items:
            type: string
          description: An array of product ids for which recommendations are needed.
          type: array
        orderRequestDetails:
          $ref: '#/components/schemas/RecommendationsOrderRequestDetailsV2'
        restaurantId:
          description: The id of the restaurant that the recommendations are for.
          type: string
      required:
        - productIds
        - orderRequestDetails
        - restaurantId
      description: Describes a request for promoted product recommendations based on specified collection of products.
      type: object
    RestaurantListOfOfflineItemsResponse:
      type: object
      properties:
        cursor:
          description: A marker used for 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 null value indicates that the end of the result set has been reached.
              type: string
          type: object
        offlineItems:
          items:
            $ref: '#/components/schemas/RestaurantOfflineItemsResponse'
          description: List of offline items for a given restaurant.
          type: array
      example:
        cursor:
          after: NDMyNzQyODI3OTQw
        offlineItems:
          - type: variation
            id: '111'
            nextAvailableAt: '2021-01-01T05:00:00.0000000'
          - type: variation
            id: '222'
            nextAvailableAt: '2021-01-01T05:00:00.0000000'
          - type: modifier
            id: '888'
            nextAvailableAt: '2021-01-01T05:00:00.0000000'
          - type: modifier
            id: '999'
            nextAvailableAt: '2021-01-01T05:00:00.0000000'
    RestaurantOfflineItemsRequest:
      type: object
      properties:
        modifierIds:
          maxItems: 250
          type: array
          minItems: 0
          items:
            type: string
          description: Modifier identifiers. Maximum sum of 250 Variation and Modifier IDs.
        variationIds:
          maxItems: 250
          type: array
          minItems: 0
          items:
            type: string
          description: Variation identifiers. Maximum sum of 250 Variation and Modifier IDs.
        nextAvailableAt:
          description: Time when items will be brought back online (ISO-8601 Date Time UTC).
          format: date-time
          type: string
          nullable: true
        menuVersionTimestamp:
          description: ISO-8601 string representing the UTC timestamp when the menu data was last updated in the source system. This is used in conjunction with [menu/product-catalogue ingestion](#operation/partnersTenantRestaurantIdProductCataloguePost) to ensure that records of offline items are not removed from our system if the menu data is older than the offline items request.
          format: date-time
          type: string
          nullable: true
      anyOf:
        - required:
            - modifierIds
        - required:
            - variationIds
      example:
        modifierIds:
          - '777'
          - '888'
          - '999'
        variationIds:
          - '111'
          - '222'
          - '333'
        nextAvailableAt: '2021-01-01T05:00:00.0000000'
        menuVersionTimestamp: '2023-06-19T14:28:00Z'
    RestaurantOfflineItemsResponse:
      type: object
      properties:
        type:
          items:
            type: string
          description: Item type identifier.
          type: string
        id:
          items:
            type: string
          description: Item identifier.
          type: string
        nextAvailableAt:
          description: Time when item(s) will be brought back online (ISO-8601 Date Time UTC).
          format: date-time
          type: string
      example:
        type: variation
        id: '111'
        nextAvailableAt: '2021-01-01T05:00:00.0000000'
    RestaurantOnlineItemsRequest:
      type: object
      properties:
        modifierIds:
          maxItems: 250
          type: array
          minItems: 0
          items:
            type: string
          description: Modifier identifiers. Maximum sum of 250 Variation and Modifier IDs.
        variationIds:
          maxItems: 250
          type: array
          minItems: 0
          items:
            type: string
          description: Variation identifiers. Maximum sum of 250 Variation and Modifier IDs.
      anyOf:
        - required:
            - modifierIds
        - required:
            - variationIds
      example:
        modifierIds:
          - '777'
          - '888'
          - '999'
        variationIds:
          - '111'
          - '222'
          - '333'
    RestaurantProductRecommendation:
      title: ProductRecommendation
      additionalProperties: false
      properties:
        productId:
          type: string
          description: A unique identifier for the product
        productType:
          type: string
          description: The type of the product, e.g. popular, healthy
        auctionId:
          type: string
          description: The auction ID of the product, when recommended via a third-party ad vendor.
          nullable: true
      type: object
      description: A recommended product
    RestaurantProductRecommendationsRequest:
      properties:
        orderRequestDetails:
          description: Defines the date and service type for which the order is requested.
          type: object
          properties:
            scheduledFor:
              description: |
                The date & time in ISO 8601 format, that the order is being scheduled for. If this is not known at the time of the request then the current date & time should be supplied.
              type: string
              format: date-time
            serviceType:
              description: The service type, "collection" or "delivery".
              enum:
                - collection
                - delivery
              type: string
    RestaurantProductRecommendationsResponse:
      properties:
        productCollections:
          description: A collection of products recommended according to a theme, for example often-purchased-with
          type: array
          items:
            type: object
            properties:
              id:
                description: The Id of the collection
                type: string
              title:
                description: A description of the collection
                type: string
              recommendations:
                description: An array of Product Recommendations
                type: array
                items:
                  $ref: '#/components/schemas/RestaurantProductRecommendation'
    RestaurantRestaurantErrorResponse:
      type: object
      properties:
        statusCode:
          description: Http response status code
          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
        errorId:
          description: A value that helps identify this response back to logs, so we can easily find this specific fault
          type: string
        timestamp:
          description: Date-time when this request was processed
          format: date-time
          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
      example:
        statusCode: '400'
        errorCode: InvalidCountryCode
        errorId: 6947c692-ca24-434d-8166-d4d54ef8d74e
        timestamp: '2019-10-02T13:34:53.1214447+01:00'
        message: The country code 'zzz' is not supported.
        requestId: 8000324e-0000-f400-b63f-84710c7967bb
    RestaurantVariationReorderDeal:
      title: VariationReorderDeal
      additionalProperties: false
      properties:
        Attributes:
          description: An object containing all the attributes of a Deal
          properties:
            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
            DealGroups:
              items:
                $ref: '#/components/schemas/RestaurantVariationReorderDealGroup'
              description: A list of all the deal groups attached to a deal. 20 items maximum.
              type: array
          additionalProperties: false
          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
      type: object
    RestaurantVariationReorderDealGroup:
      title: VariationReorderDealGroup
      additionalProperties: false
      properties:
        Variations:
          items:
            $ref: '#/components/schemas/RestaurantVariationReorderVariation'
          description: A list of variations in the deal group. 20 items maximum.
          type: array
        Id:
          description: The unique identifier for a deal group.
          type: string
      type: object
    RestaurantVariationReorderModifier:
      title: VariationReorderModifier
      additionalProperties: false
      properties:
        Quantity:
          description: How many of the modifier were previously added to the variation.
          type: integer
        Id:
          description: A unique identifier for the variation modifier.
          type: string
      type: object
    RestaurantVariationReorderModifierGroup:
      title: VariationReorderModifierGroup
      additionalProperties: false
      properties:
        Id:
          description: The unique identifier for a modifier group.
          type: string
        Modifiers:
          items:
            $ref: '#/components/schemas/RestaurantVariationReorderModifier'
          description: A list of modifiers applied in this modifier group. 20 items maximum.
          type: array
      type: object
    RestaurantVariationReorderRankedVariation:
      title: VariationReorderRankedVariation
      additionalProperties: false
      properties:
        Attributes:
          description: An object containing all the attributes of a Deal
          properties:
            Rank:
              description: The position in the variation in the array. The data array is ordered by this ascending.
              type: integer
            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
            ModifierGroups:
              items:
                $ref: '#/components/schemas/RestaurantVariationReorderModifierGroup'
              description: A list of all the modifiers previously applied to the variation. 20 items maximum.
              type: array
          additionalProperties: false
          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
      type: object
    RestaurantVariationReorderVariation:
      title: VariationReorderVariation
      additionalProperties: false
      properties:
        Id:
          description: The unique identifier for the variation.
          type: string
        Quantity:
          description: How many of the variation were previously ordered.
          type: integer
        ModifierGroups:
          items:
            $ref: '#/components/schemas/RestaurantVariationReorderModifierGroup'
          description: A list of all the modifiers previously applied to the variation. 20 items maximum.
          type: array
      type: object
    RestaurantApiPartnerRestaurantTemporaryOfflineStatus:
      type: object
      properties:
        Status:
          description: The offline status
          enum:
            - TempOffline
            - ClosedToday
            - None
          type: string
        Message:
          description: A detailed message about the offline reason
          type: string
      example:
        Status: TempOffline
        Message: Too busy
    RestaurantApiRestaurantDetailsUpdated:
      properties:
        event:
          description: The restaurant details have been updated
          enum:
            - RestaurantUpdated
          format: enum
          type: string
        tenant:
          description: The country the restaurant(s) exists in
          type: string
        restaurants:
          items:
            allOf:
              - $ref: '#/components/schemas/SharedAddressAndGeopositionLowercase'
              - type: object
                properties:
                  id:
                    description: The JUST EAT restaurant id
                    format: integer
                    type: number
          type: array
      type: object
    RestaurantApiRestaurantHoursChanged:
      properties:
        Event:
          description: The details of the restaurant hours change
          enum:
            - OpenHoursForRestaurantChanged
          format: enum
          type: string
        Tenant:
          description: The country the restaurant exists in
          type: string
        OpenHours:
          items:
            properties:
              DayOfWeek:
                format: enum
                description: The day of the week the times are for.
                enum:
                  - Sunday
                  - Monday
                  - Tuesday
                  - Wednesday
                  - Thursday
                  - Friday
                  - Saturday
                type: string
              OpenTime:
                description: The open time (HH:mm)
                type: string
              Closed:
                description: The restaurant is closed for the day
                type: boolean
              CloseTime:
                description: The close time (HH:mm) (Wide clock, i.e. if before start it is following day)
                type: string
            type: object
          type: array
        RestaurantReference:
          description: The JUST EAT Restaurant Id
          type: string
      type: object
    RestaurantApiRestaurantInformationUpdated:
      properties:
        event:
          description: The event type
          enum:
            - RestaurantInformationUpdated
          format: enum
          type: string
        RestaurantInformationUpdated:
          description: The information update
          properties:
            Tenant:
              description: The country the restaurant exists in
              type: string
            RestaurantId:
              description: The JUST EAT Restaurant Id
              type: string
            RestaurantInfo:
              description: The restaurant information
              properties:
                id:
                  type: integer
                  description: The id
                email:
                  type: string
                  description: The contact email
                phoneNumber:
                  type: string
                  description: The phone number of the restaurant
                companyNo:
                  type: string
                  description: The company number
                allergenUrl:
                  type: string
                  description: URL for allergen information
                ownerName:
                  type: string
                  description: The owner's name
                signupReference:
                  type: string
                  description: The sign up reference
                alternativeOwnerNumber:
                  type: string
                  description: An alternative phone number
                address:
                  $ref: '#/components/schemas/SharedAddressAndGeopositionLowercase'
                mobileNumber:
                  type: string
                  description: The mobile number of the restaurant
                brandName:
                  type: string
                  description: The brand name for the restaurant
                openingClosingTimes:
                  description: The restaurant opening and closing times for all days of the week
                  properties:
                    wednesdayClosed:
                      type: boolean
                      description: true if closed
                    mondayOpeningTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    tuesdayClosed:
                      type: boolean
                      description: true if closed
                    saturdayOpeningTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    thursdayOpeningTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    sundayClosed:
                      type: boolean
                      description: true if closed
                    fridayOpeningTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    thursdayClosingTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    fridayClosingTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    wednesdayOpeningTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    fridayClosed:
                      type: boolean
                      description: true if closed
                    mondayClosingTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    tuesdayClosingTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    saturdayClosed:
                      type: boolean
                      description: true if closed
                    sundayOpeningTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    tuesdayOpeningTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    sundayClosingTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    mondayClosed:
                      type: boolean
                      description: true if closed
                    wednesdayClosingTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                    thursdayClosed:
                      type: boolean
                      description: true if closed
                    saturdayClosingTimeOfDay:
                      type: string
                      description: The time of day the restaurant closes
                  type: object
                allergenPhoneNumber:
                  type: string
                  description: The phone number for allergen information
                name:
                  type: string
                  description: The restaurant's name
                alternativeOwnerName:
                  type: string
                  description: An alternative owner's name
                seoName:
                  type: string
                  description: The SEO name of the restaurant
                logoUrl:
                  type: string
                  description: The URL of the restaurant's logo
                legalName:
                  type: string
                  description: The restaurant's legal name
              type: object
          type: object
      type: object
    RestaurantApiRestaurantOfflineStatus:
      properties:
        Event:
          description: The restaurant's offline status
          enum:
            - RestaurantOfflineStatus
          format: enum
          type: string
        RestaurantReference:
          description: The JUST EAT Restaurant Id
          type: string
        RestaurantOfflineStatus:
          $ref: '#/components/schemas/RestauranteventsRestaurantOfflineStatus'
      type: object
      description: An event representing a change in the restaurant's offline status
    RestaurantApiRestaurantStatus:
      properties:
        Event:
          description: An object representing a change in the restaurant's status
          enum:
            - RestaurantStatusChange
          format: enum
          type: string
        Status:
          description: The new status
          enum:
            - online
            - offline
          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
      type: object
    RestaurantPromotionsMenuConsumerPromotions:
      description: Menu Consumer promotions containing WebView content.
      type: object
      properties:
        promotionBanner:
          nullable: true
          type: object
          description: Promotion banner object containing tracking ID and field information.
          required:
            - fields
          properties:
            trackingId:
              nullable: true
              type: string
              description: |
                Tracking identifier for analytics and user interaction monitoring.
                Likely, but not guaranteed, to be a UUID.
              example: 00000000-0000-0000-0000-000000000000
            fields:
              $ref: '#/components/schemas/DynamicContentServiceOrchestratedContentFieldsLayoutWebViewItem'
        socialProofing:
          nullable: true
          type: object
          description: Social proofing content for displaying urgent, quality, or confidence social proofing tags on the menu page.
          properties:
            tags:
              nullable: true
              type: object
              allOf:
                - $ref: '#/components/schemas/CatalogueSharedEntitiesTagContainer'
      example:
        promotionBanner:
          trackingId: 00000000-0000-0000-0000-000000000000
          fields:
            ref: https://one-web-staging.just-eat.co.uk/search-webviews/static/example.html
            data:
              container:
                content:
                  image: https://just-eat-prod-eu-res.cloudinary.com/image/upload/example.png
                  background: '#f8e7b3'
                  title: Exclusive Offer
                  cta: Order Now
                  hero_text: 20%
                actions: []
              subtitle:
                content:
                  part1_text: 'Get '
                  part1_type: normal
                  part2_text: '20% off '
                  part2_type: bold
                  part3_text: ' your next order'
                  part3_type: normal
        socialProofing:
          tags:
            type: container
            data:
              items:
                - type: tag
                  meta:
                    theme:
                      name: socialProofing1
                  data:
                    icon:
                      type: icon
                      data:
                        name: star
                    label:
                      type: text
                      meta:
                        tags:
                          role: caption
                      data:
                        value: 2000+ returning customers
    RestaurantRestaurantEmailAddress:
      properties:
        emailAddress:
          description: The email address of the restaurant that the login link will be sent to
          type: string
      type: object
    RestaurantPortal401Response:
      type: object
      properties:
        status:
          description: HTTP status message
          type: string
        code:
          description: HTTP status code
          type: string
        message:
          description: Server message
          type: string
    RestaurantPortal500Response:
      type: object
      properties:
        status:
          description: HTTP status message
          type: string
        code:
          description: HTTP status code
          type: string
        message:
          description: Server message
          type: string
    RestaurantPortalMerchandiseMerchandiseCategoriesResponse:
      type: object
      properties:
        status:
          description: HTTP status message
          type: string
        code:
          description: HTTP status code
          type: string
        message:
          description: Server message
          type: string
        data:
          description: Returned data
          type: object
          properties:
            categories:
              description: An array with categories
              type: array
              additionalProperties:
                type: object
                properties:
                  name:
                    description: Category name
                    type: string
                  img:
                    description: Category image
                    type: string
                  url:
                    description: Full category URL in Webshop
                    type: string
                  seo_url:
                    description: SEO-friendly URL
                    type: string
                  totalProducts:
                    description: Products in category
                    type: integer
                  id:
                    description: Category id
                    type: integer
            baseUrl:
              description: Webshop URL
              type: string
      example:
        status: OK
        code: '200'
        message: success
        data:
          baseUrl: https://shop.thuisbezorgd.nl/merchandiseservices/login/return?id=1&token=some-token
          categories:
            - name: Disposables
              img: https://some.com/img.png
              url: https://shop.thuisbezorgd.nl/merchandiseservices/login/return?id=1&token=some-token&goto=/nl/disposables
              seo_url: /nl/disposables
              totalProducts: 10
              id: 2
            - name: Merchandise
              img: https://some.com/img.png
              url: https://shop.thuisbezorgd.nl/merchandiseservices/login/return?id=1&token=some-token&goto=/nl/merchandise
              seo_url: /nl/merchandise
              totalProducts: 10
              id: 3
    RestaurantPortalMerchandiseMerchandiseLinkResponse:
      type: object
      properties:
        status:
          description: HTTP status message
          type: string
        code:
          description: HTTP status code
          type: string
        message:
          description: Server message
          type: string
        data:
          description: Webshop login link
          type: string
      example:
        status: OK
        code: '200'
        message: success
        data: https://shop.thuisbezorgd.nl/merchandiseservices/login/return?id=1&token=d08208309430c668a22d6f30b1609bbcf70e4ae2e0cbaa365e12152e4c6b278665555abf7e90ac4d667666af2897adf59801d4c147f0ba6cbe234fe8d12b7504
    RestaurantPortalMerchandiseMerchandiseUrlResponse:
      type: object
      properties:
        status:
          description: HTTP status message
          type: string
        code:
          description: HTTP status code
          type: string
        message:
          description: Server message
          type: string
        data:
          description: Webshop URL
          type: string
      example:
        status: OK
        code: '200'
        message: success
        data: https://shop.thuisbezorgd.nl/nl/
    RestaurantPortalMerchandiseMerchandiseWebshopAccessControlResponse:
      type: object
      properties:
        status:
          description: HTTP status message
          type: string
        code:
          description: HTTP status code
          type: string
        message:
          description: Server message
          type: string
        data:
          description: Returned data
          type: object
          properties:
            webshop_categories_link:
              description: Can link to categories
              type: boolean
      example:
        status: OK
        code: '200'
        message: success
        data:
          webshop_categories_link: true
    RestaurantSegmentationAssessmentStatusTypes:
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
      type: integer
      description: Denotes the type of segmentation status that restaurant can have
      format: enum
      example: 1
      x-enumNames:
        - Unknown
        - LocalLegend
        - Gold
        - Silver
        - New
    RestaurantSegmentationCustomerExperienceScoreDetail:
      properties:
        score:
          description: Represent the customer experience score achieved by the restaurant
          type: number
        requiredScore:
          description: Represent the customer experience score required to pass the customer experience score criteria
          type: number
        maximumScore:
          description: Represent the maximum customer experience score that can be achieved by the restaurant
          type: number
        scoreType:
          description: Represent the type of score data. It would always be number (0) customer experience score.
          $ref: '#/components/schemas/RestaurantSegmentationScoreTypes'
        hasPassed:
          description: Represent if the restaurant has passed the customer experience score criteria
          type: boolean
      description: Details of how customer experience score has contributed to get the segmentation status
      example:
        score: 12
        requiredScore: 40
        maximumScore: 50
        scoreType: 0
        hasPassed: false
      type: object
    RestaurantSegmentationHygieneScheme:
      enum:
        - 0
        - 1
        - 2
      type: integer
      description: Denotes the type of hygiene scheme supported
      example: 1
      x-enumNames:
        - Unknown
        - FHRS
        - FHIS
    RestaurantSegmentationHygieneScoreDetail:
      properties:
        score:
          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
          anyOf:
            - type: number
            - type: string
            - type: object
        requiredScore:
          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
          anyOf:
            - type: number
            - type: string
            - type: object
        scheme:
          description: Represent the hygiene scheme used by the restaurant
          $ref: '#/components/schemas/RestaurantSegmentationHygieneScheme'
        maximumScore:
          nullable: true
          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
          anyOf:
            - type: number
            - type: string
            - type: object
        scoreType:
          description: Represent the type of score data. Value of this field will depend which hygiene method is supported by restaurant.
          $ref: '#/components/schemas/RestaurantSegmentationScoreTypes'
        hasPassed:
          description: Represent if the restaurant has passed the hygiene score criteria
          type: boolean
      description: Details of hygiene rating experience score has contributed to get the segmentation status
      example:
        score: 5
        requiredScore: 3
        scheme: 1
        maximumScore: 5
        scoreType: 0
        hasPassed: true
      type: object
    RestaurantSegmentationOnItsWayPercentage:
      properties:
        requiredScore:
          description: Represent the on its way percentage required to pass the on-its-way threshold
          type: number
        hasPassed:
          description: Represent if the restaurant has passed the on-its-way threshold
          type: boolean
        score:
          description: Represent the on-its-way percentage of restaurant
          type: number
        scoreType:
          description: Represent the type of score data. It would always be percentage (1) for on-its-way.
          $ref: '#/components/schemas/RestaurantSegmentationScoreTypes'
      description: Details of how on its way experience score has contributed to get the segmentation status
      example:
        requiredScore: 70
        hasPassed: true
        score: 84
        scoreType: 1
      type: object
    RestaurantSegmentationOrderScoreDetail:
      properties:
        score:
          description: Represent the order score achieved by the restaurant
          type: number
        requiredScore:
          description: Represent the order score required to pass the order score criteria
          type: number
        maximumScore:
          description: Represent the maximum order score that can be achieved by the restaurant
          type: number
        scoreType:
          description: Represent the type of score data. It would always be number (0) customer experience score.
          $ref: '#/components/schemas/RestaurantSegmentationScoreTypes'
        hasPassed:
          description: Represent if the restaurant has passed the order score criteria
          type: boolean
      description: Details of how order score has contributed to get the segmentation status
      example:
        score: 48
        requiredScore: 20
        maximumScore: 50
        scoreType: 0
        hasPassed: true
      type: object
    RestaurantSegmentationScoreTypes:
      enum:
        - 0
        - 1
        - 2
      type: integer
      description: Represent the type of score data. Value of this field will depend on the category.
      example: 2
      x-enumNames:
        - Number
        - Percentage
        - Custom
    RestaurantSegmentationSegmentationHistory:
      properties:
        status:
          description: The segmentation status for restaurant
          $ref: '#/components/schemas/RestaurantSegmentationAssessmentStatusTypes'
        hasLocalLegendCriteriaBeenMet:
          description: Represents if the restaurant achieved local legend status at that point or not
          type: boolean
        dateAssessed:
          format: date-time
          description: Date and time when the segmentation assessment was made
          type: string
      type: object
      description: Represents list of last four segmentation statuses, sorted reverse chronologically by assessment date.
      example:
        status: 1
        hasLocalLegendCriteriaBeenMet: true
        dateAssessed: '2019-12-31T00:00:00.0000000+00:00'
    RestaurantSegmentationSegmentationHistoryList:
      items:
        $ref: '#/components/schemas/RestaurantSegmentationSegmentationHistory'
      description: Represents list of last four segmentation statuses, sorted reverse chronologically by assessment date.
      type: array
    RestaurantSegmentationSegmentationStatus:
      properties:
        status:
          description: The segmentation status for restaurant
          $ref: '#/components/schemas/RestaurantSegmentationAssessmentStatusTypes'
        details:
          description: Represent the details of segmentation status
          $ref: '#/components/schemas/RestaurantSegmentationSegmentationStatusDetail'
        lastUpdated:
          description: Timestamp of last status change
          format: date-time
          type: string
        id:
          description: The JUST EAT restaurant id
          format: integer
          type: number
      type: object
    RestaurantSegmentationSegmentationStatusDetail:
      description: Represent the details of segmentation status sub-scores
      properties:
        customerExperienceScore:
          description: Details of how customer experience score has contributed to get the segmentation status
          $ref: '#/components/schemas/RestaurantSegmentationCustomerExperienceScoreDetail'
        onItsWayPercentage:
          description: Details of how on its way experience score has contributed to get the segmentation status
          $ref: '#/components/schemas/RestaurantSegmentationOnItsWayPercentage'
        hygiene:
          description: Details of hygiene rating experience score has contributed to get the segmentation status
          $ref: '#/components/schemas/RestaurantSegmentationHygieneScoreDetail'
        orderScore:
          description: Details of how order score has contributed to get the segmentation status
          $ref: '#/components/schemas/RestaurantSegmentationOrderScoreDetail'
      type: object
    RestaurantactionsAdditionalChargeAdjustment:
      type: object
      description: Additional charge adjustment payload
      required:
        - orderId
        - amount
      properties:
        orderId:
          type: string
          description: Order ID for the adjustment
        restaurantId:
          type: string
          description: Restaurant ID
          nullable: true
        amount:
          type: number
          format: double
          description: Adjustment amount
        reason:
          type: string
          description: Reason for the adjustment
          nullable: true
        tenant:
          $ref: '#/components/schemas/RestaurantactionsTenant'
    RestaurantactionsAssignRestaurantAction:
      type: object
      description: Request to assign a restaurant action to a user
      required:
        - assignedToId
        - assignedToName
      properties:
        assignedToId:
          type: string
          description: ID of the user to assign to
        assignedToName:
          type: string
          description: Name of the user to assign to
    RestaurantactionsAssignedUser:
      type: object
      description: User assigned to an action
      nullable: true
      properties:
        id:
          type: string
          description: User ID
        name:
          type: string
          description: User name
        assignedTime:
          type: integer
          format: int64
          description: Assignment timestamp (epoch millis)
    RestaurantactionsCallToConfirmCallOrder:
      type: string
      description: Order of call-to-confirm attempts
      enum:
        - first
        - second
        - third
    RestaurantactionsCloseRestaurantAction:
      type: object
      description: Request to close a restaurant action
      properties:
        closeReason:
          type: string
          description: Reason for closing the action
        notes:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantactionsNoteInput'
          description: Closing notes
    RestaurantactionsCreateAdditionalChargeRestaurantAction:
      type: object
      description: Request to create an additional charge action
      required:
        - orderId
        - restaurantId
        - amount
      properties:
        orderId:
          type: string
          description: Order ID for the charge
        restaurantId:
          type: string
          description: Restaurant ID
        amount:
          type: number
          format: double
          description: Charge amount
        reason:
          type: string
          description: Reason for the charge
        notes:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantactionsNoteInput'
          description: Additional notes
    RestaurantactionsCreateCallRestaurantToProvideAssistanceAction:
      type: object
      description: Request to create a call for assistance action
      required:
        - orderId
        - restaurantId
      properties:
        orderId:
          type: string
          description: Order ID requiring assistance
        restaurantId:
          type: string
          description: Restaurant ID to call
        notes:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantactionsNoteInput'
          description: Notes for the assistance request
    RestaurantactionsCreateRestaurantAction:
      type: object
      description: Request to create a new restaurant action
      required:
        - situation
      properties:
        situation:
          $ref: '#/components/schemas/RestaurantactionsRestaurantSituation'
        orderId:
          type: string
          description: Order ID associated with this action
          nullable: true
        restaurantId:
          type: string
          description: Restaurant ID
          nullable: true
        notes:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantactionsNoteInput'
          description: Initial notes for the action
        urgency:
          type: integer
          description: Urgency level
        customerId:
          type: string
          description: Customer ID
          nullable: true
        courierId:
          type: string
          description: Courier ID
          nullable: true
    RestaurantactionsDelayedCallToConfirm:
      type: object
      description: Delayed call-to-confirm task payload
      required:
        - actionId
      properties:
        actionId:
          type: string
          description: Action ID to process
        restaurantId:
          type: string
          description: Restaurant ID
          nullable: true
        orderId:
          type: string
          description: Order ID
          nullable: true
        callOrder:
          $ref: '#/components/schemas/RestaurantactionsCallToConfirmCallOrder'
        tenant:
          $ref: '#/components/schemas/RestaurantactionsTenant'
    RestaurantactionsDelayedCheckPendingCallToConfirm:
      type: object
      description: Delayed check pending call-to-confirm task payload
      required:
        - actionId
      properties:
        actionId:
          type: string
          description: Action ID to check
        restaurantId:
          type: string
          description: Restaurant ID
          nullable: true
        tenant:
          $ref: '#/components/schemas/RestaurantactionsTenant'
    RestaurantactionsError:
      type: object
      description: Standard error response
      properties:
        code:
          type: integer
          format: int32
          description: Error code
        message:
          type: string
          description: Error message
    RestaurantactionsModifiedUser:
      type: object
      description: User who modified a resource
      required:
        - id
        - name
        - type
      properties:
        id:
          type: string
          description: User identifier
        name:
          type: string
          description: User name
        type:
          type: string
          description: User type
        time:
          type: integer
          format: int64
          description: Modification timestamp (epoch millis)
          nullable: true
    RestaurantactionsNote:
      type: object
      description: A note on a restaurant action
      properties:
        id:
          type: string
          description: Note ID
        content:
          type: string
          description: Note content
        type:
          type: string
          description: Type of note
          nullable: true
        createdBy:
          $ref: '#/components/schemas/RestaurantactionsModifiedUser'
        createdTime:
          type: integer
          format: int64
          description: Created timestamp (epoch millis)
    RestaurantactionsNoteInput:
      type: object
      description: Note input for creating or updating notes
      required:
        - content
      properties:
        content:
          type: string
          description: Note content
        type:
          type: string
          description: Type of note
          nullable: true
    RestaurantactionsOrderOptions:
      type: string
      description: Sort order options
      enum:
        - asc
        - desc
    RestaurantactionsReimbursementEligibility:
      type: object
      description: Reimbursement eligibility status
      properties:
        eligible:
          type: boolean
          description: Whether the order is eligible for reimbursement
        reason:
          type: string
          description: Reason for eligibility status
          nullable: true
        amount:
          type: number
          format: double
          description: Eligible reimbursement amount
          nullable: true
    RestaurantactionsRestaurantAction:
      type: object
      description: Restaurant action details
      properties:
        id:
          type: string
          description: Action ID
        situation:
          $ref: '#/components/schemas/RestaurantactionsRestaurantSituation'
        status:
          $ref: '#/components/schemas/RestaurantactionsStatus'
        urgency:
          type: integer
          description: Urgency level
        active:
          type: boolean
          description: Whether the action is active
        visible:
          type: boolean
          description: Whether the action is visible
        orderId:
          type: string
          description: Associated order ID
          nullable: true
        orderNumber:
          type: integer
          format: int32
          description: Order number
          nullable: true
        restaurantId:
          type: string
          description: Restaurant ID
          nullable: true
        restaurantName:
          type: string
          description: Restaurant name
          nullable: true
        restaurantShortName:
          type: string
          description: Restaurant short name
          nullable: true
        restaurantLocationName:
          type: string
          description: Restaurant location name
          nullable: true
        customerId:
          type: string
          description: Customer ID
          nullable: true
        customerName:
          type: string
          description: Customer name
          nullable: true
        courierId:
          type: string
          description: Courier ID
          nullable: true
        courierName:
          type: string
          description: Courier name
          nullable: true
        notes:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantactionsNote'
          description: Action notes
        assignedTo:
          $ref: '#/components/schemas/RestaurantactionsAssignedUser'
        createdBy:
          $ref: '#/components/schemas/RestaurantactionsModifiedUser'
        lastModifiedBy:
          $ref: '#/components/schemas/RestaurantactionsModifiedUser'
        createdTime:
          type: integer
          format: int64
          description: Created timestamp (epoch millis)
        lastModifiedTime:
          type: integer
          format: int64
          description: Last modified timestamp (epoch millis)
        tenant:
          $ref: '#/components/schemas/RestaurantactionsTenant'
    RestaurantactionsRestaurantActionList:
      type: object
      description: Paginated list of restaurant actions
      properties:
        actions:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantactionsRestaurantAction'
          description: List of restaurant actions
        total:
          type: integer
          format: int64
          description: Total number of actions matching the query
        limit:
          type: integer
          description: Pagination limit used
        offset:
          type: integer
          description: Pagination offset used
    RestaurantactionsRestaurantSituation:
      type: string
      description: Type of restaurant situation/action
      enum:
        - callRestaurantToConfirmOrder
        - generalActionForRestaurant
        - performMiscActionForOrder
        - callRestaurantToAssessCourierHold
        - callRestaurantToProvideAssistanceWithOrder
        - assessHighValueOrder
        - informRestaurantOfChangeInCollectionTime
        - performMiscActionForRestaurant
        - updateRestaurantOfUnreachableCustomer
        - restaurantChargedForHeldCourier
        - noteRefundedMissedItem
        - noteCancelledRejectedOrder
        - noteRestaurantChargedForRedelivery
        - restaurantEftAction
        - remakeReimbursementAction
    RestaurantactionsRestaurantSituationRules:
      type: object
      description: Rules for a restaurant situation
      properties:
        situation:
          $ref: '#/components/schemas/RestaurantactionsRestaurantSituation'
        urgency:
          type: integer
          description: Default urgency level
        autoClose:
          type: boolean
          description: Whether to auto-close actions of this type
        autoCloseAfterMinutes:
          type: integer
          description: Minutes after which to auto-close
          nullable: true
        visible:
          type: boolean
          description: Whether actions are visible by default
        enabled:
          type: boolean
          description: Whether this situation is enabled
    RestaurantactionsRestaurantSituationRulesList:
      type: object
      description: List of restaurant situation rules for bulk update
      required:
        - rules
      properties:
        rules:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantactionsRestaurantSituationRules'
          description: List of situation rules
    RestaurantactionsStatus:
      type: string
      description: Status of a restaurant action
      enum:
        - open
        - closed
        - archived
      x-assumption: Status values inferred from domain Status enum
    RestaurantactionsTenant:
      type: string
      description: Tenant identifier
      x-assumption: Tenant is an external type, represented as string
      example: SKIP
    RestaurantactionsTwilioCall:
      type: object
      description: Twilio call status webhook payload
      required:
        - callSid
        - callStatus
      properties:
        callSid:
          type: string
          description: Twilio call SID
        callStatus:
          type: string
          description: Current call status
        from:
          type: string
          description: Caller phone number
          nullable: true
        to:
          type: string
          description: Recipient phone number
          nullable: true
        direction:
          type: string
          description: Call direction (inbound/outbound)
          nullable: true
        duration:
          type: integer
          description: Call duration in seconds
          nullable: true
        timestamp:
          type: string
          format: date-time
          description: Timestamp of the status change
          nullable: true
    RestaurantactionsUpdateRestaurantAction:
      type: object
      description: Request to update an existing restaurant action
      properties:
        situation:
          $ref: '#/components/schemas/RestaurantactionsRestaurantSituation'
        urgency:
          type: integer
          description: Urgency level
        status:
          $ref: '#/components/schemas/RestaurantactionsStatus'
        active:
          type: boolean
          description: Whether the action is active
    RestaurantactionsUpdateRestaurantActionNote:
      type: object
      description: Request to update notes on a restaurant action
      required:
        - notes
      properties:
        notes:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantactionsNoteInput'
          description: Notes to add or update
    RestaurantcapabilitiesRestaurantCapabilitiesPaymentTypeItem:
      properties:
        paymentType:
          enum:
            - ApplePay
            - Card
            - Cash
            - GooglePay
            - PayPal
            - VCO
          description: The payment type
          type: string
        cardTypes:
          items:
            enum:
              - AMEX
              - DK
              - MASTERCARD
              - VISA
              - VISADK
            format: enum
            type: string
            nullable: true
          description: List of card types (only applies to `Card` payment type)
          type: array
        token:
          description: Token to be used with the payment type (only applies to `PayPal` payment type)
          type: string
          nullable: true
        voucherAvailable:
          description: Flag to indicate if vouchers are available for the payment type
          type: boolean
        maxOrderValueCents:
          format: integer
          description: Max order value in smallest unit of relevant currency (only applies to `Cash` payment type)
          type: number
          nullable: true
        selected:
          description: Flag to indicate if the payment type has been selected
          type: boolean
      type: object
      example:
        paymentType: Card
        selected: false
        voucherAvailable: true
        cardTypes:
          - VISA
          - MASTERCARD
          - AMEX
    RestaurantcapabilitiesRestaurantCapabilitiesResponse:
      type: object
      properties:
        availablePaymentTypes:
          items:
            $ref: '#/components/schemas/RestaurantcapabilitiesRestaurantCapabilitiesPaymentTypeItem'
          description: List of available payment types
          type: array
      example:
        availablePaymentTypes:
          - paymentType: ApplePay
            selected: true
            voucherAvailable: true
          - paymentType: GooglePay
            selected: false
            voucherAvailable: true
          - paymentType: PayPal
            selected: false
            voucherAvailable: true
            token: token123
          - paymentType: VCO
            selected: false
            voucherAvailable: true
          - paymentType: Cash
            selected: false
            voucherAvailable: true
            maxOrderValueCents: 5000
          - paymentType: Card
            selected: false
            voucherAvailable: true
            cardTypes:
              - VISA
              - MASTERCARD
              - AMEX
    RestaurantclaimsClaimDispute:
      type: object
      description: Dispute of the customer claim
      example:
        disputeReason: Ice cream is meant to be cold
      properties:
        disputeReason:
          nullable: false
          description: Comment from the restaurant owner in case they want to dispute the customer claim describing the details as to why the claim should be rejected
          type: string
    RestaurantclaimsClaimResolution:
      properties:
        decision:
          enum:
            - Accepted
            - PartiallyAccepted
            - Disputed
            - Rejected
          description: Indicates whether the claim is accepted, partially accepted disputed, or rejected - claim is partially accepted if at least one of the claimed items is accepted
          type: string
        resolvedDate:
          format: date-time
          description: Date when decision on the claim was submitted
          type: string
        totalClaimedAccepted:
          description: Total claimed money accepted by the restaurant in smallest unit of relevant currency
          type: number
        resolvedChannel:
          description: Channel which was used to resolved the claim
          type: string
      type: object
      description: Representation of the decision made about a claim
      nullable: true
      example:
        decision: Accepted
        resolvedDate: '2020-05-28T07:40:48.1053368+01:00'
        totalClaimedAccepted: 1900
        resolvedChannel: PartnerCentre
    RestaurantclaimsClaimsResponse:
      properties:
        claims:
          items:
            $ref: '#/components/schemas/RestaurantclaimsOrderClaim'
          description: Array with claims
          type: array
      type: object
      description: Response containing claims for a restaurant which match the given filter
      example:
        claims:
          - totalClaimed: 4000
            resolution:
              decision: Accepted
              resolvedDate: '2020-05-28T07:40:48.1053368+01:00'
              totalClaimedAccepted: 4000
              resolvedChannel: OrderPad
            issueType: LateOrder
            state: Closed
            id: z2749442-a62a-abcd-8623-04202878e034
            friendlyOrderReference: '954226580'
            restaurantResponse:
              decision: Accepted
              justification: null
            submittedDate: '2020-05-20T15:22:11.1053368+01:00'
            expirationDate: '2020-05-22T15:22:11.1053368+01:00'
            orderId: z27tqoxdoeupdx9w8evorw
            currency: GBP
          - orderId: r23tqoxdoeupdx9w8evorw
            issueType: Damaged
            affectedItems:
              - reference: productid%4t56574596
                decision: NotDecided
                name: Potato skin
                totalClaimed: 1900
                unitPrice: 2000
                id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                quantity: 1
                additionalContext: null
              - reference: productid%t5y6574596
                decision: NotDecided
                name: Pizza
                totalClaimed: 1900
                unitPrice: 2000
                id: 123iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                quantity: 1
                additionalContext: null
            totalClaimed: 3800
            expirationDate: '2020-05-22T15:22:11.1053368+01:00'
            currency: GBP
            state: Open
            resolution: null
            id: 2f749442-a62a-abcd-8623-04202878e034
            friendlyOrderReference: '451226580'
            submittedDate: '2020-05-20T15:22:11.1053368+01:00'
            restaurantResponse: null
          - orderId: a23tqoxdoeupdx9w8evorw
            issueType: Cold
            affectedItems:
              - reference: productid%4t56574596
                decision: Rejected
                name: Potato skin
                totalClaimed: 1900
                unitPrice: 2000
                id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                quantity: 1
                additionalContext: Potato skin was cold
            totalClaimed: 1900
            expirationDate: '2020-05-22T15:22:11.1053368+01:00'
            currency: GBP
            state: Closed
            resolution:
              decision: Rejected
              resolvedDate: '2020-05-28T07:40:48.1053368+01:00'
              totalClaimedAccepted: 0
              resolvedChannel: PartnerCentre
            id: 1f749442-a62a-abcd-8623-04202878e034
            friendlyOrderReference: '151226580'
            submittedDate: '2020-05-20T15:22:11.1053368+01:00'
            restaurantResponse:
              items:
                - decision: Rejected
                  id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
              justification:
                comments: null
                reason: OrderWasHot
          - orderId: z23tqoxdoeupdx9w8evorw
            issueType: Cold
            affectedItems:
              - reference: productid%4t56574596
                decision: Accepted
                name: Potato skin
                totalClaimed: 1900
                unitPrice: 2000
                id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                quantity: 1
                additionalContext: Potato skin was cold
            totalClaimed: 1900
            expirationDate: '2020-05-22T15:22:11.1053368+01:00'
            currency: GBP
            state: Closed
            resolution:
              decision: Accepted
              resolvedDate: '2020-05-28T07:40:48.1053368+01:00'
              totalClaimedAccepted: 1900
              resolvedChannel: OrderPad
            id: zf749442-a62a-abcd-8623-04202878e034
            friendlyOrderReference: '951226580'
            submittedDate: '2020-05-20T15:22:11.1053368+01:00'
            restaurantResponse:
              items:
                - decision: Accepted
                  id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
              justification: null
          - orderId: z23tqoxdoeupdx9w8evorz
            issueType: Cold
            affectedItems:
              - reference: productid%4t56574596
                decision: Accepted
                name: Potato skin
                totalClaimed: 1900
                unitPrice: 2000
                id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                quantity: 1
                additionalContext: Potato skin was cold
              - reference: productid%4t56574593
                decision: Rejected
                name: Meat
                totalClaimed: 2900
                unitPrice: 3000
                id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc3
                quantity: 1
                additionalContext: Meat was terribly cold
            totalClaimed: 1900
            expirationDate: '2020-05-22T15:22:11.1053368+01:00'
            currency: GBP
            state: Closed
            resolution:
              decision: PartiallyAccepted
              resolvedDate: '2020-05-28T07:40:48.1053368+01:00'
              totalClaimedAccepted: 1900
              resolvedChannel: OrderPad
            id: zf749442-a62a-abcd-8623-04202878e038
            friendlyOrderReference: '951226588'
            submittedDate: '2020-05-20T15:22:11.1053368+01:00'
            restaurantResponse:
              items:
                - decision: Accepted
                  id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
                - decision: Rejected
                  id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc3
              justification: null
    RestaurantclaimsGenerateUploadUrlRequest:
      properties:
        fileName:
          description: Name of the file to be uploaded (including extension)
          type: string
        fileSizeBytes:
          description: Size of the file in bytes. Used to enforce upload size limits.
          type: integer
          format: int64
      required:
        - fileName
        - fileSizeBytes
      type: object
      description: Request containing information about the dispute evidence file to be uploaded to an AWS S3 bucket
      example:
        fileName: receipt.jpg
        fileSizeBytes: 204800
    RestaurantclaimsGenerateUploadUrlResponse:
      properties:
        url:
          description: Presigned S3 URL the client should use for uploading the the dispute evidence file to an AWS S3 bucket
          type: string
        key:
          description: S3 object key for the uploaded file. Store this to reference the evidence after upload.
          type: string
        expiresAt:
          description: The date and time at which the presigned URL expires, in ISO 8601 UTC format. After this time the URL is no longer valid and a new one must be requested.
          type: string
          format: date-time
      required:
        - url
        - key
        - expiresAt
      type: object
      description: Response containing the presigned URL for uploading dispute evidence to an AWS S3 bucket
      example:
        url: https://s3.eu-west-1.amazonaws.com/dispute-evidence-bucket/uk/2026/06/15/abc123-receipt.jpg?X-Amz-Signature=...
        key: uk/2026/06/15/abc123-receipt.jpg
        expiresAt: '2026-06-15T10:15:00Z'
    RestaurantclaimsItem:
      properties:
        decision:
          enum:
            - NotDecided
            - Accepted
            - Rejected
          description: Indicates whether decision on the claimed item was made and what was that decision
          type: string
        name:
          description: Item name
          type: string
        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
        id:
          description: Item identifier
          type: string
        quantity:
          description: Quantity of items
          type: number
        additionalContext:
          nullable: true
          description: Comment giving additional context
          type: string
      type: object
      description: Information about an item in the claim
      example:
        decision: Rejected
        name: Potato skin
        totalClaimed: 1900
        unitPrice: 2000
        id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
        quantity: 1
        additionalContext: Potato skin was damaged
    RestaurantclaimsItemDecision:
      properties:
        decision:
          description: Decision made about the item
          enum:
            - Accepted
            - Rejected
          type: string
        id:
          description: Item identifier
          type: string
      description: Decision on the item
      example:
        decision: Accepted
        id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
      type: object
    RestaurantclaimsJustification:
      type: object
      description: The reason of the claim rejection and optional comments from the restaurant
      example:
        comments: The food was packed properly
        reason: Other
      properties:
        comments:
          nullable: true
          description: Comment from the restaurant owner in case they rejected at least one of the items and want to type their own rejection reason
          type: string
        reason:
          description: One of the predefined reasons
          enum:
            - AlreadyRefunded
            - ItemReplaced
            - PartialRefundRequired
            - WasNotMissing
            - WillRedeliver
            - OrderWasHot
            - OrderWasOnTime
            - OrderWasPacked
            - FoodWasIntact
            - AddExtraItem
            - Other
          type: string
      nullable: true
    RestaurantclaimsOrderClaim:
      properties:
        orderId:
          description: Just Eat order identifier
          type: string
        issueType:
          enum:
            - Missing
            - Damaged
            - Cold
            - LateOrder
            - FoodNotArrived
          description: Type of claim
          type: string
        affectedItems:
          nullable: true
          items:
            $ref: '#/components/schemas/RestaurantclaimsItem'
          description: Information about the claimed items
          type: array
        totalClaimed:
          description: Total claimed money in smallest unit of relevant currency
          type: number
        expirationDate:
          format: date-time
          description: Date when the claim will be accepted automatically in case the owner of the restaurant ignores it
          type: string
        currency:
          description: Name of currency in ISO 4217 format
          type: string
        state:
          enum:
            - Open
            - Closed
          description: Indicates whether a decision about the claim was made
          type: string
        resolution:
          description: Representation of the claim resolution
          $ref: '#/components/schemas/RestaurantclaimsClaimResolution'
        id:
          description: Claim identifier
          type: string
        friendlyOrderReference:
          description: Just Eat friendly order reference
          type: string
        submittedDate:
          format: date-time
          description: Date when the claim was submitted
          type: string
        restaurantResponse:
          type: object
          description: Restaurant response on the claim
          $ref: '#/components/schemas/RestaurantclaimsOrderClaimRestaurantResponse'
      type: object
      description: Claim information
      example:
        orderId: r23tqoxdoeupdx9w8evorw
        issueType: Damaged
        affectedItems:
          - reference: productid%4t56574596
            decision: Rejected
            name: Potato skin
            totalClaimed: 1900
            unitPrice: 2000
            id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
            quantity: 1
            additionalContext: Potato skin was damaged
          - reference: productid%t5y6574596
            decision: Accepted
            name: Pizza
            totalClaimed: 1900
            unitPrice: 2000
            id: 123iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
            quantity: 1
            additionalContext: Pizza was damaged too
        totalClaimed: 3800
        expirationDate: '2020-05-22T15:22:11.1053368+01:00'
        currency: GBP
        state: Closed
        resolution:
          decision: PartiallyAccepted
          resolvedDate: '2020-05-28T07:40:48.1053368+01:00'
          totalClaimedAccepted: 1900
          resolvedChannel: PartnerCentre
        id: 2f749442-a62a-abcd-8623-04202878e034
        friendlyOrderReference: '451226580'
        submittedDate: '2020-05-20T15:22:11.1053368+01:00'
        restaurantResponse:
          decision: PartiallyAccepted
          items:
            - decision: Rejected
              id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
            - decision: Accepted
              id: 123iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
          justification:
            comments: The food was packed properly
            reason: Other
    RestaurantclaimsOrderClaimRestaurantResponse:
      properties:
        decision:
          enum:
            - Accepted
            - Rejected
            - PartiallyAccepted
          description: Decision on the claim
          type: string
        items:
          nullable: true
          items:
            $ref: '#/components/schemas/RestaurantclaimsItemDecision'
          description: Decisions on the items of a claim
          type: array
        justification:
          description: Reasons why of the decision for the claim
          $ref: '#/components/schemas/RestaurantclaimsJustification'
      type: object
      description: Restaurant response for the claim
      nullable: true
      example:
        decision: PartiallyAccepted
        items:
          - decision: Accepted
            id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc1
          - decision: Rejected
            id: NJ7iYXNrZXRJdGVtLTM2NTc0GTk2LTMwNDY2LXMzOWJxb3hkb2V1cGR4OXc4ZXZvcnc3
        justification:
          comments: The food was packed properly
          reason: Other
    RestaurantdetailsRestaurantDetailsLocation:
      description: Location of the restaurant
      properties:
        country:
          description: Country of the restaurant
          type: string
        postalCode:
          description: Post code of the restaurant
          type: string
        streetAddress:
          description: Street address of the restaurant
          type: string
        region:
          description: Region of the restaurant
          type: string
        geoPosition:
          description: Geoposition of the restaurant
          $ref: '#/components/schemas/RestaurantdetailsRestaurantDetailsLocationPosition'
        city:
          description: City of the restaurant
          type: string
      type: object
    RestaurantdetailsRestaurantDetailsLocationPosition:
      description: Geoposition of the restaurant in GeoJSON format
      properties:
        coordinates:
          maxItems: 2
          type: array
          minItems: 2
          items:
            format: double
            type: number
          description: longitude and latitude
        type:
          description: type of primitive
          enum:
            - Point
          type: string
      type: object
    RestaurantdetailsRestaurantDetailsResponse:
      properties:
        contactOptions:
          description: Contact details of the restaurant
          properties:
            phoneNumbers:
              maxItems: 3
              items:
                maxItems: 3
                description: An item in emails array containing an email with label
                properties:
                  phoneNumber:
                    description: Phone number
                    type: string
                  usedFor:
                    maxItems: 3
                    items:
                      format: enum
                      description: Array containing labels specifying phone number
                      enum:
                        - Default
                        - Owner
                        - Alternative
                      type: string
                    description: Type of phone number contacts
                    type: array
                type: object
              description: Array containing a phone number with label items
              type: array
            emails:
              items:
                maxItems: 3
                description: An item in emails array containing an email with label
                properties:
                  email:
                    description: Email contact
                    type: string
                  usedFor:
                    maxItems: 3
                    items:
                      format: enum
                      description: Array containing labels specifying email
                      enum:
                        - Default
                        - Invoice
                      type: string
                    description: Type of email contacts
                    type: array
                type: object
              description: Array containing an email with label items
              type: array
          type: object
        allergenInformation:
          description: Allergen details of the restaurant
          properties:
            url:
              description: Page with information about allergens
              type: string
            phoneNumber:
              description: Phone number to contact restaurant about allergens
              type: string
          type: object
        cuisines:
          items:
            description: Cuisine name
            type: string
          description: Array of cuisines of restaurant
          type: array
        name:
          description: The name of the restaurant.
          type: string
        location:
          description: Location of the restaurant
          $ref: '#/components/schemas/RestaurantdetailsRestaurantDetailsLocation'
        id:
          description: A unique identifier at tenant level for a given restaurant
          type: string
        logoUrl:
          description: The logo URL of the restaurant.
          type: string
        legalInformation:
          description: Legal information of the restaurant
          properties:
            registeredName:
              description: Legal company name of the restaurant
              type: string
            companyNumber:
              description: Company number of the restaurant
              type: string
          type: object
      description: response containing details of the restaurant
      example:
        contactOptions:
          phoneNumbers:
            - phoneNumber: +44 7911 123456
            - usedFor:
                - Default
          emails:
            - email: test@mcdonalds.com
            - usedFor:
                - Invoice
        allergenInformation:
          url: http://test.com
          phoneNumber: +44 7911 123456
        cuisines:
          - Italian
          - American
        name: McDonald's Test
        location:
          country: United Kingdom
          postalCode: EC4M 7RF
          streetAddress: Fleet Place House, Fleet Place
          region: Farringdon
          geoPosition:
            coordinates:
              - 51.509865
              - -0.118092
            type: Point
          city: London
        id: '108308'
        legalInformation:
          registeredName: Mc Donald's
          companyNumber: '12345'
      type: object
    RestaurantdetailsStoresDetailsResponse:
      description: Paginated list of stores details of user
      properties:
        stores:
          items:
            $ref: '#/components/schemas/RestaurantdetailsRestaurantDetailsResponse'
          description: List of store details
          type: array
        total:
          nullable: false
          format: integer
          description: The total number of user stores
          type: number
      type: object
    RestauranteventsLegacyTempOfflineStatus:
      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
    RestauranteventsOfflineRestaurantsRequestModel:
      properties:
        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
        endDate:
          type: string
          description: ISO 8601 format of the end datetime of the offline event.
          nullable: true
          format: date-time
          minLength: 1
        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
        legacyTempOfflineType:
          $ref: '#/components/schemas/RestauranteventsLegacyTempOfflineStatus'
        reason:
          description: The reason for creating the offline event.
          type: string
        name:
          description: Name of the offline event to be created.
          type: string
        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
        startDate:
          type: string
          format: date-time
          description: ISO 8601 format of the start datetime of the offline event.
          minLength: 1
      type: object
      description: A request to take restaurants offline.
      required:
        - restaurantIds
        - name
        - reason
        - startDate
        - allowRestaurantOverride
      additionalProperties: false
      example:
        restaurantIds: '12345'
        name: Out of Chicken
        reason: No more chicken in stock.
        startDate: '2020-01-16T09:00:00Z'
        duration: '1:00:00'
        allowRestaurantOverride: true
    RestauranteventsRestaurantOfflineStatus:
      type: object
      description: The offline status of the restaurant
      properties:
        Tenant:
          format: enum
          description: The two letter country code for the market in which the restaurant operates.
          enum:
            - au
            - dk
            - es
            - ie
            - it
            - 'no'
            - uk
            - nz
          type: string
        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
        AllowRestaurantOverride:
          nullable: true
          description: Whether a restaurant should be allowed to reverse this offline status change through calls to the Restaurant Events endpoints.
          type: boolean
      example:
        Tenant: uk
        IsOffline: true
        RestaurantId: '123456'
        AllowRestaurantOverride: false
    RestauranteventsUserRole:
      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
    RestauranteventsValidationError:
      properties:
        errorCode:
          description: The error code
          type: string
        propertyName:
          description: The name of the property causing the failure
          type: string
        customState:
          nullable: true
          description: Custom state associated with the failure
          type: string
        formattedMessageArguments:
          items:
            type: string
          description: Custom formatted validator messages with placeholders
          type: array
        severity:
          description: Severity of a validation rule. Will always be 0 (Error).
          type: number
        attemptedValue:
          nullable: true
          description: The property value that caused the failure
          type: string
        resourceName:
          nullable: true
          description: The resource name used for building the message
          type: string
        formattedMessagePlaceHolderValues:
          type: object
          description: The values for placeholders in the formatted messages
          additionalProperties: true
        errorMessage:
          description: The error message
          type: string
      type: object
      example:
        errorCode: NotEmptyValidator
        propertyName: TestProperty
        customState: null
        formattedMessageArguments: []
        severity: 0
        attemptedValue: null
        resourceName: null
        formattedMessagePlaceHolderValues:
          PropertyName: User Role
          PropertyValue: null
        errorMessage: TestProperty is empty
      additionalProperties: false
    RestaurantfeesBagFeeWithCopy:
      properties:
        Description:
          type: string
          description: A description of the bag fee.
        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:
            Default:
              description: Configuration of the fee for any service type which is not explicitly configured
              $ref: '#/components/schemas/RestaurantfeesServiceTypeBagFeeConfigurationWithCopy'
            Collection:
              description: Configuration of the fee for the collection service type
              $ref: '#/components/schemas/RestaurantfeesServiceTypeBagFeeConfigurationWithCopy'
            Delivery:
              description: Configuration of the fee for the delivery service type
              $ref: '#/components/schemas/RestaurantfeesServiceTypeBagFeeConfigurationWithCopy'
          type: object
      description: The object which encapsulates a Bag Fee with user-facing copy
      example:
        Description: A charge for bags in delivery
        ServiceTypes:
          Default:
            Amount: 10
            Copy: Bag Fee £0.10
          Collection:
            Amount: 5
            Copy: Bag Fee £0.05
          Delivery:
            Amount: 20
            Copy: Bag Fee £0.20
    RestaurantfeesFixedFeeWithCopy:
      type: object
      description: Defines the structure for a fixed-amount fee
      properties:
        Amount:
          type: integer
          description: The fixed fee amount in the smallest currency unit (e.g., cents or pence).
      required:
        - Amount
    RestaurantfeesPercentageFeeWithCopy:
      type: object
      description: Defines a percentage-based fee with optional minimum and maximum caps.
      properties:
        Percent:
          type: number
          format: double
          description: The fee percentage. For example, 5.0 represents 5%.
        MinAmount:
          type: integer
          description: The minimum fee amount to be charged, in the smallest currency unit.
        MaxAmount:
          type: integer
          description: The maximum fee amount to be charged, in the smallest currency unit.
      required:
        - Percent
    RestaurantfeesRestaurantFeesWithCopy:
      type: object
      properties:
        BagFee:
          $ref: '#/components/schemas/RestaurantfeesBagFeeWithCopy'
        ServiceFee:
          $ref: '#/components/schemas/RestaurantfeesServiceFeeWithCopy'
        SmallOrderFee:
          $ref: '#/components/schemas/RestaurantfeesSmallOrderFee'
      required:
        - ServiceFee
      description: An object encapsulating all possible fees applied by a restaurant
      example:
        BagFee:
          Description: A charge for bags in delivery
          ServiceTypes:
            Default:
              Amount: 10
              Copy: Bag Fee £0.10
            Collection:
              Amount: 5
              Copy: Bag Fee £0.05
            Delivery:
              Amount: 20
              Copy: Bag Fee £0.20
        ServiceFee:
          Description: The composition of a service fee, including the service type, the type of fee, and the copy used to display the fee in the UI
          ServiceTypes:
            Default:
              Copy: Service Fee 1 % (min $ 0.50, max $ 1.99)
              Use: percentage
              Percentage:
                Percent: 1
                MinAmount: 50
                MaxAmount: 199
            Collection:
              Copy: Service Fee 2 % (min $ 0.50, max $ 1.99)
              Use: percentage
              Percentage:
                Percent: 2
                MinAmount: 50
                MaxAmount: 199
            Delivery:
              Copy: Service Fee 0.5 % (min $ 1.00, max $ 2.99)
              Use: percentage
              Percentage:
                Percent: 0.5
                MinAmount: 100
                MaxAmount: 299
        SmallOrderFee:
          Description: A maximum charge for small orders below minimum order value
          MaxAmount: 1000
          Copy: Small Order Fee (max £10)
    RestaurantfeesServiceFeeWithCopy:
      type: object
      description: Defines the complete service fee structure, including a top-level description and the specific fee calculations for different service types.
      properties:
        Description:
          type: string
          description: A charge for the service fee.
        ServiceTypes:
          $ref: '#/components/schemas/RestaurantfeesServiceTypesWithCopy'
      required:
        - Description
        - ServiceTypes
    RestaurantfeesServiceTypeBagFeeConfigurationWithCopy:
      type: object
      properties:
        Amount:
          description: The value to apply to the basket for this Fee in the smallest unit of currency
          format: integer
          type: number
        Copy:
          type: string
          description: User-facing text describing the bag fee for this service type
      required:
        - Amount
        - Copy
      description: Bag Fee configuration for a service type
      example:
        Amount: 5
        Copy: Bag Fee £0.05
    RestaurantfeesServiceTypeDetailWithCopy:
      description: Defines the structure for a specific service type fee, which can be percentage-based, fixed, or none.
      oneOf:
        - type: object
          title: Percentage Fee
          properties:
            Use:
              type: string
              enum:
                - percentage
              description: The type of fee calculation, set to 'percentage'.
            Copy:
              type: string
              description: The user-facing text describing the fee (e.g., "Service Fee 5%").
            Percentage:
              $ref: '#/components/schemas/RestaurantfeesPercentageFeeWithCopy'
          required:
            - Use
            - Copy
            - Percentage
        - type: object
          title: Fixed Fee
          properties:
            Use:
              type: string
              enum:
                - fixed
              description: The type of fee calculation, set to 'fixed'.
            Copy:
              type: string
              description: The user-facing text describing the fee (e.g., "Service Fee $10").
            Fixed:
              $ref: '#/components/schemas/RestaurantfeesFixedFeeWithCopy'
          required:
            - Use
            - Copy
            - Fixed
        - type: object
          title: None
          properties:
            Use:
              type: string
              enum:
                - none
              description: Indicates no fee calculation is applied.
            Copy:
              type: string
              description: The user-facing text to display
          required:
            - Use
            - Copy
    RestaurantfeesServiceTypesWithCopy:
      properties:
        Default:
          $ref: '#/components/schemas/RestaurantfeesServiceTypeDetailWithCopy'
        Collection:
          $ref: '#/components/schemas/RestaurantfeesServiceTypeDetailWithCopy'
        Delivery:
          $ref: '#/components/schemas/RestaurantfeesServiceTypeDetailWithCopy'
    RestaurantfeesSmallOrderFee:
      type: object
      properties:
        MaxAmount:
          type: integer
          description: The maximum charge for small orders below minimum order value
          example: 1000
        Copy:
          type: string
          description: The user-facing text describing the fee
          example: Small Order Fee (max £10)
      required:
        - MaxAmount
        - Copy
      description: The object which encapsulates a small order fee
      example:
        MaxAmount: 1000
        Copy: Small Order Fee (max £10)
    RestaurantgeoserviceAccuracy:
      type: string
      description: Accuracy level of geocoding result
      enum:
        - ACCURATE
        - INACCURATE
        - UNSURE
    RestaurantgeoserviceAddressEditRadius:
      type: string
      description: Edit radius for address adjustment
      enum:
        - none
        - short
        - long
    RestaurantgeoserviceAddressWarning:
      type: string
      description: Warning about address accuracy
      enum:
        - none
        - invalidRange
        - invalidBuildingNumber
    RestaurantgeoserviceAddressWithAccuracyAndLatLng:
      type: object
      description: Full address with accuracy information and coordinates
      properties:
        streetNumber:
          type: string
          description: Street number
          example: '123'
        street:
          type: string
          description: Street name
          example: Main Street
        city:
          type: string
          description: City name
          example: Winnipeg
        province:
          type: string
          description: Province/state code
          example: MB
        country:
          type: string
          description: Country code
          example: CA
        postalCode:
          type: string
          description: Postal/ZIP code
          example: R3C 1A5
        latlng:
          $ref: '#/components/schemas/RestaurantgeoserviceLatLng'
        addressWarning:
          $ref: '#/components/schemas/RestaurantgeoserviceAddressWarning'
        addressEditRadius:
          $ref: '#/components/schemas/RestaurantgeoserviceAddressEditRadius'
    RestaurantgeoserviceAddresses:
      type: object
      description: List of address suggestions
      properties:
        addresses:
          type: array
          items:
            type: string
          description: List of address strings
          example:
            - 123 Main St, Winnipeg, MB R3C 1A5, Canada
    RestaurantgeoserviceCityAddressPair:
      type: object
      description: A pair of city and address
      properties:
        city:
          type: string
          description: City name
          example: Winnipeg
        address:
          type: string
          description: Street address
          example: 123 Main Street
    RestaurantgeoserviceCityAddresses:
      type: object
      description: Request body for batch geocoding addresses
      properties:
        addresses:
          type: array
          items:
            type: string
          uniqueItems: true
          description: Set of address strings to be converted to coordinates
          example:
            - 123 Main St, Winnipeg, MB
            - 456 Oak Ave, Toronto, ON
    RestaurantgeoserviceErrorResponse:
      type: object
      description: Standard error response
      properties:
        message:
          type: string
          description: Error message
          example: Entity not found
        code:
          type: integer
          description: HTTP status code
          example: 404
    RestaurantgeoserviceGeocodingResultMap:
      type: object
      description: Map of addresses to their resolved coordinates
      additionalProperties:
        $ref: '#/components/schemas/RestaurantgeoserviceLatitudeLongitudeWithAccuracy'
      example:
        123 Main St, Winnipeg, MB:
          latitude: 49.8951
          longitude: -97.1384
          accuracy: ACCURATE
    RestaurantgeoserviceLatLng:
      type: object
      description: Simple latitude/longitude pair
      properties:
        lat:
          type: number
          format: double
          description: Latitude
          example: 49.8951
        lng:
          type: number
          format: double
          description: Longitude
          example: -97.1384
    RestaurantgeoserviceLatitudeLongitude:
      type: object
      description: Geographic coordinates
      properties:
        latitude:
          type: number
          format: double
          description: Latitude coordinate
          example: 49.8951
        longitude:
          type: number
          format: double
          description: Longitude coordinate
          example: -97.1384
    RestaurantgeoserviceLatitudeLongitudeWithAccuracy:
      type: object
      description: Geographic coordinates with accuracy information
      allOf:
        - $ref: '#/components/schemas/RestaurantgeoserviceLatitudeLongitude'
        - type: object
          properties:
            accuracy:
              $ref: '#/components/schemas/RestaurantgeoserviceAccuracy'
    RestaurantgeoserviceProvinceCountry:
      type: object
      description: Province and country information
      properties:
        province:
          type: string
          nullable: true
          description: Province/state code
          example: MB
        country:
          type: string
          nullable: true
          description: Country code
          example: CA
    RestaurantgeoserviceRoute:
      type: object
      description: Route information with path and distances
      properties:
        path:
          type: array
          description: List of route segments, each containing a list of coordinates
          items:
            type: array
            items:
              $ref: '#/components/schemas/RestaurantgeoserviceLatitudeLongitude'
        distances:
          type: array
          description: List of distances in meters for each segment
          items:
            type: integer
            format: int64
          example:
            - 1500
            - 2300
            - 800
    RestaurantgeoserviceTaxZoneResponse:
      type: object
      description: Tax zone lookup response
      properties:
        taxZone:
          type: string
          description: Tax zone identifier
          example: MB-GST
    RestaurantgeoserviceTimeZone:
      type: object
      description: Time zone information
      properties:
        id:
          type: string
          description: Time zone identifier (IANA format)
          example: America/Winnipeg
    RestauranthoursServiceTimes:
      type: object
      properties:
        serviceTimes:
          allOf:
            - $ref: '#/components/schemas/RestauranthoursServiceTimesDays'
          description: The desired times at which a restaurant is in service
          type: object
      example:
        desiredServiceTimes:
          friday:
            collection:
              - start: '12:00:00'
                end: '14:00:00'
              - start: '17:00:00'
                end: '23:00:00'
            delivery:
              - start: '12:00:00'
                end: '13:30:00'
              - start: '18:00:00'
                end: '00:00:00'
          tuesday:
            collection:
              - start: '12:00:00'
                end: '14:00:00'
              - start: '17:00:00'
                end: '23:00:00'
            delivery:
              - start: '12:00:00'
                end: '13:30:00'
              - start: '18:00:00'
                end: '00:00:00'
          thursday:
            collection:
              - start: '12:00:00'
                end: '14:00:00'
              - start: '17:00:00'
                end: '23:00:00'
            delivery:
              - start: '12:00:00'
                end: '13:30:00'
              - start: '18:00:00'
                end: '00:00:00'
          sunday:
            collection:
              - start: '12:00:00'
                end: '23:00:00'
            delivery:
              - start: '12:00:00'
                end: '00:00:00'
          saturday:
            collection:
              - start: '12:00:00'
                end: '23:00:00'
            delivery:
              - start: '12:00:00'
                end: '00:00:00'
          monday:
            collection:
              - start: '12:00:00'
                end: '14:00:00'
              - start: '17:00:00'
                end: '23:00:00'
            delivery:
              - start: '12:00:00'
                end: '13:30:00'
              - start: '18:00:00'
                end: '00:00:00'
          wednesday:
            collection:
              - start: '12:00:00'
                end: '14:00:00'
              - start: '17:00:00'
                end: '23:00:00'
            delivery:
              - start: '12:00:00'
                end: '13:30:00'
              - start: '18:00:00'
                end: '00:00:00'
    RestauranthoursServiceTimesCollection:
      items:
        properties:
          start:
            pattern: ^([0-1]\d|2[0-3]):[0-5]\d$:[0-5]\d$
            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`.
            type: string
          end:
            pattern: ^([0-1]\d|2[0-3]):[0-5]\d$:[0-5]\d$
            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`.
            type: string
        type: object
      type: array
    RestauranthoursServiceTimesDays:
      description: The desired times at which a restaurant is in service
      properties:
        friday:
          allOf:
            - $ref: '#/components/schemas/RestauranthoursServiceTimesServices'
          description: Service times for Fridays
        tuesday:
          allOf:
            - $ref: '#/components/schemas/RestauranthoursServiceTimesServices'
          description: Service times for Tuesdays
        thursday:
          allOf:
            - $ref: '#/components/schemas/RestauranthoursServiceTimesServices'
          description: Service times for Thursdays
        sunday:
          allOf:
            - $ref: '#/components/schemas/RestauranthoursServiceTimesServices'
          description: Service times for Sundays
        saturday:
          allOf:
            - $ref: '#/components/schemas/RestauranthoursServiceTimesServices'
          description: Service times for Saturdays
        monday:
          allOf:
            - $ref: '#/components/schemas/RestauranthoursServiceTimesServices'
          description: Service times for Mondays
        wednesday:
          allOf:
            - $ref: '#/components/schemas/RestauranthoursServiceTimesServices'
          description: Service times for Wednesdays
      type: object
    RestauranthoursServiceTimesOverrides:
      type: object
      properties:
        overrides:
          type: array
          items:
            type: object
            properties:
              date:
                description: The date in which to service time overrides apply
                format: date
                type: string
              collection:
                description: The times at which customers can collect from the restaurant
                $ref: '#/components/schemas/RestauranthoursServiceTimesOverridesSchedules'
                type: object
              delivery:
                description: The times at which the restaurant can provide delivery
                $ref: '#/components/schemas/RestauranthoursServiceTimesOverridesSchedules'
                type: object
      example:
        overrides:
          - date: '2023-03-12'
            delivery:
              - start: '12:00:00'
                end: '14:00:00'
              - start: '17:00:00'
                end: '23:00:00'
            collection:
              - start: '12:00:00'
                end: '14:00:00'
              - start: '17:00:00'
                end: '23:00:00'
    RestauranthoursServiceTimesOverridesSchedules:
      items:
        properties:
          start:
            description: Start time of the slot in hh:mm format. Times are in the restaurant's time zone.
            format: time
            type: string
          end:
            description: Local end time of the slot in hh:mm 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.
            format: time
            type: string
        type: object
      type: array
    RestauranthoursServiceTimesServices:
      properties:
        collection:
          description: The times at which customers can collect from the restaurant
          $ref: '#/components/schemas/RestauranthoursServiceTimesCollection'
          type: object
        delivery:
          description: The times at which the restaurant can provide delivery
          $ref: '#/components/schemas/RestauranthoursServiceTimesCollection'
          type: object
      type: object
    RestaurantorderflmtdatamartAcceptedDevice:
      enum:
        - updatedApp
        - olderApp
        - portal
        - liveOps
      type: string
    RestaurantorderflmtdatamartAccuracy:
      enum:
        - accurate
        - inaccurate
        - unsure
      type: string
    RestaurantorderflmtdatamartAssignedActiveOrder:
      type: object
      properties:
        orderId:
          type: string
        orderNumber:
          format: int32
          type: integer
        orderStatus:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartOrderStatus'
        acceptedDevice:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartAcceptedDevice'
        justEat:
          type: boolean
        deliveryStatus:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliveryStatus'
        deliveryCost:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliveryCost2'
        foodPrepTime:
          format: int64
          type: integer
          nullable: true
        collectAccessibilityTime:
          format: int32
          type: integer
        courierHoldOverride:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartCourierHoldOverride'
        restaurantId:
          type: string
        restaurantName:
          type: string
        restaurantShortName:
          type: string
        restaurantLocationName:
          type: string
        restaurantPreferredLocale:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartLocale'
        customerId:
          type: string
        customerName:
          type: string
        courierId:
          type: string
        courierName:
          type: string
    RestaurantorderflmtdatamartAssignedCourier:
      type: object
      properties:
        courierId:
          type: string
        name:
          type: string
        firstName:
          type: string
        deliveryZoneIds:
          type: array
          items:
            type: string
    RestaurantorderflmtdatamartCollectAddress:
      type: object
      properties:
        deliveryZoneId:
          uniqueItems: true
          type: array
          items:
            type: string
    RestaurantorderflmtdatamartCourierHoldOverride:
      enum:
        - none
        - applyCharges
        - clearCharges
      type: string
    RestaurantorderflmtdatamartCourierWithJobs:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        deliveryZoneIds:
          uniqueItems: true
          type: array
          items:
            type: string
        jobs:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantorderflmtdatamartJob'
    RestaurantorderflmtdatamartCustomLineItem:
      type: object
      properties:
        name:
          type: string
        price:
          format: int32
          type: integer
    RestaurantorderflmtdatamartCustomer:
      type: object
      properties:
        suspicion:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartCustomerFraudSuspicion'
        customerId:
          type: string
        name:
          type: string
        accuracy:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartAccuracy'
        verifiedAccuracy:
          type: boolean
    RestaurantorderflmtdatamartCustomerFraudSuspicion:
      enum:
        - whiteList
        - none
        - level1
      type: string
    RestaurantorderflmtdatamartCustomerOrderHistory:
      type: object
      properties:
        id:
          type: string
        totalOrders:
          format: int64
          type: integer
        deliveryOrders:
          format: int64
          type: integer
        pickupOrders:
          format: int64
          type: integer
        subtotal:
          format: int64
          type: integer
    RestaurantorderflmtdatamartDeliverAddress:
      type: object
      properties:
        deliveryZoneId:
          uniqueItems: true
          type: array
          items:
            type: string
        latitude:
          format: double
          type: number
        longitude:
          format: double
          type: number
    RestaurantorderflmtdatamartDeliverTimes:
      type: object
      properties:
        targetCollect:
          format: int64
          type: integer
        targetCollectOriginal:
          format: int64
          type: integer
          nullable: true
        foodPrepTime:
          format: int64
          type: integer
          nullable: true
    RestaurantorderflmtdatamartDelivery:
      type: object
      properties:
        id:
          type: string
        deliveryStatus:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliveryStatus'
        collectTarget:
          format: int64
          type: integer
        deliveryCost:
          type: object
          allOf:
            - $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliveryCost1'
          nullable: true
        stopsBeforeDelivery:
          format: int32
          type: integer
        lastAssignedCourierId:
          type: string
          nullable: true
        assignedCourierName:
          type: string
          nullable: true
        assignedCourierFirstName:
          type: string
          nullable: true
    RestaurantorderflmtdatamartDelivery1:
      type: object
      properties:
        deliveryId:
          type: string
        orderId:
          type: string
        assignedCourier:
          type: object
          allOf:
            - $ref: '#/components/schemas/RestaurantorderflmtdatamartAssignedCourier'
          nullable: true
        collectArrivedTime:
          format: int64
          type: integer
          nullable: true
        collectCompletedTime:
          format: int64
          type: integer
          nullable: true
        collectAccessibilityTime:
          format: int32
          type: integer
        deliveryCost:
          type: object
          allOf:
            - $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliveryCost2'
          nullable: true
        originalFirstJobAssignedTime:
          format: int64
          type: integer
          nullable: true
        collectTarget:
          format: int64
          type: integer
        deliveryStatus:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliveryStatus'
        latitude:
          format: double
          type: number
          nullable: true
        longitude:
          format: double
          type: number
          nullable: true
    RestaurantorderflmtdatamartDeliveryCost:
      type: object
      properties:
        collect:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartJobCost'
        collectToDeliverTime:
          format: int32
          type: integer
        collectToDeliverVariance:
          format: int32
          type: integer
        collectToDeliverWarningTimestamp:
          format: int64
          type: integer
        collectToDeliverCriticalTimestamp:
          format: int64
          type: integer
        placedToDeliverTime:
          format: int32
          type: integer
    RestaurantorderflmtdatamartDeliveryCost1:
      type: object
      properties:
        collect:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartJobCost1'
    RestaurantorderflmtdatamartDeliveryCost2:
      type: object
      properties:
        collect:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartJobCost2'
        collectToDeliverTime:
          format: int32
          type: integer
        placedToDeliverTime:
          format: int32
          type: integer
    RestaurantorderflmtdatamartDeliveryDetails:
      type: object
      properties:
        id:
          type: string
        orderId:
          type: string
        lastAssignedCourierId:
          type: string
          nullable: true
        deliverTimes:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliverTimes'
        deliveryCost:
          type: object
          allOf:
            - $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliveryCost'
          nullable: true
        collectAddress:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartCollectAddress'
        deliverAddress:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliverAddress'
        courierHoldOverride:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartCourierHoldOverride'
        originalFirstJobAssignedTime:
          format: int64
          type: integer
          nullable: true
    RestaurantorderflmtdatamartDeliveryStatus:
      enum:
        - manuallyAssigned
        - unassigned
        - assigned
        - acceptedQueued
        - accepted
        - inTransitQueued
        - inTransitRestaurant
        - parkingRestaurant
        - arrivedRestaurant
        - collected
        - inTransitCustomer
        - parkingCustomer
        - arrivedCustomer
        - delivered
        - cancelled
        - rejected
      type: string
    RestaurantorderflmtdatamartInjectionStatus:
      enum:
        - pending
        - processing
        - successful
        - failed
        - unconfirmed
        - cancelled
      type: string
    RestaurantorderflmtdatamartJob:
      type: object
      properties:
        deliveryId:
          type: string
        status:
          type: string
        jobType:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartJobType'
        times:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartJobTimes'
        address:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartJobAddress'
    RestaurantorderflmtdatamartJobAddress:
      type: object
      properties:
        accessibilityTime:
          format: int32
          type: integer
        latitude:
          format: double
          type: number
        longitude:
          format: double
          type: number
    RestaurantorderflmtdatamartJobCost:
      type: object
      properties:
        arrivalTime:
          format: int64
          type: integer
        isArrivalEstimated:
          type: boolean
        arrivalSlack:
          format: int32
          type: integer
        completionTime:
          format: int64
          type: integer
        isCompletionEstimated:
          type: boolean
        completionSlack:
          format: int32
          type: integer
        remainingDrivingTime:
          format: int32
          type: integer
        totalDrivingTime:
          format: int32
          type: integer
        originalTotalDrivingTime:
          format: int32
          type: integer
        remainingDrivingDistance:
          format: int32
          type: integer
        originalRemainingDrivingDistance:
          format: int32
          type: integer
        consecutiveJobsAtSameLocation:
          type: boolean
        sameLocationAndTypeDeliveries:
          uniqueItems: true
          type: array
          items:
            type: string
    RestaurantorderflmtdatamartJobCost1:
      type: object
      properties:
        completionTime:
          format: int64
          type: integer
        consecutiveJobsAtSameLocation:
          type: boolean
        multiCollectDeliveryIds:
          uniqueItems: true
          type: array
          items:
            type: string
          nullable: true
    RestaurantorderflmtdatamartJobCost2:
      type: object
      properties:
        arrivalTime:
          format: int64
          type: integer
        isArrivalEstimated:
          type: boolean
        arrivalSlack:
          format: int32
          type: integer
        completionTime:
          format: int64
          type: integer
        isCompletionEstimated:
          type: boolean
        consecutiveJobsAtSameLocation:
          type: boolean
    RestaurantorderflmtdatamartJobTimes:
      type: object
      properties:
        expectedCompletion:
          format: int64
          type: integer
        assignedPendingAcceptedTime:
          format: int64
          type: integer
          nullable: true
        assignedTime:
          format: int64
          type: integer
          nullable: true
        acceptedTime:
          format: int64
          type: integer
          nullable: true
        inTransitTime:
          format: int64
          type: integer
          nullable: true
        beginParkingTime:
          format: int64
          type: integer
          nullable: true
        arrivedTime:
          format: int64
          type: integer
          nullable: true
        enteredTime:
          format: int64
          type: integer
          nullable: true
        completedTime:
          format: int64
          type: integer
          nullable: true
        arrivedLatitude:
          format: double
          type: number
          nullable: true
        arrivedLongitude:
          format: double
          type: number
          nullable: true
        completedLatitude:
          format: double
          type: number
          nullable: true
        completedLongitude:
          format: double
          type: number
          nullable: true
    RestaurantorderflmtdatamartJobType:
      enum:
        - collect
        - deliver
      type: string
    RestaurantorderflmtdatamartLineItem:
      type: object
      properties:
        id:
          type: string
        itemName:
          type: string
        priceEach:
          format: int32
          type: integer
        subtotal:
          format: int32
          type: integer
        quantity:
          format: int32
          type: integer
        options:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantorderflmtdatamartLineItemOption'
          nullable: true
    RestaurantorderflmtdatamartLineItemOption:
      type: object
      properties:
        optionItem:
          type: string
        quantity:
          format: int32
          type: integer
    RestaurantorderflmtdatamartLocalDate:
      format: date
      type: string
      example: '2022-03-10'
    RestaurantorderflmtdatamartLocale:
      type: object
      properties:
        language:
          type: string
        script:
          type: string
        country:
          type: string
        variant:
          type: string
        extensionKeys:
          uniqueItems: true
          type: array
          items:
            format: byte
            type: string
        unicodeLocaleAttributes:
          uniqueItems: true
          type: array
          items:
            type: string
        unicodeLocaleKeys:
          uniqueItems: true
          type: array
          items:
            type: string
        iSO3Language:
          type: string
        iSO3Country:
          type: string
        displayLanguage:
          type: string
        displayScript:
          type: string
        displayCountry:
          type: string
        displayVariant:
          type: string
        displayName:
          type: string
    RestaurantorderflmtdatamartNonDelcoDeliveryOnItsWay:
      type: object
      properties:
        orderId:
          type: string
        startedDrivingTime:
          format: int64
          type: integer
    RestaurantorderflmtdatamartOrder:
      type: object
      properties:
        orderId:
          type: string
        orderStatus:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartOrderStatus'
        customer:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartCustomer'
        restaurant:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartRestaurant1'
        orderType:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartOrderType'
        orderRequested:
          format: int64
          type: integer
          nullable: true
        orderNumber:
          format: int32
          type: integer
        orderCreated:
          format: int64
          type: integer
        orderAccepted:
          format: int64
          type: integer
          nullable: true
        acceptedDevice:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartAcceptedDevice'
        total:
          format: int32
          type: integer
        justEat:
          type: boolean
        delivery:
          type: object
          allOf:
            - $ref: '#/components/schemas/RestaurantorderflmtdatamartDelivery1'
          nullable: true
        duplicateOrder:
          type: boolean
        fraudVerifiedTime:
          format: int64
          type: integer
          nullable: true
        paymentType:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartPaymentType'
        centsSubtotal:
          format: int32
          type: integer
        isAlcoholDelivery:
          type: boolean
        duplicateVerifiedTime:
          format: int64
          type: integer
          nullable: true
    RestaurantorderflmtdatamartOrderDetails:
      type: object
      properties:
        orderId:
          type: string
        orderStatus:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartOrderStatus'
        restaurant:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartRestaurant'
        justEat:
          type: boolean
        orderNumber:
          format: int32
          type: integer
        centsSubtotal:
          format: int32
          type: integer
        type:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartOrderType'
        orderInformation:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartOrderInformation'
        createdTime:
          format: int64
          type: integer
        acceptedTime:
          format: int64
          type: integer
          nullable: true
        requestedTime:
          format: int64
          type: integer
          nullable: true
        priceDetails:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartPriceDetails'
    RestaurantorderflmtdatamartOrderInformation:
      type: object
      properties:
        name:
          type: string
        phoneNumber:
          type: string
    RestaurantorderflmtdatamartOrderMethod:
      enum:
        - online
        - callIn
      type: string
    RestaurantorderflmtdatamartOrderStatus:
      enum:
        - pending
        - accepted
        - cancelled
        - rejected
        - completed
        - awaitingPayment
      type: string
    RestaurantorderflmtdatamartOrderType:
      enum:
        - delivery
        - pickup
      type: string
    RestaurantorderflmtdatamartPosInjectionStatus:
      type: object
      properties:
        orderId:
          type: string
        status:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartInjectionStatus'
    RestaurantorderflmtdatamartPaymentType:
      enum:
        - cash
        - interacOnline
        - creditCard
        - corporate
        - prepaid
        - unknown
        - skipCredit
        - skipPaid
        - redirect
      type: string
    RestaurantorderflmtdatamartPriceDetails:
      type: object
      properties:
        lineItemCosts:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantorderflmtdatamartLineItem'
        customLineItems:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantorderflmtdatamartCustomLineItem'
    RestaurantorderflmtdatamartRestaurant:
      type: object
      properties:
        restaurantId:
          type: string
        name:
          type: string
        shortName:
          type: string
        locationName:
          type: string
        preferredLocale:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartLocale'
    RestaurantorderflmtdatamartRestaurant1:
      type: object
      properties:
        restaurantId:
          type: string
        name:
          type: string
        shortName:
          type: string
        locationName:
          type: string
        preferredLocale:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartLocale'
    RestaurantorderflmtdatamartRestaurantOrder:
      type: object
      properties:
        orderId:
          type: string
        orderNumber:
          format: int32
          type: integer
        orderRequested:
          format: int64
          type: integer
          nullable: true
        orderType:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartOrderType'
        orderStatus:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartOrderStatus'
        orderAccepted:
          format: int64
          type: integer
          nullable: true
        orderCreated:
          format: int64
          type: integer
        paymentType:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartPaymentType'
        delivery:
          type: object
          allOf:
            - $ref: '#/components/schemas/RestaurantorderflmtdatamartDelivery'
          nullable: true
        pendingAt:
          format: int64
          type: integer
          nullable: true
        method:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartOrderMethod'
        posInjectionStatus:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartInjectionStatus'
        visibleSince:
          format: int64
          type: integer
        nonDelcoDeliveryOnItsWay:
          format: int64
          type: integer
          nullable: true
        customerOrderHistory:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartCustomerOrderHistory'
        isSkipGoOrder:
          type: boolean
        isDelco:
          type: boolean
    RestaurantorderflmtdatamartSyncDelivery:
      type: object
      properties:
        deliveryStatus:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliveryStatus'
        deliveryDetails:
          $ref: '#/components/schemas/RestaurantorderflmtdatamartDeliveryDetails'
        courier:
          type: object
          allOf:
            - $ref: '#/components/schemas/RestaurantorderflmtdatamartCourierWithJobs'
          nullable: true
    RestaurantqueriesAttemptedDeliveryCancelOrderResolution:
      properties:
        ReasonCode:
          description: The reason the order has been cancelled
          enum:
            - NewAddressNotWithinDeliveryArea
            - UnableToReprepare
            - DriverNoLongerAvailable
            - AreaIsUnsafe
            - CustomerDoesnotWantOrderAnymore
          type: string
      type: object
    RestaurantqueriesAttemptedDeliveryCreateAttemptedDeliveryQuery:
      properties:
        ReasonCode:
          enum:
            - ProblemWithAddress
            - NoAnswer
          description: The reason the attempted delivery event was created
          type: string
      type: object
      example:
        ReasonCode: ProblemWithAddress
    RestaurantqueriesAttemptedDeliveryRedeliverOrderResolution:
      properties:
        Status:
          description: The current status of the order
          enum:
            - DriverAtAddress
            - Repreparing
          type: string
        NewDueDate:
          description: Updated due date for delivery of the order
          format: date-time
          type: string
      type: object
    RestaurantqueriesCancellationApproveCancellationQuery:
      properties:
        overriddenFee:
          description: A way to override the cancellation fee
          format: decimal
          type: number
        notes:
          description: Some notes in regards of cancellation
          type: string
      type: object
      example:
        notes: Customer call us to cancel the order
    RestaurantqueriesCancellationCreateCancellationQuery:
      properties:
        reasonCode:
          description: The reason the cancellation event was created
          type: string
          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
        comments:
          description: Comments on why the order was cancelled
          type: string
      type: object
      example:
        reasonCode: rest_cancelled_customer_requested
        comments: There was a problem with the customer
    RestaurantqueriesCancellationCreateCancellationQueryResponse:
      properties:
        orderId:
          description: Id of the order to be cancelled
          type: string
        reasonCode:
          description: Reason for cancellation
          type: string
          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
        comments:
          description: Additional comments regarding cancellation
          type: string
        state:
          description: State of the cancellation query
          type: string
          enum:
            - New
            - Offered
            - Declined
            - Approved
        createdAt:
          description: Date of cancellation query creation in ISO 8601 format.
          type: string
          format: date-time
        policyResult:
          description: Result of policies evaluation
          type: object
          properties:
            outcome:
              description: Outcome of policies evaluation
              type: object
              properties:
                fee:
                  description: Fee associated with cancellation query
                  type: object
                  properties:
                    amount:
                      description: Amount
                      type: number
                decision:
                  description: Final decision
                  type: string
                  enum:
                    - Offered
                    - Declined
            eligibility:
              description: Collection of evaluated eligibility policies
              type: array
              items:
                description: Policy details
                type: object
                properties:
                  code:
                    description: Name of the policy
                    type: string
                  passed:
                    description: Flag to indicate whether the policy was successful or not
                    type: boolean
                  overridable:
                    description: Flag to indicate whether the policy can be overridden or not
                    type: boolean
        resolution:
          description: Overall result of cancellation query
          type: object
          properties:
            by:
              description: Who initiated the query (restaurant, customer etc.)
              type: string
            userName:
              description: Name of query initiator
              type: string
            at:
              description: When was the query resolved in ISO 8601 format.
              type: string
              format: date-time
            notes:
              description: Additional notes
              type: string
      example:
        orderId: 123qwe
        reasonCode: rest_cancelled_other
        comments: example comments
        state: Offered
        createdAt: '2022-09-09T12:55:56.0149188Z'
        policyResult:
          outcome:
            fee:
              amount: 0
            decision: Offered
          eligibility:
            - code: BlockCashOrders
              passed: true
              overridable: false
        resolution:
          by: person
          userName: joe bloggs
          at: '2022-09-09T12:55:56.0149188Z'
          notes: Cancelled because didn't need
    RestaurantqueriesCompensationCreateRestaurantCompensationQuery:
      type: object
      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
      example:
        Comments: Driver had just left the restaurant
        ReasonCode: OnItsWay
    RestaurantqueriesCompensationOrderEligibleForRestaurantCompensation:
      type: object
      properties:
        IsEligible:
          description: Flag that informs if the cancelled order is eligible for compensation
          type: boolean
        OrderId:
          description: Id for the order
          type: string
      example:
        IsEligible: true
        OrderId: c9639af6-04a3-4376-bb4b-5e95cc8b80eb
    RestaurantsAdditive:
      type: object
      additionalProperties: true
      description: Indicates the presence of an additive in a variation or modifier.
      required:
        - type
      properties:
        type:
          description: Types of additive that can be present
          $ref: '#/components/schemas/RestaurantsAdditiveType'
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantsAdditiveWarning'
          description: Type of warning for a specific allergen type
          nullable: true
    RestaurantsAdditiveType:
      description: Type of additive
      type: string
      enum:
        - antioxidants
        - caffeine
        - colours
        - darkened
        - flavourEnhancers
        - geneticallyModified
        - liquorice
        - nitrate
        - nitriteCuringSalt
        - packagingGases
        - phosphate
        - plantSterols
        - plantStanols
        - preservatives
        - quinine
        - sugarsAndSweeteners
        - sweeteners
        - tableTopSweetenerAcesulfameK
        - tableTopSweetenerAdvantame
        - tableTopSweetenerAlitame
        - tableTopSweetenerAspartame
        - tableTopSweetenerAspartameAcesulphameSalt
        - tableTopSweetenerCyclamate
        - tableTopSweetenerErythritol
        - tableTopSweetenerIsomalt
        - tableTopSweetenerLactitol
        - tableTopSweetenerMaltitol
        - tableTopSweetenerMannitol
        - tableTopSweetenerNeohesperidineDC
        - tableTopSweetenerNeotame
        - tableTopSweetenerPolyglycitolSyrup
        - tableTopSweetenerSaccharin
        - tableTopSweetenerSorbitol
        - tableTopSweetenerSteviolGlycoside
        - tableTopSweetenerSucralose
        - tableTopSweetenerThaumatin
        - tableTopSweetenerXylitol
        - waxed
    RestaurantsAdditiveWarning:
      description: Type of warning to show for specific additives
      type: string
      enum:
        - caffeineHighContentBeverage
        - caffeineNonBeverage
        - coloursHyperactivity
        - liquoriceHypertension
        - packagingGasesProtectiveAtmosphere
        - plantSterolsStanols
        - sweetenersLaxativeEffects
        - sweetenersPhenylalanine
    RestaurantsAllergen:
      type: object
      additionalProperties: true
      description: Indicates the presence of an allergen in a variation or modifier.
      required:
        - type
        - level
      properties:
        type:
          description: Types of allergens that can be present
          $ref: '#/components/schemas/RestaurantsAllergenType'
          nullable: false
        level:
          description: Level of containment of an allergen
          $ref: '#/components/schemas/RestaurantsAllergenContainmentLevel'
          nullable: false
    RestaurantsAllergenContainmentLevel:
      description: Containment level for an allergen
      type: string
      enum:
        - contains
        - mayContain
    RestaurantsAllergenType:
      description: Type of allergen
      type: string
      enum:
        - celery
        - crustacean
        - egg
        - fish
        - glutenCereal
        - glutenCerealBarley
        - glutenCerealKamut
        - glutenCerealOat
        - glutenCerealRye
        - glutenCerealSpelt
        - glutenCerealWheat
        - lupin
        - milkLactose
        - mollusc
        - mustard
        - peanut
        - sesame
        - soybean
        - sulphurDioxideSulphites
        - treeNut
        - treeNutAlmond
        - treeNutBrazilNut
        - treeNutCashew
        - treeNutHazelnut
        - treeNutMacadamia
        - treeNutPecan
        - treeNutPistachio
        - treeNutWalnut
    RestaurantsBadRequestMarketingResponse:
      description: 400 Bad Request Returned
      example:
        message: Unable to process the request.
        errors:
          - errorCode: '400'
            description: Bad Request
        faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
    RestaurantsCaffeineInformation:
      type: object
      additionalProperties: true
      description: Represents the caffeine data for a specific serving.
      required:
        - caffeineQuantity
      anyOf:
        - required:
            - referenceQuantity
        - required:
            - description
      properties:
        description:
          type: string
          description: Label for the reference quantity.
          nullable: true
          example: Caffeine mg per 100ml
        referenceQuantity:
          $ref: '#/components/schemas/RestaurantsReferenceQuantity'
          description: The quantity the caffeine applies to.
          nullable: true
          example: 100ml
        caffeineQuantity:
          $ref: '#/components/schemas/RestaurantsReferenceQuantity'
          description: The quantity of caffeine.
          example: 15mg
      example:
        description: Caffeine mg per 100ml
        referenceQuantity:
          unit: ml
          quantity:
            value: 100
            lessThan: false
        caffeineQuantity:
          unit: mg
          quantity:
            value: 15
            lessThan: false
    RestaurantsContactInformation:
      type: object
      description: Contact information for a person or organisation.
      required:
        - name
      properties:
        name:
          type: string
          description: The name of the person or organisation.
          nullable: false
        emailAddress:
          type: string
          format: email
          description: The email address of the person or organisation.
          nullable: true
        address:
          type: string
          description: The address of the person or organisation.
          nullable: true
      example:
        name: John Doe
        emailAddress: john.doe@example.com
        address: 123 Main Street, Anytown, UK
    RestaurantsDeliveryFee:
      type: object
      required:
        - minimumOrderLimit
        - feeAboveLimit
        - feeType
      description: The delivery fees for a fee package
      properties:
        minimumOrderLimit:
          type: integer
          format: int32
          description: The minimum limit of the order value.
        feeAboveLimit:
          format: integer
          description: The delivery fee in smallest unit of relevant currency that has order value above the `minimumOrderLimit`.
          type: number
        feeBelowLimit:
          format: integer
          description: The delivery fee in smallest unit of relevant currency that has order value less than the `minimumOrderLimit`.
          type: number
        freeDeliveryLimit:
          type: integer
          format: int32
          description: Free delivery over order price.
        feeType:
          description: Type of the delivery fee.
          enum:
            - default
            - postCodeOverride
          type: string
        currencyCode:
          description: The ISO-4217 currency code associated with the all prices and money amounts in order details
          type: string
        postalCode:
          type: string
          description: The postal code for this fee.
    RestaurantsDeliveryFeesPackage:
      type: object
      required:
        - id
        - name
        - feesPackageType
        - fees
      properties:
        id:
          type: string
          description: The Id of the delivery fees package.
        name:
          type: string
          description: The name of the delivery fees package.
        feesPackageType:
          description: The type of the delivery fees package.
          enum:
            - default
            - timeOverride
          type: string
        fees:
          type: array
          description: The list of fees for the delivery fees package.
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsDeliveryFee'
        timeSlots:
          type: array
          description: The list of time slots for delivery fees time based overrides. When there is no time slots, it will be considered as the whole day.
          items:
            $ref: '#/components/schemas/RestaurantsDeliveryFeesTimeSlot'
      description: The object representing a delivery fees package.
      example:
        id: ca3687f5-0b3e-4e42-9dff-cdcd631f20e6
        name: Monday and Wednesday fees
        feesPackageType: timeOverride
        fees:
          - limit: 800
            feeAboveLimit: 1000
            feeBelowLimit: 1200
            freeDeliveryLimit: 9900
            feeType: default
            minimumOrderLimit: 2000
            currencyCode: GBP
          - postalCode: AR51
            limit: 1000
            feeAboveLimit: 1100
            feeBelowLimit: 1400
            minimumOrderLimit: 2000
            freeDeliveryLimit: 9000
            feeType: postCodeOverride
            currencyCode: GBP
        timeSlots:
          - dayOfWeek: monday
            startTime: '18:00:00'
            endTime: '20:00:00'
          - dayOfWeek: wednesday
            startTime: '18:00:00'
            endTime: '20:00:00'
    RestaurantsDeliveryFeesPackageRequest:
      type: object
      required:
        - name
        - fees
        - feesPackageType
      properties:
        name:
          type: string
          description: The name of the delivery fees package.
        feesPackageType:
          description: The type of the delivery fees package.
          enum:
            - default
            - timeOverride
          type: string
        fees:
          description: The list of fees for the delivery fees package.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsDeliveryFee'
        timeSlots:
          type: array
          description: The list of time slots for delivery fees time based overrides. When there is no time slots, it will be considered as the whole day.
          items:
            $ref: '#/components/schemas/RestaurantsDeliveryFeesTimeSlot'
      description: The object representing a delivery fees package.
      example:
        name: Adjustment Fees
        feesPackageType: timeOverride
        fees:
          - limit: 800
            feeAboveLimit: 1000
            feeBelowLimit: 1200
            freeDeliveryLimit: 9900
            minimumOrderLimit: 2000
            feeType: default
            currencyCode: GBP
          - postalCode: AR51
            limit: 1000
            feeAboveLimit: 1100
            feeBelowLimit: 1400
            freeDeliveryLimit: 9000
            minimumOrderLimit: 2000
            feeType: postCodeOverride
            currencyCode: GBP
        timeSlots:
          - dayOfWeek: monday
            startTime: '18:00:00'
            endTime: '20:00:00'
          - dayOfWeek: wednesday
            startTime: '18:00:00'
            endTime: '20:00:00'
    RestaurantsDeliveryFeesTimeSlot:
      type: object
      properties:
        dayOfWeek:
          description: Day of week for delivery fee override.
          $ref: '#/components/schemas/SharedDayOfWeek'
        startTime:
          description: Start time of the time slot.
          format: time
          type: string
        endTime:
          description: End time of the time slot.
          format: time
          type: string
    RestaurantsExternalSearchResponse:
      properties:
        Restaurants:
          items:
            description: A restaurant
            properties:
              DriveDistance:
                type: number
                description: The distance to drive
              Name:
                type: string
                description: The name of the restaurant
              UniqueName:
                type: string
                description: A guaranteed to be unique
              Id:
                type: number
                description: The id
              Url:
                type: string
                description: The URL of the restaurant
              IsOpenNow:
                type: boolean
                description: True if open
              DeliveryEtaMinutes:
                description: The delivery ETA
                properties:
                  RangeLower:
                    description: The lower bound for the estimate
                    type: number
                  Approximate:
                    description: The estimate
                    type: number
                  RangeUpper:
                    description: The upper bound for the estimate
                    type: number
                type: object
              IsOpenNowForDelivery:
                type: boolean
                description: True if open now
              DriveInfoCalculated:
                type: boolean
                description: True if the drive info has been calculated
              Address:
                description: The address of the restaurant
                properties:
                  Postcode:
                    type: string
                    description: The postcode
                  Latitude:
                    type: number
                    description: The latitude
                  FirstLine:
                    type: string
                    description: First line of the address
                  Longitude:
                    type: number
                    description: The longitude
                  City:
                    type: string
                    description: The city
                type: object
            type: object
          type: array
      type: object
      description: The search response
    RestaurantsGtin:
      description: The GS1 GTIN code to uniquely identify a product. This may be an EAN, APN, ISBN or UPC. Note that leading zeros are disregarded in comparisons.
      type: string
      minLength: 8
      maxLength: 14
      pattern: ^(\d{8}|\d{12,14}|(97(8|9))?\d{9}(\d|X))$
    RestaurantsGeneratePresignedFileUploadUrlRequest:
      properties:
        fileSizeInBytes:
          description: The size of file that will be uploaded to the AWS S3 bucket, in bytes
          format: int32
          type: number
          maximum: 23068672
          minimum: 1
      description: Request that contains information about file that will be uploaded to an AWS S3 bucket.
      example:
        fileSizeInBytes: 5574745
      type: object
    RestaurantsGeneratePresignedFileUploadUrlResponse:
      properties:
        url:
          description: Presigned URL for making a POST upload to Just Eat Takeaway's S3 bucket. The URL will expire after 30 minutes.
          type: string
        fields:
          description: Metadata fields that must be supplied in the form data of the upload request alongside the file to upload
          type: object
          additionalProperties:
            oneOf:
              - type: string
              - type: integer
        menuSchema:
          description: For information only (not included in this response) - This is the schema the uploaded menu file should conform to
          oneOf:
            - $ref: '#/components/schemas/RestaurantsMenuSyncV3Menu'
            - $ref: '#/components/schemas/RestaurantsMenuSyncV4ProductCatalogue'
      type: object
      description: A presigned URL and metadata which can be used for making a POST upload to Just Eat Takeaway's S3 bucket as described in this [official documentation](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html)
      externalDocs:
        url: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html
        description: AWS S3 Documentation detailing an example of how to use this data to post a file to S3
      example:
        url: https://s3.eu-west-1.amazonaws.com/menu-ingestion-pending
        fields:
          key: 123456
          bucket: menu-ingestion-pending
          X-Amz-Algorithm: AWS4-HMAC-SHA256
          X-Amz-Credential: ASIA.../20230412/eu-west-1/s3/aws4_request
          X-Amz-Date: 20230412T193102Z
          X-Amz-Security-Token: IQoJb3JpZ2luX2V...
          Policy: eyJleHBpcmF0a...
          X-Amz-Signature: e0a4307389ce3...
        menuSchema (not included in this response):
          restaurantId: '100059'
          name: My Restaurant
          description: My excellent menu
          currency: GBP
          categories:
            - id: '3'
              name: Starters
              description: ''
              itemIds:
                - '65143901'
            - id: '4'
              name: Deals
              description: ''
              itemIds:
                - '23435309'
                - '33445308'
            - id: '5'
              name: Pizzas
              description: ''
              itemIds:
                - '8547130'
                - '8547140'
            - id: '6'
              name: Drinks
              description: ''
              itemIds:
                - '6537130'
                - '6537140'
          items:
            - id: '23435309'
              type: deal
              name: Half-and-half Pizza
              description: Choose each half.
              labels: []
              variations:
                - id: '23435309'
                  name: ''
                  type: noVariation
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                  basePrice: 3099
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 100
                        unit: kcal
                      - min: 418
                        max: 418
                        unit: kJ
                    nutritionTable:
                      - description: Per 100g
                        referenceQuantity:
                          unit: g
                          quantity:
                            value: 100
                        nutritionProperties:
                          - name: protein
                            unit: g
                            quantity:
                              value: 0.1
                              lessThan: true
                          - name: fat
                            unit: g
                            percentRI: 50
                            quantity:
                              value: 15
                              lessThan: false
                  numberOfServings:
                    min: 1
                    max: 1
                  taxCategory: standardRate
                  dealGroupsIds:
                    - 23435309-1
                    - 23435309-2
              dealGroups:
                - id: 23435309-1
                  name: Choose your base
                  numberOfChoices: 1
                  dealItemVariations:
                    - dealItemVariationId: '1577341'
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                - id: 23435309-2
                  name: Choose your halves
                  numberOfChoices: 2
                  dealItemVariations:
                    - dealItemVariationId: '8547121'
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                    - dealItemVariationId: '3547157'
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                    - dealItemVariationId: '8548153'
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 50
            - id: '33445308'
              type: deal
              name: 14 inch Pizza & A Drink For 1
              description: 'Choose a 14 inch Pizza (including half-and-half) and any drink. Note: Alcohol is only available for collection.'
              labels: []
              variations:
                - id: '33445308'
                  name: ''
                  type: noVariation
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                  basePrice: 3099
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 200
                        unit: kcal
                      - min: 418
                        max: 836
                        unit: kJ
                  numberOfServings:
                    min: 1
                    max: 1
                  taxCategory: zeroRate
                  dealGroupsIds:
                    - 33445308-1
                    - 33445308-2
              dealGroups:
                - id: 33445308-1
                  name: Choose your pizza
                  numberOfChoices: 1
                  dealItemVariations:
                    - dealItemVariationId: '9750011'
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                    - dealItemVariationId: '9750021'
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                    - dealItemVariationId: '23435309'
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                - id: 33445308-2
                  name: Choose your drink
                  numberOfChoices: 1
                  dealItemVariations:
                    - dealItemVariationId: '6537130'
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 13
                    - dealItemVariationId: '6537140'
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                    - dealItemVariationId: '7739164'
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
            - id: '65143901'
              type: menuItem
              name: Flat Bread and Dips (Pick any 2 Dips)
              requireOtherProducts: false
              description: ''
              labels: []
              variations:
                - id: '65143901'
                  name: ''
                  type: noVariation
                  basePrice: 650
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 100
                        unit: kcal
                      - min: 418
                        max: 418
                        unit: kJ
                  numberOfServings:
                    min: 1
                    max: 1
                  kitchenNumber: '90'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
                  modifierGroupsIds:
                    - 65143901-req-1
                    - 65143901-req-2
              modifierGroups:
                - id: 65143901-req-1
                  name: Choose your bread
                  minChoices: 1
                  maxChoices: 1
                  modifiers:
                    - id: '834502'
                      name: Pitta Bread
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                      nutrition:
                        energyContent:
                          - min: 100
                            max: 100
                            unit: kcal
                          - min: 418
                            max: 418
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '835700'
                      name: Sourdough
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                      nutrition:
                        energyContent:
                          - min: 100
                            max: 100
                            unit: kcal
                          - min: 418
                            max: 418
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '835601'
                      name: Wholemeal
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 50
                      nutrition:
                        energyContent:
                          - min: 50
                            max: 50
                            unit: kcal
                          - min: 209
                            max: 209
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                      taxCategory: reducedRate
                - id: 65143901-req-2
                  name: Choose your dips
                  minChoices: 2
                  maxChoices: 2
                  modifiers:
                    - id: '835340'
                      name: Tzatziki
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 0
                      nutrition:
                        energyContent:
                          - min: 10
                            max: 10
                            unit: kcal
                          - min: 42
                            max: 42
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '835341'
                      name: Taramasalata
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 0
                      nutrition:
                        energyContent:
                          - min: 20
                            max: 20
                            unit: kcal
                          - min: 84
                            max: 84
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '825344'
                      name: Hummus
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 0
                      nutrition:
                        energyContent:
                          - min: 30
                            max: 30
                            unit: kcal
                          - min: 126
                            max: 126
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '825346'
                      name: Onion
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 0
                      nutrition:
                        energyContent:
                          - min: 0
                            max: 0
                            unit: kcal
                          - min: 0
                            max: 0
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
            - id: '1577341'
              type: menuItem
              name: Base
              requireOtherProducts: true
              description: ''
              labels: []
              variations:
                - id: '1577341'
                  name: ''
                  type: noVariation
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
                  basePrice: 200
                  dealOnly: true
                  modifierGroupsIds:
                    - 1577341-req-1
              modifierGroups:
                - id: 1577341-req-1
                  name: Crust
                  minChoices: 1
                  maxChoices: 1
                  modifiers:
                    - id: '854500'
                      name: Classic Crust
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                      nutrition:
                        energyContent:
                          - min: 0
                            max: 0
                            unit: kcal
                          - min: 0
                            max: 0
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '854600'
                      name: Stuffed Crust
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 200
                      nutrition:
                        energyContent:
                          - min: 100
                            max: 100
                            unit: kcal
                          - min: 418
                            max: 418
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
            - id: '8547130'
              type: menuItem
              name: Margherita
              requireOtherProducts: true
              description: ''
              labels: []
              variations:
                - id: '8547121'
                  name: Half
                  type: variation
                  basePrice: 500
                  dealOnly: true
                  kitchenNumber: '100'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
                  modifierGroupsIds:
                    - 8547130-opt-1
                - id: '8547130'
                  name: 12 inch
                  type: variation
                  basePrice: 1000
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 100
                        unit: kcal
                      - min: 418
                        max: 418
                        unit: kJ
                  numberOfServings:
                    min: 1
                    max: 1
                  kitchenNumber: '100'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
                  modifierGroupsIds:
                    - 8547130-req-1
                    - 8547130-opt-1
                - id: '8543123'
                  name: 14 inch
                  type: variation
                  basePrice: 1200
                  dealOnly: true
                  kitchenNumber: '200'
                  availabilityIds:
                    - 1-lunch-delivery-weekday
                    - 2-lunch-collection-weekday
                    - 3-dinner-delivery-weekday
                    - 4-dinner-collection-weekday
                  modifierGroupsIds:
                    - 8547130-req-1
                    - 8547130-opt-1
              modifierGroups:
                - id: 8547130-req-1
                  name: Choose your crust
                  minChoices: 1
                  maxChoices: 1
                  modifiers:
                    - id: '854500'
                      name: Classic Crust
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                      nutrition:
                        energyContent:
                          - min: 0
                            max: 0
                            unit: kcal
                          - min: 0
                            max: 0
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '854600'
                      name: Stuffed Crust
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 200
                      nutrition:
                        energyContent:
                          - min: 100
                            max: 100
                            unit: kcal
                          - min: 418
                            max: 418
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                - id: 8547130-opt-1
                  name: Any extra toppings?
                  minChoices: 0
                  maxChoices: 10
                  modifiers:
                    - id: '1000'
                      name: Mozzarella Cheese
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 50
                    - id: '1001'
                      name: Ham
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 50
                    - id: '1002'
                      name: Red Onion
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 50
                    - id: '1003'
                      name: Pepperoni
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 50
                    - id: '1004'
                      name: Olives
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 50
            - id: '8547140'
              type: menuItem
              name: Double Pepperoni
              requireOtherProducts: false
              description: ''
              labels: []
              variations:
                - id: '8548153'
                  name: Half
                  type: variation
                  basePrice: 500
                  dealOnly: true
                  kitchenNumber: '100'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
                  modifierGroupsIds:
                    - 8547140-opt-1
                - id: '8547140'
                  name: 12 inch
                  type: variation
                  basePrice: 1000
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 100
                        unit: kcal
                      - min: 418
                        max: 418
                        unit: kJ
                  numberOfServings:
                    min: 1
                    max: 1
                  kitchenNumber: '100'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
                  modifierGroupsIds:
                    - 8547140-req-1
                    - 8547140-opt-1
                - id: '9750021'
                  name: 14 inch
                  type: variation
                  basePrice: 1200
                  dealOnly: true
                  kitchenNumber: '200'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
                  modifierGroupsIds:
                    - 8547140-req-1
                    - 8547140-opt-1
                - id: '9755052'
                  name: 18 inch
                  type: variation
                  basePrice: 1200
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 100
                        unit: kcal
                      - min: 418
                        max: 418
                        unit: kJ
                  numberOfServings:
                    min: 1
                    max: 1
                  kitchenNumber: '200'
                  availabilityIds:
                    - 2-lunch-collection
                    - 4-dinner-collection
                  modifierGroupsIds:
                    - 9755052-req-1
                    - 9755052-opt-1
              modifierGroups:
                - id: 8547140-req-1
                  name: Choose your crust
                  minChoices: 1
                  maxChoices: 1
                  modifiers:
                    - id: '854500'
                      name: Classic Crust
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                      nutrition:
                        energyContent:
                          - min: 0
                            max: 0
                            unit: kcal
                          - min: 0
                            max: 0
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '854600'
                      name: Stuffed Crust
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 200
                      nutrition:
                        energyContent:
                          - min: 100
                            max: 100
                            unit: kcal
                          - min: 418
                            max: 418
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                - id: 8547140-opt-1
                  name: Any extra toppings?
                  minChoices: 0
                  maxChoices: 10
                  modifiers:
                    - id: '1000'
                      name: Mozzarella Cheese
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 50
                    - id: '1001'
                      name: Ham
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 50
                    - id: '1002'
                      name: Red Onion
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 50
                    - id: '1003'
                      name: Pepperoni
                      minChoices: 2
                      maxChoices: 4
                      additionPrice: 50
                    - id: '1004'
                      name: Olives
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 50
                - id: 9755052-req-1
                  name: Choose your crust
                  minChoices: 1
                  maxChoices: 1
                  modifiers:
                    - id: '854500'
                      name: Classic Crust
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 0
                    - id: '854600'
                      name: Stuffed Crust
                      minChoices: 0
                      maxChoices: 1
                      additionPrice: 250
                - id: 9755052-opt-1
                  name: Any extra toppings?
                  minChoices: 0
                  maxChoices: 10
                  modifiers:
                    - id: '1000'
                      name: Mozzarella Cheese
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 70
                    - id: '1001'
                      name: Ham
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 70
                    - id: '1002'
                      name: Red Onion
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 70
                    - id: '1003'
                      name: Pepperoni
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 70
                    - id: '1004'
                      name: Olives
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 70
            - id: '3547157'
              type: menuItem
              name: Vegetarian
              requireOtherProducts: false
              description: ''
              labels:
                - vegetarian
              variations:
                - id: '3547157'
                  name: ''
                  type: noVariation
                  basePrice: 500
                  dealOnly: true
                  kitchenNumber: '121'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
                  modifierGroupsIds:
                    - 8547140-opt-1
              modifierGroups:
                - id: 8547140-opt-1
                  name: Any extra toppings?
                  minChoices: 0
                  maxChoices: 10
                  modifiers:
                    - id: '1000'
                      name: Mozzarella Cheese
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 50
                      nutrition:
                        energyContent:
                          - min: 100
                            max: 100
                            unit: kcal
                          - min: 418
                            max: 418
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '1001'
                      name: Ham
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 50
                      nutrition:
                        energyContent:
                          - min: 10
                            max: 10
                            unit: kcal
                          - min: 42
                            max: 42
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '1002'
                      name: Red Onion
                      minChoices: 1
                      maxChoices: 2
                      additionPrice: 50
                      nutrition:
                        energyContent:
                          - min: 0
                            max: 0
                            unit: kcal
                          - min: 0
                            max: 0
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '1003'
                      name: Pepperoni
                      minChoices: 0
                      maxChoices: 2
                      additionPrice: 50
                      nutrition:
                        energyContent:
                          - min: 10
                            max: 10
                            unit: kcal
                          - min: 42
                            max: 42
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
                    - id: '1004'
                      name: Olives
                      minChoices: 1
                      maxChoices: 2
                      additionPrice: 50
                      nutrition:
                        energyContent:
                          - min: 10
                            max: 10
                            unit: kcal
                          - min: 42
                            max: 42
                            unit: kJ
                      numberOfServings:
                        min: 1
                        max: 1
            - id: '6537130'
              type: menuItem
              name: Coca-Cola
              requireOtherProducts: true
              description: ''
              labels: []
              variations:
                - id: '6537130'
                  name: 0.33L
                  type: variation
                  basePrice: 100
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 100
                        unit: kcal
                      - min: 418
                        max: 418
                        unit: kJ
                  numberOfServings:
                    min: 1
                    max: 1
                  kitchenNumber: '300'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
                - id: '9750011'
                  name: 1.5L
                  type: variation
                  basePrice: 300
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 100
                        unit: kcal
                      - min: 418
                        max: 418
                        unit: kJ
                  numberOfServings:
                    min: 1
                    max: 1
                  kitchenNumber: '400'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
            - id: '6537140'
              type: menuItem
              name: Diet Coke
              requireOtherProducts: true
              description: ''
              labels: []
              variations:
                - id: '6537140'
                  name: 0.33L
                  type: variation
                  basePrice: 100
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 100
                        unit: kcal
                      - min: 418
                        max: 418
                        unit: kJ
                  numberOfServings:
                    min: 1
                    max: 1
                  kitchenNumber: '300'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
                - id: '9750312'
                  name: 1.5L
                  type: variation
                  basePrice: 300
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 100
                        unit: kcal
                      - min: 418
                        max: 418
                        unit: kJ
                  numberOfServings:
                    min: 1
                    max: 1
                  kitchenNumber: '400'
                  availabilityIds:
                    - 1-lunch-delivery
                    - 2-lunch-collection
                    - 3-dinner-delivery
                    - 4-dinner-collection
            - id: '7739164'
              type: menuItem
              name: Bottle of Lager
              requireOtherProducts: true
              description: ''
              labels: []
              variations:
                - id: '7739164'
                  name: ''
                  type: noVariation
                  basePrice: 300
                  dealOnly: false
                  nutrition:
                    energyContent:
                      - min: 100
                        max: 100
                        unit: kcal
                      - min: 418
                        max: 418
                        unit: kJ
                  numberOfServings:
                    min: 1
                    max: 1
                  kitchenNumber: '700'
                  availabilityIds:
                    - 2-lunch-collection
                    - 4-dinner-collection
    RestaurantsIgnoredRestaurantIds:
      properties:
        ignoredRestaurantIds:
          items:
            type: string
          description: A list of restaurant ids that were present in a request but were ignored.
          type: array
      type: object
      example:
        ignoredRestaurantIds:
          - '123'
          - '456'
    RestaurantsImage:
      description: Indicates the presence of images on a menu item.
      type: object
      properties:
        url:
          description: URL for an image of the item.
          type: string
          format: uri
        dataSource:
          description: How this image was associated with the product. Defined as a string rather than an enum type as the set of supported values is expected to grow as the platform evolves. Supported values are `partner`, `databank`, `databankPrediction`, `aiGenerated`, `aiGeneric`, `aiEnhanced`, `photoshoot`.
          type: string
      required:
        - url
        - dataSource
      additionalProperties: true
    RestaurantsIngestPreUploadedMenuRequest:
      properties:
        eTag:
          description: The ETag of the file that is obtained from the response of the [S3 POST upload](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) - can be optionally used to ensure the right file is being ingested. The ETag must retain all quotes as returned by AWS after the upload.
          type: string
        mapAvailabilityTimesToServiceTimes:
          type: boolean
          description: Indicate whether the shift times sent in the menu should be used to update the partner's opening hours. If set to true, the availability times sent in the menu will be used to update the partner's opening hours. If this is set to false or omitted from the request, the opening hours will not be updated. If the partner has multiple availabilities capability enabled, this has no effect.
      description: Request that contains information for the ingestion of a pre-uploaded menu
      example:
        eTag: '"1b2cf535f27731c974343645a3985328"'
        mapAvailabilityTimesToServiceTimes: false
      type: object
    RestaurantsInternalServerErrorMarketingResponse:
      description: 500 Internal Server Error Returned
      example:
        message: Something has gone wrong, please try again later.
        errors:
          - errorCode: '500'
            description: Internal Server Error
        faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
      x-abstract: true
      additionalProperties: false
      properties:
        message:
          description: Specific details about the error that may assist the you in resolving the issue
          type: string
        faultId:
          description: A value that helps identify this response back to logs, so we can easily find this specific fault
          type: string
        errors:
          nullable: true
          items:
            $ref: '#/components/schemas/RestaurantsMarketingError'
          description: Underlying errors associated with the error
          type: array
      type: object
    RestaurantsManufacturerInformation:
      type: object
      description: Information about the manufacturer of a pre-packaged product.
      properties:
        manufacturerDetails:
          $ref: '#/components/schemas/RestaurantsContactInformation'
        responsiblePerson:
          $ref: '#/components/schemas/RestaurantsContactInformation'
        bottler:
          $ref: '#/components/schemas/RestaurantsContactInformation'
      example:
        manufacturerDetails:
          name: Acme Foods Ltd.
          address: 123 Main Street, Anytown, UK
          emailAddress: email@example.com
        responsiblePerson:
          name: John Doe
          address: 456 Elm Street, Othertown, UK
          emailAddress: john.doe@example.com
        bottler:
          name: Bottling Co. Ltd.
          address: 789 Oak Avenue, Sometown, UK
          emailAddress: bottler@example.com
    RestaurantsMarketingError:
      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
    RestaurantsMarketingErrorResponse:
      x-abstract: true
      additionalProperties: false
      properties:
        message:
          description: Specific details about the error that may assist the you in resolving the issue
          type: string
        faultId:
          description: A value that helps identify this response back to logs, so we can easily find this specific fault
          type: string
        errors:
          nullable: true
          items:
            $ref: '#/components/schemas/RestaurantsMarketingError'
          description: Underlying errors associated with the error
          type: array
      type: object
    RestaurantsMarketingReportResponse:
      type: object
      additionalProperties:
        properties:
          reportData:
            nullable: true
            description: Report data as JSON object
          dataExtractionDateUTC:
            format: date-time
            description: The UTC datetime that the report data was extracted from BigQuery
            type: string
        type: object
      description: The report data and the extraction date
      example:
        unique-customers:
          reportData: '[{''month'':3,''year'':2019,''unique_customer_count'':630},{''month'':4,''year'':2019,''unique_customer_count'':583}]'
          dataExtractionDateUTC: '2019-09-03T14:10:05.0000000+01:00'
        orders-per-month:
          reportData: '[{''month'':3,''year'':2019,''order_count'':630},{''month'':4,''year'':2019,''order_count'':583}]'
          dataExtractionDateUTC: '2019-09-03T14:10:05.0000000+01:00'
        potential-orders-per-month:
          reportData: '[{''month'':3,''year'':2019,''potential_monthly_order_count'':630},{''month'':4,''year'':2019,''potential_monthly_order_count'':583}]'
          dataExtractionDateUTC: '2019-09-03T14:10:05.0000000+01:00'
    RestaurantsMenuIngestionResponse:
      type: object
      properties:
        correlationId:
          description: An ID for the asynchronous operation to ingest the menu
          type: string
      example:
        correlationId: 64bef5ee-7265-47f8-9aee-28bc74f00b13
    RestaurantsMenuTranslation:
      type: object
      required:
        - language
        - text
      properties:
        language:
          description: A two-letter language code as defined by ISO 639-1.
          type: string
          minLength: 2
          maxLength: 2
          nullable: false
        text:
          description: The translation of the field.
          type: string
          minLength: 1
          nullable: false
      example:
        language: it
        text: pane all'aglio
    RestaurantsNetQuantity:
      type: object
      additionalProperties: true
      description: The net quantity of an item (not including packaging), or the net quantity of an individual product within a multi-pack.
      required:
        - unit
        - value
      properties:
        unit:
          $ref: '#/components/schemas/RestaurantsUnitPriceUnitType'
          description: Unit of measurement for the quantity of the item.
          nullable: false
        value:
          type: number
          format: decimal
          minimum: 0
          description: The value of the net quantity
          nullable: false
        quantity:
          type: integer
          description: Optional field indicating the item consists of multiple products (e.g. a multi-pack of soft drinks). If this is set, the value should relate to an individual product within the multi-pack (e.g. 330ml for a can of soft drink).
          minimum: 0
          nullable: true
      example:
        unit: ml
        value: 330
        quantity: 6
    RestaurantsNotFoundMarketingResponse:
      description: 404 Not Found Returned
      example:
        message: The requested resource could not found.
        errors:
          - errorCode: '404'
            description: Campaign Not found
        faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
      x-abstract: true
      additionalProperties: false
      properties:
        message:
          description: Specific details about the error that may assist the you in resolving the issue
          type: string
        faultId:
          description: A value that helps identify this response back to logs, so we can easily find this specific fault
          type: string
        errors:
          nullable: true
          items:
            $ref: '#/components/schemas/RestaurantsMarketingError'
          description: Underlying errors associated with the error
          type: array
      type: object
    RestaurantsNumberOfServings:
      type: object
      required:
        - min
        - max
      description: The number of servings, expressed as a range.
      properties:
        min:
          description: The minimum number of servings.
          type: number
          format: int32
          minimum: 0
          nullable: false
        max:
          description: The maximum number of servings.
          type: number
          format: int32
          minimum: 0
          nullable: false
      example:
        min: 1
        max: 1
    RestaurantsNutriScore:
      description: The NutriScore of the product.
      type: string
      pattern: ^[A-E]$
      example: B
    RestaurantsNutrition:
      type: object
      description: Nutritional information for this item.
      properties:
        energyContent:
          items:
            $ref: '#/components/schemas/RestaurantsNutritionalRangeItem'
          type: array
          description: Energy information for this item.
          minItems: 1
          nullable: true
        alcoholByVolume:
          type: number
          format: decimal
          minimum: 0
          maximum: 100
          description: The alcohol by volume of this item, represented as a percentage value.
          nullable: true
        caffeine:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsCaffeineInformation'
          nullable: true
        ingredients:
          type: string
          description: A list of ingredients for this product.
          nullable: true
        nutriScore:
          $ref: '#/components/schemas/RestaurantsNutriScore'
          nullable: true
        nutritionTable:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsNutritionTableItem'
          nullable: true
        allergens:
          type: object
          additionalProperties: true
          description: Describes the allergens for a variation/modifier. If there are no allergens, the 'allergenSet' will be an empty array. If allergens are unknown, this field will not be included.
          properties:
            dataSource:
              type: string
              $ref: '#/components/schemas/RestaurantsNutritionalDataSource'
              description: The provider of the predicted or validated set of allergens.
            validated:
              type: boolean
              description: Specifies whether the set of allergens provided has been validated as accurate.
            allergenSet:
              type: array
              items:
                $ref: '#/components/schemas/RestaurantsAllergen'
              description: The set of allergens provided for this variation/modifier. If this is an empty array, this indicates that the variation/modifier does not contain any allergens.
            containsNoAllergens:
              type: boolean
              description: Additional safety check - this property will be set to true if the allergen set is empty.
          required:
            - dataSource
            - validated
            - allergenSet
          nullable: true
        additives:
          type: object
          additionalProperties: true
          description: Describes the additives for a variation/modifier. If there are no additives, the 'additiveSet' should be an empty array. If additives are unknown, this field should not be included.
          required:
            - dataSource
            - validated
            - additiveSet
          properties:
            dataSource:
              type: string
              $ref: '#/components/schemas/RestaurantsNutritionalDataSource'
              description: The provider of the predicted or confirmed set of additives.
            validated:
              type: boolean
              description: Specifies whether the set of additives provided has been confirmed as accurate.
            additiveSet:
              type: array
              items:
                $ref: '#/components/schemas/RestaurantsAdditive'
              description: The set of additives provided for this variation/modifier. If this is an empty array, this indicates that the variation/modifier does not contain any additives.
              nullable: true
            containsNoAdditives:
              type: boolean
              description: Additional safety check - this property will be set to true if the additive set is empty.
              nullable: true
      example:
        energyContent:
          - min: 100
            max: 100
            unit: kcal
          - min: 100
            max: 100
            unit: kJ
        ingredients: Water, WHEAT Flour (62%), Tomato Purée (8%), Mozzarella Cheese (MILK) (6%), Olive Oil, Salt, Yeast, Basil
        nutriScore: A
    RestaurantsNutritionProperty:
      description: Represents a nutrition component
      additionalProperties: true
      required:
        - name
        - unit
        - quantity
      properties:
        name:
          description: 'The nutrition component being referenced. Currently supported nutrition components: ''addedSugar'', ''calcium'', ''carbohydrates'', ''cholesterol'', ''energyKcal'', ''energyKj'', ''fat'', ''fibre'', ''iron'', ''monounsaturatedFat'', ''potassium'', ''polyols'', ''polyunsaturatedFat'', ''protein'', ''salt'', ''saturatedFat'', ''sodium'', ''starch'', ''sugar'', ''transFat'', ''vitaminD'''
          type: string
          nullable: false
        unit:
          description: The unit used to represented the nutrition quantity.
          $ref: '#/components/schemas/RestaurantsQuantityUnit'
          nullable: false
        quantity:
          description: The quantity of the nutrient.
          $ref: '#/components/schemas/RestaurantsQuantityValue'
          nullable: false
        percentRI:
          type: number
          format: decimal
          minimum: 0
          description: The percentage of the daily reference intake (RI) of an average adult.
          nullable: true
    RestaurantsNutritionTableItem:
      type: object
      additionalProperties: true
      description: Represents the nutrition table information for a specific serving.
      required:
        - description
        - nutritionProperties
      properties:
        description:
          type: string
          description: Label for the nutrition table item.
          nullable: false
        referenceQuantity:
          $ref: '#/components/schemas/RestaurantsReferenceQuantity'
          description: The quantity the nutrition table item applies to.
          nullable: true
        nutritionProperties:
          items:
            $ref: '#/components/schemas/RestaurantsNutritionProperty'
          description: The nutrition information for the reference quantity.
          type: array
          minItems: 1
          nullable: false
      example:
        description: Quantity Per 100g
        referenceQuantity:
          unit: g
          quantity:
            value: 100
            lessThan: false
        nutritionProperties:
          - name: fat
            unit: g
            quantity:
              value: 15
              lessThan: false
            percentRI: 50
          - name: protein
            unit: g
            quantity:
              value: 0.1
              lessThan: true
    RestaurantsNutritionalDataSource:
      description: The data source for a set of allergens or additives
      type: string
      enum:
        - databank
        - partner
        - prediction
    RestaurantsNutritionalRangeItem:
      type: object
      required:
        - min
        - max
        - unit
      properties:
        min:
          description: The minimum energy content.
          type: number
          format: int32
          nullable: false
        max:
          description: The maximum energy content.
          type: number
          format: int32
          nullable: false
        unit:
          description: The unit of measure.
          enum:
            - kcal
            - kJ
          type: string
          nullable: false
      example:
        min: 100
        max: 100
        unit: kcal
    RestaurantsOrderTimeOverride:
      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
        startTime:
          description: start time of the override.
          format: time
          type: string
        endTime:
          description: end time of the override.
          format: time
          type: string
      description: The object representing order time override entry
      example:
        lowerBoundMinutes: 44
        upperBoundMinutes: 59
        startTime: '18:00:00'
        endTime: '20:00:00'
      type: object
    RestaurantsProductTypes:
      type: array
      description: An array of tags that represent the type or properties of the variation. Supported values are `aerosolPaint`, `alcohol`, `antihistamines`, `babyFormula`, `cannabidiol`, `cannabis`, `christmasCracker`, `cigarettePapers`, `codeine`, `coldFlu`, `corrosive`, `decongestants`, `drink`, `energyDrink`, `hfss`, `lighterFuel`, `mature`, `medicine`, `nicotine`, `notAvailableForSale`, `packagedFood`, `packaging`, `painKillers`, `pharmacyControlled`, `ratedMedia12`, `ratedMedia14`, `ratedMedia15`, `ratedMedia16`, `ratedMedia17`, `ratedMedia18`, `ratedMedia19`, `ratedMediaPG`, `ratedMediaR`, `ratedMediaU`, `restaurantPreparedFood`, `sedatives`, `sensitive`, `soldByNetQuantity`, `solvent`, `tobacco`, `vapingProduct`
      items:
        type: string
      uniqueItems: true
      minItems: 0
      nullable: true
    RestaurantsProductUsageInformation:
      type: object
      description: Information about the recommended usage of a product.
      properties:
        preparationInstructions:
          type: string
          nullable: true
          description: The recommended usage instructions for the product, which can provide information about how to prepare it safely and effectively.
        storageInformation:
          type: string
          nullable: true
          description: The storage instructions for the product, which can provide information about how to store it safely and maintain its quality.
        conditionsOfUse:
          type: string
          nullable: true
          description: Any special instructions needed for safe or correct use of the product.
      example:
        preparationInstructions: |-
          Oven cook from frozen: 200°C / Fan 180°C / Gas 6 for 22 minutes. 

          Ensure piping hot throughout before serving.
        storageInformation: Store in a cool, dry place away from direct sunlight.
        conditionsOfUse: Add a small squeeze to warm water and work into a rich lather. For best results, wash glassware first, then plates and cutlery, followed by pots and pans. Rinse thoroughly and allow to drain or dry. \n \n For stubborn grease and baked-on food, add a few drops to warm water and leave to soak for up to 30 minutes before washing.
    RestaurantsQuantityRestriction:
      type: object
      description: |-
        Specifies quantity restriction rules applicable to variations, ensuring that customers can purchase any variations listed in `variationIds`,
        but not more than the specified maximum total quantity for all variations combined.
      required:
        - id
        - name
        - maximum
        - restrictedVariations
      properties:
        id:
          description: The ID of the quantity restriction.
          type: string
          minLength: 1
        name:
          description: The name of the quantity restriction.
          type: string
          minLength: 1
        maximum:
          description: The maximum quantity allowed within a quantity restriction.
          type: number
          format: decimal
          minimum: 0
          exclusiveMinimum: true
        restrictedVariations:
          description: Identifies variations that are subject to quantity restriction rules and the quantity that they contribute to the maximum limit.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsRestrictedProduct'
          nullable: false
      example:
        id: '123'
        name: Paracetamol
        maximum: 2
        restrictedVariations:
          - id: '111'
            contributingQuantity: 1
          - id: '222'
            contributingQuantity: 1
          - id: '333'
            contributingQuantity: 1
    RestaurantsQuantityUnit:
      description: Unit representing a quantity
      type: string
      enum:
        - g
        - kcal
        - kg
        - kJ
        - l
        - mg
        - ml
        - mmoles
    RestaurantsQuantityValue:
      type: object
      additionalProperties: true
      description: Represents the quantity of nutritional content.
      required:
        - value
      properties:
        value:
          type: number
          format: decimal
          minimum: 0
          description: The value representing the quantity of the nutrient
          nullable: false
        lessThan:
          type: boolean
          description: Indicates that the quantity is less than the specified value, e.g. <0.5g of fibre.
          nullable: true
    RestaurantsReferenceQuantity:
      description: Represents a reference quantity
      additionalProperties: true
      required:
        - unit
        - quantity
      properties:
        unit:
          description: The unit used to represented the reference quantity.
          $ref: '#/components/schemas/RestaurantsQuantityUnit'
        quantity:
          description: The value of the reference quantity.
          $ref: '#/components/schemas/RestaurantsQuantityValue'
    RestaurantsRestaurantBankDetails:
      oneOf:
        - type: object
          title: Sort Code & Account Number
          description: Information on the bank account of which we use to pay the restaurant, provided as a sort code and account number.
          required:
            - sortCode
            - accountNumber
          properties:
            bankName:
              type: string
              description: The name of the bank.
              minLength: 2
              maxLength: 100
              nullable: true
            accountHolderName:
              type: string
              description: The name of the bank account holder.
              maxLength: 255
              nullable: true
            sortCode:
              type: string
              description: The sort code.
              minLength: 6
              maxLength: 6
            accountNumber:
              type: string
              description: The bank account number.
              minLength: 10
              maxLength: 12
        - type: object
          title: IBAN
          description: Information on the bank account of which we use to pay the restaurant, provided as an IBAN.
          required:
            - iban
          properties:
            bankName:
              type: string
              description: The name of the bank.
              minLength: 2
              maxLength: 100
              nullable: true
            accountHolderName:
              type: string
              description: The name of the bank account holder.
              maxLength: 255
              nullable: true
            iban:
              type: string
              description: The international bank account number.
              maxLength: 34
      example:
        bankName: Best Bank
        accountHolderName: John Doe
        sortCode: '123456'
        accountNumber: '12345678'
    RestaurantsRestaurantCreation:
      allOf:
        - $ref: '#/components/schemas/RestaurantsRestaurantCreationData'
        - type: object
          properties:
            isTestRestaurant:
              type: boolean
              description: Indicates whether the restaurant will be a test restaurant or not, this cannot be changed after the fact.
              default: false
              nullable: false
            masterTicketId:
              type: string
              description: The master ticket number for this restaurant. This is required in the UK only and not required for test restaurants.
              nullable: true
            signUpReference:
              type: string
              description: The reference ID for the restaurant's sign up process.
              nullable: true
      example:
        name: Test Restaurant
        location:
          type: Feature
          properties:
            validated: true
            address:
              - 127 High Street
              - Chelmsford
              - CM1 4QQ
          coordinates:
            latitude: 51.7361
            longitude: 0.4792
        phoneNumber: '+44791231234'
        cuisines:
          - Greek
          - European
        masterTicketId: '12345'
        owner:
          name: John Doe
          phoneNumber: '+44791231234'
        companyNumber: null
        description: This is a restaurant created for testing purposes only.
        email: test@justeattakeaway.com
        signUpFee:
          value: 130000
          currency: GBP
        commissionRate: 0.13
        bankDetails:
          bankName: Best Bank
          accountHolderName: John Doe
          sortCode: 12-34-56
          accountNumber: '12345678'
        externalFoodHygieneId: '12345'
        signUpReference: '123456789'
        isResponsibleForOwnDelivery: true
        isTestRestaurant: false
    RestaurantsRestaurantCreationData:
      type: object
      description: The data to start creating a restaurant on the platform.
      required:
        - name
        - location
        - phoneNumber
        - owner
        - commissionRate
      properties:
        name:
          type: string
          description: The restaurant name.
          minLength: 2
          maxLength: 50
          nullable: false
        location:
          type: object
          description: The restaurant location.
          nullable: false
          required:
            - properties
          properties:
            type:
              type: string
              description: The GeoJSON type representing the restaurant location.
              default: Feature
              nullable: false
            properties:
              type: object
              description: The restaurant location properties.
              nullable: false
              required:
                - validated
                - address
              properties:
                address:
                  items:
                    type: string
                  description: The restaurant address. Should be the restaurants address lines, followed by the city and then the postal code.
                  minItems: 3
                  maxItems: 5
                  type: array
                  nullable: false
                validated:
                  type: boolean
                  description: Provides information on whether the address given has been manually validated.
                  nullable: false
            coordinates:
              $ref: '#/components/schemas/SharedGeoposition'
              nullable: true
        phoneNumber:
          type: string
          description: The restaurant's public phone number in E.164 format.
          pattern: ^\+[1-9]\d{1,14}$
          nullable: false
        cuisines:
          type: array
          description: The restaurant's primary and secondary cuisine.
          minItems: 1
          maxItems: 2
          items:
            type: string
          nullable: false
        owner:
          type: object
          description: The restaurant owner.
          nullable: false
          required:
            - name
            - phoneNumber
          properties:
            name:
              type: string
              description: The full name of the restaurant owner.
              minLength: 2
              maxLength: 50
              nullable: false
            phoneNumber:
              type: string
              description: The phone/mobile number of the restaurant owner in E.164 format.
              pattern: ^\+[1-9]\d{1,14}$
              nullable: false
        email:
          type: string
          description: The restaurant's private email address for business correspondence between us and the restaurant.
          format: email
          nullable: true
        companyNumber:
          type: string
          description: The company number for the restaurant. In some markets this is also known as the VAT number.
          maxLength: 50
          nullable: true
        signUpFee:
          type: object
          description: The sign up fee paid by the the restaurant to get on the platform.
          nullable: true
          properties:
            value:
              type: integer
              description: The sign up fee in the lowest unit of the relevant local currency.
              minimum: 0
              nullable: false
            currency:
              type: string
              description: The ISO 4217 code for the currency provided.
              pattern: ^[A-Z]{3}$
              nullable: false
          required:
            - value
            - currency
        bankDetails:
          $ref: '#/components/schemas/RestaurantsRestaurantBankDetails'
        commissionRate:
          type: number
          description: The commission rate to charge for each order from this restaurant.
          format: double
          minimum: 0
          maximum: 1
          nullable: false
        externalFoodHygieneId:
          type: string
          description: The external food hygiene ID, if the market has such an organisation.
          nullable: true
        isResponsibleForOwnDelivery:
          type: boolean
          description: Indicates whether the restaurant will be responsible for handling the delivery of an order.
          default: false
          nullable: false
        allergenUrl:
          type: string
          description: URL that provides the allergen information for the restaurant
          nullable: true
        allergenPhoneNumber:
          type: string
          description: The phone number responsible for handling allergen queries
          pattern: ^\+[1-9]\d{1,14}$
          nullable: true
        isHalal:
          type: boolean
          description: Indicates whether or not the restaurant is halal
          default: false
          nullable: false
        cashPaymentOnly:
          type: boolean
          description: Does the restaurant accept only cash payment? It can only be true on Cash Payment Only / Card Payment Only
          default: false
          nullable: false
        cardPaymentOnly:
          type: boolean
          description: Does the restaurant accept only card payments? It can only be true on Cash Payment Only / Card Payment Only
          default: false
          nullable: false
        storefrontType:
          type: string
          description: What type of store is this location
          nullable: false
          enum:
            - restaurant
            - grocery
    RestaurantsRestaurantCreationProcess:
      allOf:
        - $ref: '#/components/schemas/RestaurantsRestaurantCreationStatus'
        - type: object
          properties:
            restaurantId:
              type: string
              description: The restaurant ID of the restaurant that was created as a result of the given creation request. This will only be present if the status has at least reached `onboarding`.
      example:
        status: onboarding
        errors:
          - description: Could not automatically geocode provided address.
            errorCode: AddressGeocodingFailed
            isBlockingProcess: false
        criteria:
          - type: creationTicketsCompleted
            description: Restaurant's setup tickets must be completed.
            passed: true
          - type: deliveryPartnerCorrectlyConfigured
            description: Restaurant must have its delivery partner correctly configured.
            passed: false
          - type: restaurantUpdatesCompleted
            description: Restaurant must not have any pending updates or errors.
            passed: false
        restaurantId: '1234'
    RestaurantsRestaurantCreationProcessUpdate:
      type: object
      properties:
        restaurant:
          $ref: '#/components/schemas/RestaurantsRestaurantCreationData'
    RestaurantsRestaurantCreationStatus:
      type: object
      description: The creation status of a given restaurant.
      properties:
        status:
          $ref: '#/components/schemas/RestaurantsRestaurantCreationStatusEnum'
        errors:
          type: array
          description: The list of errors that occurred during the creation request. Not all errors necessarily require attention.
          items:
            type: object
            properties:
              description:
                type: string
                description: Specific details about the error that may assist you in resolving the issue.
              errorCode:
                type: string
                description: A code that identifies the error type. It will be supported by human-readable documentation that identifies how to resolve the error.
              isBlockingProcess:
                type: boolean
                description: Indicates that the error is stopping the creation process from progressing.
        criteria:
          type: array
          description: The criteria required for the restaurant to pass before it can be activated.
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - commissionRateApproved
                  - creationTicketsCompleted
                  - deliveryPartnerCorrectlyConfigured
                  - restaurantUpdatesCompleted
                  - logoUploaded
                  - menuPublished
                description: A code indicating the criteria type.
              description:
                type: string
                description: A human readable description of the criteria. This will not be localized and should only be utilized if your client does not yet support the criteria `type`.
              passed:
                type: boolean
                description: Indicates whether the restaurant being created has passed the criteria or not.
      example:
        status: ready
        errors: []
        criteria:
          - type: commissionRateApproved
            description: Restaurant's commission rate must be approved.
            passed: true
          - type: deliveryPartnerCorrectlyConfigured
            description: Restaurant must have its delivery partner correctly configured.
            passed: true
          - type: creationTicketsCompleted
            description: Restaurant's setup tickets must be completed.
            passed: true
          - type: restaurantUpdatesCompleted
            description: Restaurant must not have any pending updates or errors.
            passed: true
    RestaurantsRestaurantCreationStatusEnum:
      description: Status of given restaurant creation process.
      enum:
        - creating
        - onboarding
        - ready
        - activated
      type: string
    RestaurantsRestaurantEtAs:
      items:
        properties:
          etaAtRestaurant:
            format: int32
            description: Your best estimation in minutes
            type: number
          restaurantId:
            description: The unique identifier of the restaurant.
            type: string
        type: object
        example:
          etaAtRestaurant: 1
          restaurantId: '1'
      type: array
    RestaurantsRestrictedProduct:
      type: object
      required:
        - id
        - contributingQuantity
      properties:
        id:
          description: The ID of the variation or modifier.
          type: string
          minLength: 1
          nullable: false
        contributingQuantity:
          description: The quantity that this product contributes to the maximum quantity restriction.
          type: number
          format: decimal
          minimum: 0
          exclusiveMinimum: true
          nullable: false
    RestaurantsSafetyInformation:
      type: object
      description: Contains the safety information for the product.
      additionalProperties: true
      properties:
        safetyStatements:
          type: string
          nullable: true
          description: The warnings, age recommendations and safety statements associated with the product.
        signalWord:
          type: string
          nullable: true
          description: The signal word associated with the product. This is a standardised GHS signal word which can be 'danger' or 'warning'.
          pattern: ^(danger|warning)$
        ghsHazardPictogramCodes:
          type: array
          uniqueItems: true
          items:
            type: string
            pattern: ^GHS[0-9]{2}$
          nullable: true
          description: The hazard codes for pictograms that must be displayed with the product. These are standardised GHS codes, see https://en.wikipedia.org/wiki/GHS_hazard_pictograms.
        hazardStatementCodes:
          type: array
          uniqueItems: true
          items:
            type: string
            pattern: ^H[0-9]{3}$
          nullable: true
          description: The codes for hazard statements that must be displayed with the product. These are standardised GHS codes, see https://en.wikipedia.org/wiki/GHS_hazard_statements. Do not provide this field if hazardStatements is provided.
        hazardStatements:
          type: string
          nullable: true
          description: The hazard statements associated with the product. These are standardised GHS H-statements. The value supplied should include all of the GHS H-statements applicable for the product, concatenated together as a single string. Do not provide this field if hazardStatementCodes is provided.
        precautionaryStatementCodes:
          type: array
          uniqueItems: true
          items:
            type: string
            pattern: ^P[0-9]{3}$
          nullable: true
          description: The codes for precautionary statements that must be displayed with the product. These are standardised GHS codes, see https://en.wikipedia.org/wiki/GHS_precautionary_statements. Do not provide this field if precautionaryStatements is provided.
        precautionaryStatements:
          type: string
          nullable: true
          description: The precautionary statements associated with the product. These are standardised GHS P-statements. The value supplied should include all of the GHS P-statements applicable for the product, concatenated together as a single string. Do not provide this field if precautionaryStatementCodes is provided.
        biocideRegistrationNumber:
          type: string
          nullable: true
          description: The biocide registration number associated with the product. This is a unique identifier that indicates the product has been registered as a biocide.
      example:
        signalWord: warning
        safetyStatements: Keep out of reach of children. Use only as directed.
        ghsHazardPictogramCodes:
          - GHS07
          - GHS08
        hazardStatementCodes:
          - H302
          - H312
        hazardStatements: Harmful if swallowed. Harmful in contact with skin.
        precautionaryStatementCodes:
          - P264
          - P270
        precautionaryStatements: Wash hands thoroughly after handling. Do not eat, drink or smoke when using this product.
        biocideRegistrationNumber: EU Authorisation No. EU-0012345-0000
    RestaurantsSearchResponse:
      properties:
        area:
          description: The area
          type: string
        promotedPlacement:
          properties:
            filteredSearchPromotedLimit:
              description: How many restaurants to promote when search is filtered
              type: number
            restaurants:
              type: object
              description: Dictionary of `restaurantIds` to promoted placement info.
              additionalProperties:
                $ref: '#/components/schemas/PromotedPlacementRestaurantPromotedPlacementInfo'
            rankedIds:
              items:
                type: number
              description: Restaurants that can be promoted, in preferred order
              type: array
          description: Information related to promoted placement restaurants.
          type: object
        deliveryFees:
          properties:
            restaurants:
              type: object
              description: Dictionary of `restaurantIds` to delivery fees.
              additionalProperties:
                $ref: '#/components/schemas/DeliveryfeesRestaurantDeliveryFees'
          description: Information related to delivery fees.
          type: object
        CuisineSets:
          items:
            properties:
              Id:
                type: string
                description: The id
              Name:
                type: string
                description: The name
              Cuisines:
                items:
                  properties:
                    SeoName:
                      type: string
                      description: The SEO name
                    Name:
                      type: string
                      description: The name
                  type: object
                type: array
              Type:
                type: string
                description: The type
            type: object
          type: array
        Views:
          items:
            properties:
              Components:
                description: The components of the view
                properties:
                  TemplateName:
                    type: string
                    description: The name of the template
                  Type:
                    type: string
                    description: The type
                  ViewData:
                    type: object
                    description: The view data
                  TrackingId:
                    type: string
                    description: The tracking Id
                  Id:
                    type: string
                    description: The id
                type: object
              Target:
                type: string
                description: The target
            type: object
          type: array
        Restaurants:
          items:
            $ref: '#/components/schemas/RestaurantsSearchRestaurant'
          type: array
        ShortResultText:
          type: string
          description: The short result
        MetaData:
          description: Additional data about the results
          properties:
            Area:
              type: string
              description: Text representation of the  area
            CuisineDetails:
              items:
                properties:
                  SeoName:
                    type: string
                    description: The SEO name
                  Total:
                    type: number
                    description: The total
                  Name:
                    type: string
                    description: The name of the cuisine
                type: object
              type: array
            Postcode:
              type: string
              description: The postcode
            ResultCount:
              type: number
              description: The number of results
            District:
              type: string
              description: The district
            CanonicalName:
              type: string
              description: The canonical name
            TagDetails:
              items:
                properties:
                  Priority:
                    type: number
                    description: The priority of the tag
                  Colour:
                    type: string
                    description: The colour to represent the tag in Hex
                  Key:
                    type: string
                    description: The key
                  DisplayName:
                    type: string
                    description: The display name of the tag
                  BackgroundColour:
                    type: string
                    description: The background colour for the tag in Hex
                type: object
              type: array
            SearchedTerms:
              nullable: true
              type: object
              description: The terms used for the search
            Longitude:
              description: The longitude of the search location
              type: number
            Latitude:
              description: The latitude of the search location
              type: number
          type: object
        RestaurantSets:
          items:
            properties:
              Restaurants:
                items:
                  properties:
                    Metadata:
                      items:
                        properties:
                          Key:
                            type: string
                            description: The key
                          Value:
                            type: string
                            description: The value
                        type: object
                      type: array
                    Id:
                      type: number
                      description: The id
                  type: object
                type: array
              Id:
                type: string
                description: The id
              Name:
                type: string
                description: The name
              Type:
                type: string
                description: The type
            type: object
          type: array
        Dishes:
          items:
            properties:
              Similar:
                items:
                  properties:
                    ProductId:
                      type: number
                      description: The id of the product
                    Price:
                      type: number
                      description: The price of the product
                    FullName:
                      type: string
                      description: The full name of the product
                  type: object
                type: array
              Best:
                items:
                  properties:
                    ProductId:
                      description: Deprecated field no longer populated, but retained for backwards compatibility with clients
                      type: number
                    Price:
                      description: The price of the product
                      type: number
                    StrProductId:
                      description: The id of the product
                      type: string
                    FullName:
                      description: The full name of the product
                      type: string
                  type: object
                type: array
              RestaurantId:
                type: number
                description: The restaurant ID
            type: object
          type: array
      type: object
      example:
        Area: Fleet Street
        MetaData:
          CanonicalName: ec4-fleetstreet
          District: EC4
          Postcode: EC4
          Area: Fleet Street
          Latitude: 0
          Longitude: 0
          CuisineDetails:
            - Name: Danish
              SeoName: danish
              Total: 171
          ResultCount: 1
          SearchedTerms: null
          TagDetails:
            - BackgroundColour: '#E6F6C5'
              Colour: '#04822C'
              DisplayName: Tried and Tasted
              Key: tried-and-tasted
              Priority: 300
        Restaurants:
          - Id: 102215
            Name: TEST_DP_1
            UniqueName: test_dp-london-london
            Address:
              City: London
              FirstLine: London
              Postcode: EC4M 7RF
              Latitude: 51.516454
              Longitude: -0.103137
            City: London
            Postcode: EC4M 7RF
            Latitude: 0
            Longitude: 0
            Rating:
              Count: 0
              Average: 0
              StarRating: 0
            RatingStars: 0
            NumberOfRatings: 0
            RatingAverage: 0
            Description: ''
            Url: https://www.just-eat.co.uk/restaurants-test_dp-london-london
            LogoUrl: http://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/102215.gif
            BannerUrl: https://res.cloudinary.com/tkwy-prod-eu/image/upload/{transformations}/v1676933415/static-takeaway-com/images/generic/heroes/541/541_burger_158
            IsTestRestaurant: false
            IsHalal: false
            IsNew: false
            ReasonWhyTemporarilyOffline: ''
            DriveDistance: 0
            DriveInfoCalculated: true
            IsCloseBy: true
            OfferPercent: 0
            NewnessDate: '2017-05-02T14:30:21'
            OpeningTime: '2019-11-19T01:00:00Z'
            OpeningTimeUtc: null
            OpeningTimeIso: '2019-11-19T01:00:00'
            OpeningTimeLocal: '2019-11-19T01:00:00'
            DeliveryOpeningTimeLocal: '2019-11-18T01:00:00'
            DeliveryOpeningTime: '2019-11-18T01:00:00Z'
            DeliveryOpeningTimeUtc: null
            DeliveryStartTime: '2019-11-18T01:00:00Z'
            DeliveryTime: null
            DeliveryTimeMinutes: null
            DeliveryWorkingTimeMinutes: 10
            DeliveryEtaMinutes:
              Approximate: null
              RangeLower: 10
              RangeUpper: 25
            IsCollection: false
            IsDelivery: true
            IsFreeDelivery: false
            IsOpenNowForCollection: false
            IsOpenNowForDelivery: true
            IsOpenNowForPreorder: false
            IsOpenNow: true
            IsTemporarilyOffline: false
            DeliveryMenuId: 224651
            CollectionMenuId: null
            DeliveryZipcode: null
            DeliveryCost: 0.12
            MinimumDeliveryValue: 0
            SecondDateRanking: 0
            DefaultDisplayRank: 0
            SponsoredPosition: 0
            SecondDateRank: 0
            Score: 502
            IsTemporaryBoost: false
            IsSponsored: false
            IsPremier: false
            HygieneRating: null
            ShowSmiley: false
            SmileyDate: null
            SmileyElite: false
            SmileyResult: null
            SmileyUrl: null
            SendsOnItsWayNotifications: false
            BrandName: ''
            IsBrand: false
            LastUpdated: '2019-09-10T10:55:58.199397'
            Deals:
              - Description: 20% off when you spend £20
                DiscountPercent: 20
                QualifyingPrice: 20
                OfferType: Percent
            Offers:
              - Amount: 20
                QualifyingValue: 20
                MaxQualifyingValue: 50
                Type: Percent
                OfferId: '136149'
            Logo:
              - StandardResolutionURL: http://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/102215.gif
            Tags: []
            DeliveryChargeBands: []
            CuisineTypes:
              - Id: 2
                IsTopCuisine: false
                Name: English
                SeoName: english
            Cuisines:
              - Name: English
                SeoName: english
            ScoreMetaData:
              - Key: Distance
                Value: '0'
              - Key: SetName
                Value: Default
            Badges: []
            OpeningTimes: []
            ServiceableAreas: []
        RestaurantSets: []
        CuisineSets:
          - Id: user_and_local_cuisines
            Name: ''
            Type: area_cuisines
            Cuisines:
              - Name: Pizza
                SeoName: pizza
        Views: []
        Dishes: []
        ShortResultText: EC4
        deliveryFees:
          restaurants:
            '102215':
              restaurantId: '102215'
              minimumOrderValue: 0
              bands:
                - minimumAmount: 0
                  fee: 100
        promotedPlacement:
          filteredSearchPromotedLimit: 5
          restaurants:
            '84335':
              restaurantId: '84335'
              defaultPromoted: true
          rankedIds:
            - 84335
    RestaurantsSearchRestaurant:
      description: Represents a restaurant in the search result
      properties:
        OpeningTimes:
          items:
            type: object
          type: array
        IsCollection:
          type: boolean
          description: True if the restaurant offers collection
        NumberOfRatings:
          type: number
          description: The number of reviews that have been left.
        SponsoredPosition:
          type: number
          description: The position in the sponsored results section.
        DeliveryOpeningTimeUtc:
          nullable: true
          format: date-time
          type: string
          description: The time when the restaurant opens for delivery.
        HygieneRating:
          nullable: true
          type: number
          description: The hygiene rating of the restaurant
        RatingAverage:
          type: number
          description: The Mean rating
        Offers:
          items:
            additionalProperties: true
            type: object
          type: array
        DeliveryOpeningTime:
          format: date-time
          type: string
          description: The time when the restaurant opens for delivery.
        IsSponsored:
          type: boolean
          description: Is the result sponsored
        CuisineTypes:
          items:
            properties:
              IsTopCuisine:
                type: boolean
                description: true if is top cuisine
              Id:
                type: number
                description: The cuisine id
            type: object
          type: array
        SecondDateRanking:
          type: number
          description: How likely customers are to return to the restaurant
        Description:
          type: string
          description: The restaurant description
        DeliveryOpeningTimeLocal:
          $ref: '#/components/schemas/LocalDateTime'
        Id:
          type: number
          description: Id of the restaurant
        IsTemporarilyOffline:
          type: boolean
          description: Is the restaurant offline temporarily
        SendsOnItsWayNotifications:
          type: boolean
          description: Does the restaurant send notifications when food is on its way
        OfferPercent:
          type: number
          description: Percentage discount
        ReasonWhyTemporarilyOffline:
          type: string
          description: Reason why the restaurant is temporarily offline
        CollectionMenuId:
          nullable: true
          type: number
          description: Id of the menu for collection
        OpeningTime:
          format: date-time
          type: string
          description: When the restaurant opens
        OpeningTimeIso:
          $ref: '#/components/schemas/LocalDateTime'
        IsOpenNowForDelivery:
          type: boolean
          description: Is the restaurant open for delivery now
        Cuisines:
          items:
            properties:
              SeoName:
                type: string
                description: The SEO name of the cuisine
              Name:
                type: string
                description: The name of the cuisine
            type: object
          type: array
        DeliveryEtaMinutes:
          description: Estimate for the restaurant delivery times
          properties:
            Approximate:
              nullable: true
              type: number
              description: The estimate
            RangeLower:
              type: number
              description: The lower limit of the estimate range
            RangeUpper:
              type: number
              description: The upper limit of the estimate range
          type: object
        IsBrand:
          type: boolean
          description: Is the restaurant a brand
        IsOpenNowForCollection:
          type: boolean
          description: Is the restaurant open for collection now
        DeliveryTime:
          nullable: true
          type: number
          description: Estimated time for delivery
        IsOpenNowForPreorder:
          type: boolean
          description: True if you can place a pre-order with the restaurant
        Score:
          type: number
          description: The ranking score of the restaurant
        Name:
          type: string
          description: The name of the restaurant
        SmileyUrl:
          nullable: true
          type: object
          description: URL to the food safety results
        Url:
          type: string
          description: URL to the restaurant on the website
        OpeningTimeUtc:
          nullable: true
          format: date-time
          type: string
          description: The opening time of the restaurant
        MinimumDeliveryValue:
          type: number
          description: The minimum value for an order to qualify for delivery
        SmileyResult:
          nullable: true
          type: object
          description: The food safety result
        LogoUrl:
          type: string
          description: URL to the restaurant's logo
        BannerUrl:
          type: string
          description: URL template that can be used to access the restaurant's banner image. The `{transformations}` placeholder can be replaced with additional Cloudinary transformations (e.g. height, width). For more details see https://cloudinary.com/documentation/image_transformations
        UniqueName:
          type: string
          description: The Unique Name
        DriveDistance:
          type: number
          description: The distance to drive to the restaurant
        IsPremier:
          type: boolean
          description: Is the restaurant a premier partner
        ServiceableAreas:
          items:
            type: object
          type: array
        IsDelivery:
          type: boolean
          description: Is the restaurant offering delivery
        DriveInfoCalculated:
          type: boolean
          description: Has driving info been calculated
        IsNew:
          type: boolean
          description: True if the restaurant was recently added
        NewnessDate:
          $ref: '#/components/schemas/LocalDateTime'
        Postcode:
          type: string
          description: The Postcode
        OpeningTimeLocal:
          $ref: '#/components/schemas/LocalDateTime'
        Rating:
          description: The rating
          properties:
            Average:
              type: number
              description: The average rating score
            Count:
              type: number
              description: How many ratings have been placed
            StarRating:
              type: number
              description: The rating as a star score
          type: object
        IsHalal:
          type: boolean
          description: Is the restaurant halal
        DeliveryWorkingTimeMinutes:
          type: number
          description: Average time spent preparing orders
        BrandName:
          type: string
          description: the brand name
        SmileyElite:
          type: boolean
          description: Smiley elite
        Deals:
          items:
            properties:
              OfferType:
                type: string
                description: The offer type
              DiscountPercent:
                type: number
                description: The discount percent
              QualifyingPrice:
                type: number
                description: The Qualifying Price
              Description:
                type: string
                description: Description
            type: object
          type: array
        SecondDateRank:
          type: number
          description: How likely customers are to return to the restaurant
        Latitude:
          type: number
          description: Latitude
        DeliveryMenuId:
          type: number
          description: The menu id for delivery
        IsFreeDelivery:
          type: boolean
          description: Is delivery free
        SmileyDate:
          nullable: true
          type: object
          description: When was the food safety rating given
        IsCloseBy:
          type: boolean
          description: Is close by
        ScoreMetaData:
          description: Metadata about the score
          items:
            properties:
              Key:
                type: string
                description: The key
              Value:
                type: string
                description: The value
            type: object
          type: array
        DeliveryCost:
          type: number
          description: Cost of delivery
        DeliveryZipcode:
          nullable: true
          type: string
          description: The zip code for delivery
        DeliveryTimeMinutes:
          nullable: true
          type: number
          description: Delivery time in minutes
        Address:
          description: Address of the restaurant
          properties:
            City:
              type: string
              description: The City
            Postcode:
              type: string
              description: Postcode
            Longitude:
              type: number
              description: Longitude
            FirstLine:
              type: string
              description: Address first line
            Latitude:
              type: number
              description: Latitude
          type: object
        IsTestRestaurant:
          type: boolean
          description: True if the restaurant is for testing
        Longitude:
          type: number
          description: Longitude
        DefaultDisplayRank:
          type: number
          description: The default display rank
        ShowSmiley:
          type: boolean
          description: Should the client show the safety rating
        DeliveryStartTime:
          format: date-time
          type: string
          description: When the restaurant starts delivering
        DeliveryChargeBands:
          items:
            properties:
              DeliveryChargeBelowThreshold:
                type: number
                description: The threshold below which the charge applies
              BasketThresholdPrice:
                type: number
                description: The basket threshold
            type: object
          type: array
        Badges:
          items:
            type: object
          type: array
        IsOpenNow:
          type: boolean
          description: True if open right now
        Tags:
          items:
            type: string
          type: array
        Logo:
          items:
            properties:
              StandardResolutionURL:
                type: string
                description: URL to the logo in standard resolution
            type: object
          type: array
        City:
          type: string
          description: The City the restaurant is in
        LastUpdated:
          $ref: '#/components/schemas/LocalDateTime'
        IsTemporaryBoost:
          type: boolean
          description: True if the restaurant rank has been temporarily improved
        RatingStars:
          type: number
          description: The restaurant rating
      type: object
    RestaurantsSearchWebResponse:
      properties:
        Open:
          items:
            $ref: '#/components/schemas/RestaurantsSearchRestaurant'
          type: array
        Offline:
          items:
            $ref: '#/components/schemas/RestaurantsSearchRestaurant'
          type: array
        Closed:
          items:
            $ref: '#/components/schemas/RestaurantsSearchRestaurant'
          type: array
      type: object
    RestaurantsSourcingInformation:
      type: object
      description: Contains information about the origins of the product.
      additionalProperties: true
      properties:
        countryOfOrigin:
          type: string
          nullable: true
          description: The country of origin of the pre-packaged product.
        placeOfBirth:
          type: string
          nullable: true
          description: The place of birth for the animal, which can provide information about its origin and production process.
        placeOfRearing:
          type: string
          nullable: true
          description: The place of rearing for the animal, which can provide information about its living conditions and welfare standards.
        placeOfSlaughter:
          type: string
          nullable: true
          description: The place of slaughter for the animal, which can provide information about the processing standards and regulations followed.
        ecologicalOrigin:
          type: string
          nullable: true
          description: The ecological origin of the product, which can provide information about its environmental impact of its production.
        organicControlBody:
          type: string
          nullable: true
          description: The organic control body that certifies the product as organic, which can provide information about the standards and regulations followed in its production.
      example:
        countryOfOrigin: France
        placeOfBirth: Normandy
        placeOfRearing: Brittany
        placeOfSlaughter: Paris
        ecologicalOrigin: EU Agriculture
        organicControlBody: GB-ORG-05 (Organic Farmers and Growers CIC)
    RestaurantsUnauthorisedMarketingResponse:
      allOf:
        - $ref: '#/components/schemas/RestaurantsMarketingErrorResponse'
        - type: object
          description: 401 Unauthorised Returned
          additionalProperties: false
      example:
        message: Unauthorised
        errors:
          - errorCode: '401'
            description: Unauthorised
        faultId: 72d7036d-990a-4f84-9efa-ef5f40f6044b
    RestaurantsUnit:
      additionalProperties: true
      type: object
      description: The unit size definition.
      required:
        - quantity
        - type
      properties:
        quantity:
          type: integer
          minimum: 1
          description: The quantity of the unit
          nullable: false
        type:
          $ref: '#/components/schemas/RestaurantsUnitPriceUnitType'
          description: The type of the unit
          nullable: false
    RestaurantsUnitPrice:
      type: object
      description: The unit price and quantity.
      required:
        - unit
        - price
      properties:
        unit:
          $ref: '#/components/schemas/RestaurantsUnit'
          nullable: false
        price:
          format: int32
          type: number
          minimum: 0
          description: The price value per the unit specified. This should be specified using minor units (pence/cents) of the currency.
          nullable: false
    RestaurantsUnitPriceUnitType:
      description: The type of unit that a price can be measured by.
      type: string
      enum:
        - cl
        - cm
        - g
        - kg
        - l
        - m
        - ml
        - sheet
        - sqm
        - unit
    RestaurantsUpdatePaymentMethodRequest:
      additionalProperties: false
      description: Request object for updating restaurant's payment mode
      properties:
        updatedBy:
          nullable: false
          description: User who made the status update
          type: string
        cardOnlyPayment:
          nullable: false
          description: Determines if restaurant takes only card only payments
          type: boolean
      type: object
    RestaurantsUpdateRestaurantCreationStatus:
      type: object
      description: The request body to update the creation status of a restaurant.
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - activated
          description: The new creation status of the restaurant.
    RestaurantsWeight:
      required:
        - unit
        - value
      type: object
      description: Represents the weight of something.
      properties:
        unit:
          description: Unit of measurement (g or kg) for the weight of the product.
          $ref: '#/components/schemas/RestaurantsWeightUnitType'
          nullable: false
        value:
          description: The  weight of the product when drained of any liquid.
          type: number
          format: decimal
          minimum: 0
          nullable: false
      example:
        unit: g
        value: 100
    RestaurantsWeightUnitType:
      description: The unit type for a weight
      type: string
      enum:
        - g
        - kg
    RestaurantsMenuSyncV34XxValidationError:
      description: A HTTP 4xx error response
      properties:
        fault:
          required:
            - traceId
            - faultId
            - errors
          description: Details of the fault.
          properties:
            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
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            errors:
              items:
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue
                    type: string
                  code:
                    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
                  path:
                    description: JSON path to the element in the request body that failed validation.
                    type: string
                  name:
                    description: The value of the name property for the element in the request body that failed validation.
                    type: string
                  id:
                    description: The value of the id property for the element in the request body that failed validation.
                    type: string
                type: object
                required:
                  - description
                  - code
                  - path
                  - name
                  - id
              type: array
          type: object
      type: object
      example:
        traceId: 1d0ec97a-d0fa-4618-b18d-334f9c2f0da2
        faultId: b8f46a3a-ddd8-4456-b9ea-73571217a7fa
        errors:
          - description: 'Invalid category: eb8144fc-6126-43dc-84fb-f83fb416cc02 - no item with ID c613c13f-6c79-4e7a-a057-3788d371f38as exists on the menu'
            code: '217'
            path: Categories[6].ItemIds[0]
            name: Pizzas
            id: eb8144fc-6126-43dc-84fb-f83fb416cc02
    RestaurantsMenuSyncV3Availability:
      type: object
      required:
        - id
        - name
        - serviceTypes
        - times
      properties:
        name:
          description: The name for the availability.
          type: string
          minLength: 1
          nullable: false
        serviceTypes:
          items:
            enum:
              - collection
              - delivery
            type: string
          description: Values can be "collection" or "delivery" and are used to denote what types of service apply to the availability.
          type: array
          uniqueItems: true
          minItems: 1
          nullable: false
        description:
          description: The description of the availability.
          type: string
          nullable: true
        descriptionTranslations:
          description: Translations of the name of the availability.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        times:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV3Time'
          description: An array of times when the availability is active.  Times cannot overlap with the times of another availability on the same menu.
          type: array
          nullable: false
        id:
          description: A unique identifier at menu level for a given availability.
          type: string
          minLength: 1
          nullable: false
      example:
        name: Delivery Lunch
        serviceTypes:
          - delivery
        description: Menu items available for delivery during weekdays for lunch.
        times:
          - daysOfTheWeek:
              - monday
              - tuesday
              - wednesday
              - thursday
              - friday
              - saturday
              - sunday
            toDateTime: '14:30:00'
            fromDateTime: '11:30:00'
        id: 1-lunch-delivery
    RestaurantsMenuSyncV3Category:
      allOf:
        - $ref: '#/components/schemas/RestaurantsMenuSyncV3CategoryBase'
        - type: object
          required:
            - itemIds
          properties:
            itemIds:
              items:
                type: string
              description: The ids of the menu items that are within the category. The array must contain at least one menu item. Each id must be unique within the category and a menu item with that id must be included in the menu.
              type: array
              minItems: 1
              nullable: false
      example:
        name: Starters
        itemIds:
          - '65143901'
          - '65143902'
          - '65143903'
          - '65143904'
          - '65143905'
        description: ''
        id: '3'
    RestaurantsMenuSyncV3CategoryBase:
      type: object
      required:
        - id
        - name
      properties:
        name:
          description: The name of the category.
          type: string
          minLength: 1
          nullable: false
        nameTranslations:
          description: Translations of the name of the category.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        description:
          description: The description of the category.
          type: string
          minLength: 0
          nullable: true
        descriptionTranslations:
          description: Translations of the description of the category.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        id:
          description: A unique identifier at menu level for a given category.
          type: string
          minLength: 1
          nullable: false
      example:
        name: Starters
        nameTranslations:
          - language: it
            text: Antipasti
        description: ''
        id: '3'
    RestaurantsMenuSyncV3CategoryInformation:
      type: object
      required:
        - categories
      properties:
        categories:
          type: array
          minItems: 1
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV3CategoryWithChildren'
      example:
        categories:
          - id: beverages-001
            name: Beverages
            description: A selection of beverages.
            children:
              - soft-beverages-002
              - alcoholic-beverages-003
          - id: soft-beverages-002
            name: Soft Beverages
            description: Coke & Pepsi
            itemIds:
              - item-001
              - item-002
          - id: alcoholic-beverages-003
            name: Alcoholic Beverages
            description: Wine and beer
            itemIds:
              - item-003
              - item-004
    RestaurantsMenuSyncV3CategoryWithChildren:
      allOf:
        - $ref: '#/components/schemas/RestaurantsMenuSyncV3CategoryBase'
        - type: object
          properties:
            children:
              items:
                type: string
              description: The ids of the categories that are children of this category. Each id must be unique within the array and a category with that id must exist in the product catalogue. Empty when item ids is not empty.
              type: array
              minItems: 0
              nullable: true
            itemIds:
              items:
                type: string
              description: The ids of the menu items that are within the category. Each id must be unique within the category and a menu item with that id must be included in the menu. Empty when children is not empty.
              type: array
              minItems: 0
              nullable: true
      example:
        name: Starters
        children:
          - '65143901'
          - '65143902'
        description: ''
        id: '3'
    RestaurantsMenuSyncV3DealItemVariation:
      type: object
      required:
        - dealItemVariationId
        - minChoices
        - maxChoices
        - additionPrice
      properties:
        dealItemVariationId:
          description: A referenced variation id that can be a part of a deal group.
          type: string
          minLength: 1
          nullable: false
        minChoices:
          description: The minimum number of times this deal item variation can be chosen within a given deal group. If not provided, this defaults to 0.
          type: integer
          format: int32
          nullable: false
        maxChoices:
          description: The maximum number of times this deal item variation can be chosen within a given deal group.
          format: int32
          type: integer
          nullable: false
        additionPrice:
          description: Selecting this modifier will increase the base price of the variation by this amount in the minor unit of the currency.
          type: number
          format: int32
          nullable: false
        externalId:
          description: The partner identifier for a deal item variation. For example, this could be a price look-up / stock keeping unit code.
          type: string
          minLength: 0
          maxLength: 1000
          nullable: true
      example:
        dealItemVariationId: '8548153'
        minChoices: 0
        maxChoices: 1
        additionPrice: 50
    RestaurantsMenuSyncV3DepositType:
      description: The type of deposit price to indicate if it's inclusive or exclusive of the base price.
      type: string
      enum:
        - inclusive
        - exclusive
    RestaurantsMenuSyncV3Fee:
      type: object
      required:
        - type
        - amount
      description: Defines a fee associated with a variation/modifier.
      properties:
        type:
          description: The type of fee. Currently 'packaging' is the only supported value.
          type: string
          minLength: 1
          nullable: false
        amount:
          description: The fee amount in the minor unit of the currency.
          type: number
          format: int32
          minimum: 0
          exclusiveMinimum: true
          nullable: false
    RestaurantsMenuSyncV3Fees:
      type: object
      description: Defines the fees associated with a variation/modifier.
      properties:
        singleUsePlastic:
          $ref: '#/components/schemas/RestaurantsMenuSyncV3Fee'
          nullable: true
    RestaurantsMenuSyncV3Menu:
      allOf:
        - $ref: '#/components/schemas/RestaurantsMenuSyncV3MenuBase'
        - type: object
          required:
            - availabilities
            - items
          properties:
            categories:
              items:
                $ref: '#/components/schemas/RestaurantsMenuSyncV3Category'
              description: The categories used to organize the items in the product catalogue.
              type: array
              minItems: 0
              nullable: true
            categoryInformation:
              items:
                $ref: '#/components/schemas/RestaurantsMenuSyncV3CategoryInformation'
              description: The categories and sub-categories used to organize the items in the product catalogue.
              type: array
              minItems: 0
              nullable: true
            items:
              items:
                description: A menu item within the menu.
                $ref: '#/components/schemas/RestaurantsMenuSyncV3MenuItem'
              description: All of the menu items within the menu. There must be at least one item on the menu.
              type: array
              minItems: 1
              nullable: false
            availabilities:
              items:
                $ref: '#/components/schemas/RestaurantsMenuSyncV3Availability'
              description: A set of availabilities that can later be referenced by individual menu items.
              type: array
              minItems: 1
              nullable: false
            baseLanguage:
              description: The language that the menu has been provided in as a two-letter language code as defined by ISO 639-1.
              type: string
              minLength: 2
              maxLength: 2
              nullable: true
            quantityRestrictions:
              items:
                $ref: '#/components/schemas/RestaurantsQuantityRestriction'
              description: Specifies quantity restriction rules applicable to items in the menu.
              type: array
              nullable: true
      example:
        restaurantId: '100059'
        name: My Restaurant
        description: My excellent menu
        currency: GBP
        baseLanguage: en
        categories:
          - id: '3'
            name: Starters
            description: ''
            itemIds:
              - '65143901'
          - id: '4'
            name: Deals
            description: ''
            itemIds:
              - '23435309'
              - '33445308'
          - id: '5'
            name: Pizzas
            description: ''
            itemIds:
              - '8547130'
              - '8547140'
          - id: '6'
            name: Drinks
            description: ''
            itemIds:
              - '6537130'
              - '6537140'
        categoryInformation:
          categories:
            - id: beverages-001
              name: Beverages
              description: A selection of beverages.
              children:
                - soft-beverages-002
                - alcoholic-beverages-003
            - id: soft-beverages-002
              name: Soft Beverages
              description: Coke & Pepsi
              itemIds:
                - item-001
                - item-002
            - id: alcoholic-beverages-003
              name: Alcoholic Beverages
              description: Wine and beer
              itemIds:
                - item-003
                - item-004
        items:
          - id: '23435309'
            type: deal
            name: Half-and-half Pizza
            description: Choose each half.
            labels: []
            variations:
              - id: '23435309'
                name: ''
                type: noVariation
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                basePrice: 3099
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 100
                      unit: kcal
                    - min: 418
                      max: 418
                      unit: kJ
                  nutritionTable:
                    - description: Per 100g
                      referenceQuantity:
                        unit: g
                        quantity:
                          value: 100
                      nutritionProperties:
                        - name: protein
                          unit: g
                          quantity:
                            value: 0.1
                            lessThan: true
                        - name: fat
                          unit: g
                          percentRI: 50
                          quantity:
                            value: 15
                            lessThan: false
                numberOfServings:
                  min: 1
                  max: 1
                modifierGroupsIds: []
                dealGroupsIds:
                  - 23435309-1
                  - 23435309-2
            modifierGroups: []
            dealGroups:
              - id: 23435309-1
                name: Choose your base
                numberOfChoices: 1
                dealItemVariations:
                  - dealItemVariationId: '1577341'
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
              - id: 23435309-2
                name: Choose your halves
                numberOfChoices: 2
                dealItemVariations:
                  - dealItemVariationId: '8547121'
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                  - dealItemVariationId: '3547157'
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                  - dealItemVariationId: '8548153'
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 50
          - id: '33445308'
            type: deal
            name: 14 inch Pizza & A Drink For 1
            description: 'Choose a 14 inch Pizza (including half-and-half) and any drink. Note: Alcohol is only available for collection.'
            labels: []
            variations:
              - id: '33445308'
                name: ''
                type: noVariation
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                basePrice: 3099
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 200
                      unit: kcal
                    - min: 418
                      max: 836
                      unit: kJ
                numberOfServings:
                  min: 1
                  max: 1
                modifierGroupsIds: []
                dealGroupsIds:
                  - 33445308-1
                  - 33445308-2
            modifierGroups: []
            dealGroups:
              - id: 33445308-1
                name: Choose your pizza
                numberOfChoices: 1
                dealItemVariations:
                  - dealItemVariationId: '9750011'
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                  - dealItemVariationId: '9750021'
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                  - dealItemVariationId: '23435309'
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
              - id: 33445308-2
                name: Choose your drink
                numberOfChoices: 1
                dealItemVariations:
                  - dealItemVariationId: '6537130'
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 13
                  - dealItemVariationId: '6537140'
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                  - dealItemVariationId: '7739164'
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
          - id: '65143901'
            type: menuItem
            name: Flat Bread and Dips (Pick any 2 Dips)
            requireOtherProducts: false
            description: ''
            labels: []
            variations:
              - id: '65143901'
                name: ''
                type: noVariation
                basePrice: 650
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 100
                      unit: kcal
                    - min: 418
                      max: 418
                      unit: kJ
                numberOfServings:
                  min: 1
                  max: 1
                kitchenNumber: '90'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds:
                  - 65143901-req-1
                  - 65143901-req-2
                dealGroupsIds: []
            modifierGroups:
              - id: 65143901-req-1
                name: Choose your bread
                minChoices: 1
                maxChoices: 1
                modifiers:
                  - id: '834502'
                    name: Pitta Bread
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                    nutrition:
                      energyContent:
                        - min: 100
                          max: 100
                          unit: kcal
                        - min: 418
                          max: 418
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '835700'
                    name: Sourdough
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                    nutrition:
                      energyContent:
                        - min: 100
                          max: 100
                          unit: kcal
                        - min: 418
                          max: 418
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '835601'
                    name: Wholemeal
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 50
                    nutrition:
                      energyContent:
                        - min: 50
                          max: 50
                          unit: kcal
                        - min: 209
                          max: 209
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
              - id: 65143901-req-2
                name: Choose your dips
                minChoices: 2
                maxChoices: 2
                modifiers:
                  - id: '835340'
                    name: Tzatziki
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 0
                    nutrition:
                      energyContent:
                        - min: 10
                          max: 10
                          unit: kcal
                        - min: 42
                          max: 42
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '835341'
                    name: Taramasalata
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 0
                    nutrition:
                      energyContent:
                        - min: 20
                          max: 20
                          unit: kcal
                        - min: 84
                          max: 84
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '825344'
                    name: Hummus
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 0
                    nutrition:
                      energyContent:
                        - min: 30
                          max: 30
                          unit: kcal
                        - min: 126
                          max: 126
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '825346'
                    name: Onion
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 0
                    nutrition:
                      energyContent:
                        - min: 0
                          max: 0
                          unit: kcal
                        - min: 0
                          max: 0
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
            dealGroups: []
          - id: '1577341'
            type: menuItem
            name: Base
            requireOtherProducts: true
            description: ''
            labels: []
            variations:
              - id: '1577341'
                name: ''
                type: noVariation
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                basePrice: 200
                dealOnly: true
                modifierGroupsIds:
                  - 1577341-req-1
                dealGroupsIds: []
            modifierGroups:
              - id: 1577341-req-1
                name: Crust
                minChoices: 1
                maxChoices: 1
                modifiers:
                  - id: '854500'
                    name: Classic Crust
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                    nutrition:
                      energyContent:
                        - min: 0
                          max: 0
                          unit: kcal
                        - min: 0
                          max: 0
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '854600'
                    name: Stuffed Crust
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 200
                    nutrition:
                      energyContent:
                        - min: 100
                          max: 100
                          unit: kcal
                        - min: 418
                          max: 418
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
            dealGroups: []
          - id: '8547130'
            type: menuItem
            name: Margherita
            requireOtherProducts: true
            description: ''
            labels: []
            variations:
              - id: '8547121'
                name: Half
                type: variation
                basePrice: 500
                dealOnly: true
                kitchenNumber: '100'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds:
                  - 8547130-opt-1
                dealGroupsIds: []
              - id: '8547130'
                name: 12 inch
                type: variation
                basePrice: 1000
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 100
                      unit: kcal
                    - min: 418
                      max: 418
                      unit: kJ
                numberOfServings:
                  min: 1
                  max: 1
                kitchenNumber: '100'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds:
                  - 8547130-req-1
                  - 8547130-opt-1
                dealGroupsIds: []
              - id: '8543123'
                name: 14 inch
                type: variation
                basePrice: 1200
                dealOnly: true
                kitchenNumber: '200'
                availabilityIds:
                  - 1-lunch-delivery-weekday
                  - 2-lunch-collection-weekday
                  - 3-dinner-delivery-weekday
                  - 4-dinner-collection-weekday
                modifierGroupsIds:
                  - 8547130-req-1
                  - 8547130-opt-1
                dealGroupsIds: []
            modifierGroups:
              - id: 8547130-req-1
                name: Choose your crust
                minChoices: 1
                maxChoices: 1
                modifiers:
                  - id: '854500'
                    name: Classic Crust
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                    nutrition:
                      energyContent:
                        - min: 0
                          max: 0
                          unit: kcal
                        - min: 0
                          max: 0
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '854600'
                    name: Stuffed Crust
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 200
                    nutrition:
                      energyContent:
                        - min: 100
                          max: 100
                          unit: kcal
                        - min: 418
                          max: 418
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
              - id: 8547130-opt-1
                name: Any extra toppings?
                minChoices: 0
                maxChoices: 10
                modifiers:
                  - id: '1000'
                    name: Mozzarella Cheese
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 50
                  - id: '1001'
                    name: Ham
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 50
                  - id: '1002'
                    name: Red Onion
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 50
                  - id: '1003'
                    name: Pepperoni
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 50
                  - id: '1004'
                    name: Olives
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 50
            dealGroups: []
          - id: '8547140'
            type: menuItem
            name: Double Pepperoni
            requireOtherProducts: false
            description: ''
            labels: []
            variations:
              - id: '8548153'
                name: Half
                type: variation
                basePrice: 500
                dealOnly: true
                kitchenNumber: '100'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds:
                  - 8547140-opt-1
                dealGroupsIds: []
              - id: '8547140'
                name: 12 inch
                type: variation
                basePrice: 1000
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 100
                      unit: kcal
                    - min: 418
                      max: 418
                      unit: kJ
                numberOfServings:
                  min: 1
                  max: 1
                kitchenNumber: '100'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds:
                  - 8547140-req-1
                  - 8547140-opt-1
                dealGroupsIds: []
              - id: '9750021'
                name: 14 inch
                type: variation
                basePrice: 1200
                dealOnly: true
                kitchenNumber: '200'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds:
                  - 8547140-req-1
                  - 8547140-opt-1
                dealGroupsIds: []
              - id: '9755052'
                name: 18 inch
                type: variation
                basePrice: 1200
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 100
                      unit: kcal
                    - min: 418
                      max: 418
                      unit: kJ
                numberOfServings:
                  min: 1
                  max: 1
                kitchenNumber: '200'
                availabilityIds:
                  - 2-lunch-collection
                  - 4-dinner-collection
                modifierGroupsIds:
                  - 9755052-req-1
                  - 9755052-opt-1
                dealGroupsIds: []
            modifierGroups:
              - id: 8547140-req-1
                name: Choose your crust
                minChoices: 1
                maxChoices: 1
                modifiers:
                  - id: '854500'
                    name: Classic Crust
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                    nutrition:
                      energyContent:
                        - min: 0
                          max: 0
                          unit: kcal
                        - min: 0
                          max: 0
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '854600'
                    name: Stuffed Crust
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 200
                    nutrition:
                      energyContent:
                        - min: 100
                          max: 100
                          unit: kcal
                        - min: 418
                          max: 418
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
              - id: 8547140-opt-1
                name: Any extra toppings?
                minChoices: 0
                maxChoices: 10
                modifiers:
                  - id: '1000'
                    name: Mozzarella Cheese
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 50
                  - id: '1001'
                    name: Ham
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 50
                  - id: '1002'
                    name: Red Onion
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 50
                  - id: '1003'
                    name: Pepperoni
                    minChoices: 2
                    maxChoices: 4
                    additionPrice: 50
                  - id: '1004'
                    name: Olives
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 50
              - id: 9755052-req-1
                name: Choose your crust
                minChoices: 1
                maxChoices: 1
                modifiers:
                  - id: '854500'
                    name: Classic Crust
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 0
                  - id: '854600'
                    name: Stuffed Crust
                    minChoices: 0
                    maxChoices: 1
                    additionPrice: 250
              - id: 9755052-opt-1
                name: Any extra toppings?
                minChoices: 0
                maxChoices: 10
                modifiers:
                  - id: '1000'
                    name: Mozzarella Cheese
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 70
                  - id: '1001'
                    name: Ham
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 70
                  - id: '1002'
                    name: Red Onion
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 70
                  - id: '1003'
                    name: Pepperoni
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 70
                  - id: '1004'
                    name: Olives
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 70
            dealGroups: []
          - id: '3547157'
            type: menuItem
            name: Vegetarian
            requireOtherProducts: false
            description: ''
            labels:
              - vegetarian
            variations:
              - id: '3547157'
                name: ''
                type: noVariation
                basePrice: 500
                dealOnly: true
                kitchenNumber: '121'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds:
                  - 8547140-opt-1
                dealGroupsIds: []
            modifierGroups:
              - id: 8547140-opt-1
                name: Any extra toppings?
                minChoices: 0
                maxChoices: 10
                modifiers:
                  - id: '1000'
                    name: Mozzarella Cheese
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 50
                    nutrition:
                      energyContent:
                        - min: 100
                          max: 100
                          unit: kcal
                        - min: 418
                          max: 418
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '1001'
                    name: Ham
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 50
                    nutrition:
                      energyContent:
                        - min: 10
                          max: 10
                          unit: kcal
                        - min: 42
                          max: 42
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '1002'
                    name: Red Onion
                    minChoices: 1
                    maxChoices: 2
                    additionPrice: 50
                    nutrition:
                      energyContent:
                        - min: 0
                          max: 0
                          unit: kcal
                        - min: 0
                          max: 0
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '1003'
                    name: Pepperoni
                    minChoices: 0
                    maxChoices: 2
                    additionPrice: 50
                    nutrition:
                      energyContent:
                        - min: 10
                          max: 10
                          unit: kcal
                        - min: 42
                          max: 42
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
                  - id: '1004'
                    name: Olives
                    minChoices: 1
                    maxChoices: 2
                    additionPrice: 50
                    nutrition:
                      energyContent:
                        - min: 10
                          max: 10
                          unit: kcal
                        - min: 42
                          max: 42
                          unit: kJ
                    numberOfServings:
                      min: 1
                      max: 1
            dealGroups: []
          - id: '6537130'
            type: menuItem
            name: Coca-Cola
            requireOtherProducts: true
            description: ''
            labels: []
            variations:
              - id: '6537130'
                name: 0.33L
                type: variation
                basePrice: 100
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 100
                      unit: kcal
                    - min: 418
                      max: 418
                      unit: kJ
                numberOfServings:
                  min: 1
                  max: 1
                kitchenNumber: '300'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds: []
                dealGroupsIds: []
              - id: '9750011'
                name: 1.5L
                type: variation
                basePrice: 300
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 100
                      unit: kcal
                    - min: 418
                      max: 418
                      unit: kJ
                numberOfServings:
                  min: 1
                  max: 1
                kitchenNumber: '400'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds: []
                dealGroupsIds: []
            modifierGroups: []
            dealGroups: []
          - id: '6537140'
            type: menuItem
            name: Diet Coke
            requireOtherProducts: true
            description: ''
            labels: []
            variations:
              - id: '6537140'
                name: 0.33L
                type: variation
                basePrice: 100
                pricing:
                  depositAmount: 5
                  unitPrice:
                    price: 30
                    unit:
                      quantity: 100
                      type: ml
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 100
                      unit: kcal
                    - min: 418
                      max: 418
                      unit: kJ
                numberOfServings:
                  min: 1
                  max: 1
                kitchenNumber: '300'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds: []
                dealGroupsIds: []
              - id: '9750312'
                name: 1.5L
                type: variation
                basePrice: 300
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 100
                      unit: kcal
                    - min: 418
                      max: 418
                      unit: kJ
                numberOfServings:
                  min: 1
                  max: 1
                kitchenNumber: '400'
                availabilityIds:
                  - 1-lunch-delivery
                  - 2-lunch-collection
                  - 3-dinner-delivery
                  - 4-dinner-collection
                modifierGroupsIds: []
                dealGroupsIds: []
            modifierGroups: []
            dealGroups: []
          - id: '7739164'
            type: menuItem
            name: Bottle of Lager
            requireOtherProducts: true
            description: ''
            labels: []
            variations:
              - id: '7739164'
                name: ''
                type: noVariation
                basePrice: 300
                dealOnly: false
                nutrition:
                  energyContent:
                    - min: 100
                      max: 100
                      unit: kcal
                    - min: 418
                      max: 418
                      unit: kJ
                numberOfServings:
                  min: 1
                  max: 1
                kitchenNumber: '700'
                availabilityIds:
                  - 2-lunch-collection
                  - 4-dinner-collection
                modifierGroupsIds: []
                dealGroupsIds: []
                productTags:
                  - alcohol
            modifierGroups: []
            dealGroups: []
          - id: '6574488'
            type: menuItem
            name: Ibuprofen - 16 500mg tablets
            requireOtherProducts: false
            description: ''
            labels: []
            variations:
              - id: '6574488'
                name: ''
                gtin: '012345675214'
                type: noVariation
                basePrice: 59
                dealOnly: false
                availabilityIds:
                  - 1-lunch-delivery
                  - 3-dinner-delivery
                modifierGroupsIds: []
                dealGroupsIds: []
            modifierGroups: []
            dealGroups: []
            gtin: '012345675214'
        quantityRestrictions:
          - id: 9dc6f8a1-f218-4ea0-86a8-5e123c97bd71
            name: Drinks
            maximum: 5
            restrictedVariations:
              - id: '6537140'
                contributingQuantity: 1
              - id: '6537130'
                contributingQuantity: 2
          - id: 990bec3f-2431-45fc-be40-4e3c480f545e
            name: PainKillers
            maximum: 3
            restrictedVariations:
              - id: '7739164'
                contributingQuantity: 1
              - id: '6574488'
                contributingQuantity: 2
    RestaurantsMenuSyncV3MenuBase:
      type: object
      required:
        - restaurantId
        - name
      properties:
        name:
          description: The name of the restaurant.
          type: string
          minLength: 1
          nullable: false
        currency:
          description: The currency of the items on the menu in ISO 4217 format, i.e. GBP, EUR or AUD
          type: string
          nullable: true
        description:
          description: A top level description for the menu.
          type: string
          nullable: true
        restaurantId:
          description: A unique identifier at tenant level for a given restaurant.
          type: string
          minLength: 1
          nullable: false
      example:
        name: My Restaurant
        currency: GBP
        description: My excellent menu
        restaurantId: '100059'
    RestaurantsMenuSyncV3MenuDealGroup:
      allOf:
        - $ref: '#/components/schemas/RestaurantsMenuSyncV3MenuDealGroupBase'
        - type: object
          required:
            - id
            - dealItemVariations
            - numberOfChoices
          properties:
            dealItemVariations:
              items:
                $ref: '#/components/schemas/RestaurantsMenuSyncV3DealItemVariation'
              description: The ids of the variations that can be selected in order to satisfy this deal group. The variations included must exist on the menu and the array cannot contain duplicate ids.
              type: array
              minItems: 1
              nullable: false
            name:
              description: The name of the deal group.
              type: string
              nullable: true
            nameTranslations:
              description: Translations of the name of the deal group.
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/RestaurantsMenuTranslation'
              nullable: true
            numberOfChoices:
              description: How many deal item variations must be selected to satisfy this deal group.
              type: integer
              format: int32
              minimum: 1
              nullable: false
            id:
              description: A unique identifier at menu level for a deal group.
              type: string
              minLength: 1
              nullable: false
      example:
        dealItemVariations:
          - maxChoices: 1
            dealItemVariationId: '8547121'
            minChoices: 0
            additionPrice: 0
          - maxChoices: 1
            dealItemVariationId: '3547157'
            minChoices: 0
            additionPrice: 0
          - maxChoices: 1
            dealItemVariationId: '8548153'
            minChoices: 0
            additionPrice: 50
        name: Choose your pizzas
        numberOfChoices: 2
        id: 23435309-2
    RestaurantsMenuSyncV3MenuDealGroupBase:
      type: object
      properties:
        name:
          description: The name of the deal group.
          type: string
          nullable: true
        numberOfChoices:
          description: How many deal item variations must be selected to satisfy this deal group.
          type: integer
          format: int32
          minimum: 1
          nullable: false
        id:
          description: A unique identifier at menu level for a deal group.
          type: string
          minLength: 1
          nullable: false
      example:
        name: Choose your pizzas
        numberOfChoices: 2
        id: 23435309-2
    RestaurantsMenuSyncV3MenuItem:
      allOf:
        - $ref: '#/components/schemas/RestaurantsMenuSyncV3MenuItemBase'
        - type: object
          required:
            - variations
          properties:
            imageUrl:
              description: A menu item image URL.
              type: string
              nullable: true
            dealGroups:
              items:
                description: A deal group for this menu item.
                $ref: '#/components/schemas/RestaurantsMenuSyncV3MenuDealGroup'
              description: A set of deal groups for this menu item.
              type: array
              nullable: true
            modifierGroups:
              items:
                description: A modifier group for this menu item.
                $ref: '#/components/schemas/RestaurantsMenuSyncV3MenuModifierGroup'
              description: A set of modifier groups for this menu item.
              type: array
              nullable: true
            variations:
              items:
                description: A variation of this menu item.
                $ref: '#/components/schemas/RestaurantsMenuSyncV3Variation'
              description: A set of variations of this menu item.
              type: array
              minItems: 1
              nullable: false
      example:
        name: Flat Bread and Dips (Pick any 2 Dips)
        imageUrl: http://cdn.images/flat_bread_dips.png
        dealGroups: []
        type: menuItem
        description: ''
        labels: []
        requireOtherProducts: false
        id: '65143901'
        modifierGroups:
          - name: Bread
            maxChoices: 1
            modifiers:
              - name: Pitta Bread
                additionPrice: 0
                maxChoices: 1
                id: '834502'
                minChoices: 0
              - name: Sourdough
                additionPrice: 0
                maxChoices: 1
                id: '835700'
                minChoices: 0
              - name: Wholemeal
                additionPrice: 50
                maxChoices: 1
                id: '835601'
                minChoices: 0
            id: 65143901-req-1
            minChoices: 1
          - name: Dips
            maxChoices: 2
            modifiers:
              - name: Tzatziki
                additionPrice: 0
                maxChoices: 2
                id: '835340'
                minChoices: 0
              - name: Taramasalata
                additionPrice: 0
                maxChoices: 2
                id: '835341'
                minChoices: 0
              - name: Hummus
                additionPrice: 0
                maxChoices: 2
                id: '825344'
                minChoices: 0
              - name: Onion
                additionPrice: 0
                maxChoices: 2
                id: '825346'
                minChoices: 0
            id: 65143901-req-2
            minChoices: 2
        variations:
          - name: ''
            dealOnly: false
            kitchenNumber: '90'
            type: noVariation
            modifierGroupsIds:
              - 65143901-req-1
              - 65143901-req-2
            id: '65143901'
            basePrice: 650
            dealGroupsIds: []
            availabilityIds:
              - 1-lunch-delivery
              - 2-lunch-collection
              - 3-dinner-delivery
              - 4-dinner-collection
    RestaurantsMenuSyncV3MenuItemBase:
      type: object
      required:
        - id
        - name
        - type
      properties:
        name:
          description: The name of the menu item.
          type: string
          minLength: 1
          nullable: false
        nameTranslations:
          description: Translations of the name of the menu item.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        type:
          description: Indicates whether this is a regular meal item or a deal item.
          enum:
            - menuItem
            - deal
          type: string
          nullable: false
        description:
          description: The description of the menu item.
          type: string
          nullable: true
        descriptionTranslations:
          description: Translations of the description of the menu item.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        labels:
          description: 'Used to toggle front end icons for the available labels. Valid values are: ''alcohol'', ''hot'', ''nuts'', ''vegan'', ''vegetarian'''
          type: array
          items:
            type: string
          uniqueItems: true
          minItems: 0
          maxItems: 5
          nullable: true
        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
          nullable: true
        id:
          description: A unique identifier at menu level for a menu item.
          type: string
          minLength: 1
          nullable: false
        externalId:
          description: The partner identifier for an item. For example, this could be a price look-up / stock keeping unit code.
          type: string
          minLength: 0
          maxLength: 1000
          nullable: true
      example:
        name: Flat Bread and Dips (Pick any 2 Dips)
        nameTranslations:
          - language: it
            text: Focaccia e salse (scegli 2 salse qualsiasi)
        type: menuItem
        description: ''
        labels: []
        requireOtherProducts: false
        id: '65143901'
    RestaurantsMenuSyncV3MenuModifier:
      type: object
      required:
        - id
        - name
        - minChoices
        - maxChoices
        - additionPrice
      properties:
        name:
          description: The name of the modifier.
          type: string
          minLength: 1
          nullable: false
        legalName:
          description: The descriptive name of the modifier required by law. This describes the true nature of the product.
          type: string
          minLength: 1
          nullable: true
        nameTranslations:
          description: Translations of the name of the variation.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        additionPrice:
          description: Selecting this modifier will increase the base price of the variation by this amount in the minor unit of the currency.  If the value is negative, the base price will decrease. If this is omitted, the addition price will default to 0.
          type: number
          format: int32
          nullable: false
        id:
          description: A unique identifier relative to the menu for a modifier.
          type: string
          minLength: 1
          nullable: false
        externalId:
          description: The partner identifier for a modifier. For example, this could be a price look-up / stock keeping unit code.
          type: string
          maxLength: 1000
          nullable: true
        minChoices:
          description: The minimum number of times this modifier can be chosen within a given modifier group.
          type: integer
          format: int32
          minimum: 0
          nullable: false
        maxChoices:
          description: The maximum number of times this modifier can be chosen within a given modifier group.
          type: integer
          format: int32
          minimum: 1
          nullable: false
        nutrition:
          description: Nutritional information for this modifier.
          $ref: '#/components/schemas/RestaurantsNutrition'
          nullable: true
        numberOfServings:
          description: The number of servings, expressed as a range.
          $ref: '#/components/schemas/RestaurantsNumberOfServings'
          nullable: true
        pricing:
          $ref: '#/components/schemas/RestaurantsMenuSyncV3Pricing'
          description: The pricing information for an item.
          nullable: true
        additionalInformation:
          type: string
          description: This field will be deprecated in the future and is to be used for migrating and compatibility with L-TA menus only.
          nullable: true
        additionalInformationTranslations:
          description: Translations of the additional information of the modifier.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        physicalProperties:
          $ref: '#/components/schemas/RestaurantsMenuSyncV3PhysicalProperties'
          nullable: true
        gtin:
          $ref: '#/components/schemas/RestaurantsGtin'
          nullable: true
        productTypes:
          $ref: '#/components/schemas/RestaurantsProductTypes'
          nullable: true
        taxCategory:
          type: string
          description: The classification used to determine the tax rate applied to the modifier. Only applicable to CH tenants. Supported values are 'zeroRate', 'reducedRate', and 'standardRate'.
          nullable: true
        manufacturerInformation:
          description: Contains the manufacturer information for the modifier.
          $ref: '#/components/schemas/RestaurantsManufacturerInformation'
          nullable: true
        safetyInformation:
          description: Contains the safety information for the modifier.
          $ref: '#/components/schemas/RestaurantsSafetyInformation'
          nullable: true
        sourcingInformation:
          description: Contains the sourcing information for the modifier.
          $ref: '#/components/schemas/RestaurantsSourcingInformation'
          nullable: true
        importer:
          description: Contains the importer information for the modifier.
          $ref: '#/components/schemas/RestaurantsContactInformation'
          nullable: true
        productUsageInformation:
          description: Contains the product usage information for the modifier.
          $ref: '#/components/schemas/RestaurantsProductUsageInformation'
          nullable: true
      example:
        name: Stuffed Crust
        nameTranslations:
          - language: it
            text: Crosta farcita
        additionPrice: 200
        maxChoices: 1
        id: '854600'
        externalId: '11253'
        minChoices: 0
        nutrition:
          energyContent:
            - min: 100
              max: 200
              unit: kcal
            - min: 418
              max: 836
              unit: kJ
          nutritionTable:
            - description: Per 100g
              referenceQuantity:
                unit: g
                quantity:
                  value: 100
              nutritionProperties:
                - name: protein
                  unit: g
                  quantity:
                    value: 0.1
                    lessThan: true
                - name: fat
                  unit: g
                  percentRI: 50
                  quantity:
                    value: 15
                    lessThan: false
        numberOfServings:
          min: 1
          max: 1
        gtin: '012345678905'
    RestaurantsMenuSyncV3MenuModifierGroup:
      type: object
      required:
        - id
        - modifiers
        - minChoices
        - maxChoices
      properties:
        name:
          description: A name for the modifier group, usually phrased as a question.
          type: string
          nullable: true
          example: Would you like any extras?
        nameTranslations:
          description: Translations of the name of the modifier group.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        maxChoices:
          description: The maximum number of modifiers that must be selected to satisfy this modifier group.
          type: integer
          format: int32
          minimum: 1
        modifiers:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV3MenuModifier'
          description: The modifiers that can be selected to satisfy this modifier group.
          type: array
          minItems: 1
          nullable: false
        id:
          description: A unique identifier relative to the menu for a modifier group.
          type: string
          minLength: 1
          nullable: false
        minChoices:
          description: The minimum number of modifiers that must be selected to satisfy this modifier group.
          type: integer
          format: int32
          minimum: 0
          nullable: false
      example:
        name: Choose your crust
        maxChoices: 1
        modifiers:
          - name: Classic Crust
            additionPrice: 0
            maxChoices: 1
            id: '854500'
            minChoices: 0
          - name: Stuffed Crust
            additionPrice: 200
            maxChoices: 1
            id: '854600'
            minChoices: 0
        id: 8547130-req-1
        minChoices: 1
    RestaurantsMenuSyncV3NetVolume:
      type: object
      additionalProperties: true
      description: The net volume of an item (not including packaging), or the net volume of an individual product within a multi-pack.
      required:
        - unit
        - value
      properties:
        unit:
          $ref: '#/components/schemas/RestaurantsMenuSyncV3VolumeUnitType'
          description: Unit of measurement for the volume of the item.
          nullable: false
          example: ml
        value:
          type: number
          format: decimal
          minimum: 0
          description: The value of the net volume
          nullable: false
          example: 330
        quantity:
          type: integer
          description: Optional field indicating the item consists of multiple products (e.g. a multi-pack of soft drinks). If this is set, the value should relate to an individual product within the multi-pack (e.g. 330ml for a can of soft drink).
          minimum: 0
          nullable: true
          example: 6
      example:
        unit: ml
        value: 330
        quantity: 6
    RestaurantsMenuSyncV3NetWeight:
      type: object
      additionalProperties: true
      description: The net weight of an item (not including packaging), or the net weight of an individual product within a multi-pack.
      required:
        - unit
        - value
      properties:
        unit:
          $ref: '#/components/schemas/RestaurantsWeightUnitType'
          description: Unit of measurement for the weight of the item.
          nullable: false
          example: g
        value:
          description: The value of the net weight
          type: number
          format: decimal
          minimum: 0
          nullable: false
          example: 100
        quantity:
          type: integer
          description: Optional field indicating the item consists of multiple products (e.g. a multi-pack of chocolate). If this is set, the value should relate to an individual product within the multi-pack (e.g. 35g for a chocolate bar).
          minimum: 0
          nullable: true
          example: 6
      example:
        unit: g
        value: 100
        quantity: 6
    RestaurantsMenuSyncV3PhysicalProperties:
      type: object
      description: The physical properties of an item.
      properties:
        grossWeight:
          description: The gross weight information of an item.
          $ref: '#/components/schemas/RestaurantsWeight'
          nullable: true
        drainedWeight:
          description: The drained weight information for a product.
          $ref: '#/components/schemas/RestaurantsWeight'
          nullable: true
        netWeight:
          description: The net weight information of an item. (This property is deprecated and replaced with netQuantity)
          $ref: '#/components/schemas/RestaurantsMenuSyncV3NetWeight'
          nullable: true
          deprecated: true
        netVolume:
          description: The net volume information of an item. (This property is deprecated and replaced with netQuantity)
          $ref: '#/components/schemas/RestaurantsMenuSyncV3NetVolume'
          nullable: true
          deprecated: true
        netQuantity:
          description: The net quantity information of an item. (Replaces and consolidates netWeight and netVolume)
          $ref: '#/components/schemas/RestaurantsNetQuantity'
          nullable: true
      example:
        unit: ml
        value: 330
        quantity: 6
        summary: Represents a product with a net quantity of 330ml per item in a multipack of 6 items, e.g. 6 pack of coca-cola
    RestaurantsMenuSyncV3Pricing:
      type: object
      description: The pricing information of an item.
      properties:
        depositAmount:
          format: int32
          type: number
          minimum: 0
          description: The amount that can be received by a customer for depositing the item's packaging. This should be specified using minor units (pence/cents) of the currency.
          nullable: true
        depositType:
          $ref: '#/components/schemas/RestaurantsMenuSyncV3DepositType'
          nullable: true
        fees:
          $ref: '#/components/schemas/RestaurantsMenuSyncV3Fees'
          nullable: true
        unitPrice:
          $ref: '#/components/schemas/RestaurantsUnitPrice'
          nullable: true
    RestaurantsMenuSyncV3Time:
      type: object
      required:
        - daysOfTheWeek
        - fromDateTime
        - toDateTime
      properties:
        daysOfTheWeek:
          items:
            enum:
              - monday
              - tuesday
              - wednesday
              - thursday
              - friday
              - saturday
              - sunday
            type: string
          description: The days of the week. The array must contain at least one day.
          type: array
          uniqueItems: true
          minItems: 1
          nullable: false
        toDateTime:
          description: Time of day the availability begins, in local time, format is ISO 8601 hh:mm:ss
          type: string
          minLength: 8
          maxLength: 8
          nullable: false
        fromDateTime:
          description: Time of day the availability begins, in local time, format is ISO 8601 hh:mm:ss
          type: string
          minLength: 8
          maxLength: 8
          nullable: false
      example:
        daysOfTheWeek:
          - monday
          - tuesday
          - wednesday
          - thursday
          - friday
          - saturday
          - sunday
        fromDateTime: '11:30:00'
        toDateTime: '14:30:00'
    RestaurantsMenuSyncV3Variation:
      type: object
      required:
        - id
        - name
        - type
        - basePrice
        - availabilityIds
      properties:
        name:
          description: The name of the variation.  If the variation type is `noVariation`, this should be set to an empty string, otherwise the name should be at least 1 character.
          type: string
          minLength: 0
          nullable: false
        legalName:
          description: The descriptive name of the variation required by law. This describes the true nature of the product.
          type: string
          minLength: 1
          nullable: true
        nameTranslations:
          description: Translations of the name of the variation.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        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
          nullable: true
        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
          nullable: true
        type:
          description: Denotes the type of variation, `variation` if there are multiple variations of the parent `menuitem`, `noVariation` if there's only one
          enum:
            - noVariation
            - variation
          type: string
          nullable: false
        modifierGroupsIds:
          items:
            type: string
          description: Maps to the modifier groups that are applicable to this variation.
          type: array
          nullable: true
        id:
          description: A unique identifier at menu level for a variation, can be shared with parent menu item id.
          type: string
          minLength: 1
          nullable: false
        externalId:
          description: The partner identifier for a variation. For example, this could be a price look-up / stock keeping unit code.
          type: string
          minLength: 0
          maxLength: 1000
          nullable: true
        basePrice:
          description: The base price of this variation in the minor unit of the currency.
          type: number
          format: int32
          minimum: 0
          nullable: false
        nutrition:
          $ref: '#/components/schemas/RestaurantsNutrition'
          nullable: true
        numberOfServings:
          $ref: '#/components/schemas/RestaurantsNumberOfServings'
          nullable: true
        dealGroupsIds:
          items:
            type: string
          description: Maps to the deal groups that are applicable to this variation.
          type: array
          nullable: true
        availabilityIds:
          items:
            type: string
          description: Maps to an availability item, availabilities determines which days and times the item can be sold.
          type: array
          minItems: 1
          nullable: false
        physicalProperties:
          $ref: '#/components/schemas/RestaurantsMenuSyncV3PhysicalProperties'
          description: The physical properties of an item.
          nullable: true
        pricing:
          $ref: '#/components/schemas/RestaurantsMenuSyncV3Pricing'
          description: The pricing information for an item.
          nullable: true
        additionalInformation:
          type: string
          description: This field will be deprecated in the future and is to be used for migrating and compatibility with L-TA menus only.
          nullable: true
        additionalInformationTranslations:
          description: Translations of the additional information of the variation.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        gtin:
          $ref: '#/components/schemas/RestaurantsGtin'
          nullable: true
        productTypes:
          $ref: '#/components/schemas/RestaurantsProductTypes'
          nullable: true
        taxCategory:
          type: string
          description: The classification used to determine the tax rate applied to the variation. Only applicable to CH tenants. Supported values are 'zeroRate', 'reducedRate', and 'standardRate'.
          nullable: true
        manufacturerInformation:
          description: Contains the manufacturer information for the variation.
          $ref: '#/components/schemas/RestaurantsManufacturerInformation'
          nullable: true
        safetyInformation:
          description: Contains the safety information for the variation.
          $ref: '#/components/schemas/RestaurantsSafetyInformation'
          nullable: true
        sourcingInformation:
          description: Contains the sourcing information for the variation.
          $ref: '#/components/schemas/RestaurantsSourcingInformation'
          nullable: true
        importer:
          description: Contains the importer information for the variation.
          $ref: '#/components/schemas/RestaurantsContactInformation'
          nullable: true
        productUsageInformation:
          description: Contains the product usage information for the variation.
          $ref: '#/components/schemas/RestaurantsProductUsageInformation'
          nullable: true
      example:
        name: 12 inch
        nameTranslations:
          - language: it
            text: 12 pollici
        dealOnly: false
        kitchenNumber: '100'
        type: variation
        modifierGroupsIds:
          - 8547130-req-1
          - 8547130-opt-1
        id: '8547130'
        basePrice: 1000
        nutrition:
          energyContent:
            - min: 100
              max: 200
              unit: kcal
            - min: 418
              max: 836
              unit: kJ
          nutritionTable:
            - description: Per 100g
              referenceQuantity:
                unit: g
                quantity:
                  value: 100
              nutritionProperties:
                - name: protein
                  unit: g
                  quantity:
                    value: 0.1
                    lessThan: true
                - name: fat
                  unit: g
                  percentRI: 50
                  quantity:
                    value: 15
                    lessThan: false
        numberOfServings:
          min: 1
          max: 1
        dealGroupsIds: []
        availabilityIds:
          - 1-lunch-delivery
          - 2-lunch-collection
          - 3-dinner-delivery
          - 4-dinner-collection
        physicalProperties:
          grossWeight:
            value: 100
            unit: g
        gtin: '012345678905'
    RestaurantsMenuSyncV3VolumeUnitType:
      description: The unit type for a volume.
      type: string
      enum:
        - cl
        - l
        - ml
    RestaurantsMenuSyncV44XxValidationError:
      description: A HTTP 4xx error response
      properties:
        fault:
          required:
            - traceId
            - faultId
            - errors
          description: Details of the fault.
          properties:
            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
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            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
                  path:
                    description: JSON path to the element in the request body that failed validation.
                    type: string
                  name:
                    description: The value of the name property for the element in the request body that failed validation.
                    type: string
                  id:
                    description: The value of the id property for the element in the request body that failed validation.
                    type: string
                type: object
                required:
                  - description
                  - errorCode
                  - path
                  - name
                  - id
              type: array
          type: object
      type: object
      example:
        traceId: 1d0ec97a-d0fa-4618-b18d-334f9c2f0da2
        faultId: b8f46a3a-ddd8-4456-b9ea-73571217a7fa
        errors:
          - description: 'Invalid category: eb8144fc-6126-43dc-84fb-f83fb416cc02 - no item with ID c613c13f-6c79-4e7a-a057-3788d371f38as exists on the menu'
            errorCode: '217'
            path: Categories[6].ItemIds[0]
            name: Pizzas
            id: eb8144fc-6126-43dc-84fb-f83fb416cc02
    RestaurantsMenuSyncV4AdditionalCharges:
      type: object
      description: Represents extra costs that must be made clear to the customer. Current examples are for deposit return schemes and levies on single-use plastics.
      properties:
        fees:
          description: Additional, non-recoverable charges. This object will be extended with additional properties as new requirements for fee types emerge.
          type: object
          properties:
            singleUsePlastic:
              type: number
              format: int32
              minimum: 0
              description: Expressed in the minor unit of the currency. A mandatory fee for plastic included with the product, as required by single-use plastic (SUP) legislation in the market.
        deposits:
          description: Additional charges that the customer can recover by returning something to the store or a designated place like a recycling centre. This object will be extended with additional properties as new requirements for deposit types emerge.
          type: object
          properties:
            depositReturnScheme:
              type: number
              format: int32
              minimum: 0
              description: Expressed in the minor unit of the currency. A mandatory fee for plastic included with the product, as required by single-use plastic (SUP) legislation in the market.
    RestaurantsMenuSyncV4AdditionalPricing:
      type: object
      description: The details of how a modifier or deal item variation can be ordered for a given service type.
      required:
        - additionPrice
      properties:
        additionPrice:
          description: Represents the change to the base price in the minor unit of the currency as a result of adding this modifier or deal item variation. Note that this can be a negative number. For example, the modifier 'No Cheese' might have an addition price of -50, meaning this amount is subtracted from the base price when a customer adds the modifier.
          type: number
          format: int32
          nullable: false
        removalPrice:
          type: number
          format: int32
          minimum: 0
          description: Represents the change to the base price in the minor unit of the currency as a result of removing a defaulted selection of this modifier or deal item variation. Note that the value is not required to be the negative of the addition price. For example, the price of a variation 'beef burger' might be increased by 200 when an extra 'beef patty' modifier is added, but reduced by 0 when the default 'beef patty' modifier is removed.
          nullable: true
        additionalCharges:
          $ref: '#/components/schemas/RestaurantsMenuSyncV4AdditionalCharges'
          nullable: true
        unitPrice:
          $ref: '#/components/schemas/RestaurantsUnitPrice'
          nullable: true
    RestaurantsMenuSyncV4Category:
      type: object
      required:
        - id
        - name
      properties:
        id:
          description: Identifier for the category. Unique within the product catalogue.
          type: string
          minLength: 1
          nullable: false
        name:
          description: The name of the category.
          type: string
          minLength: 1
          nullable: false
        itemIds:
          items:
            type: string
          description: An array of one or more references to the items in the category. Each id must be unique within the category and an item with that id must exist within the product catalogue. Empty when children is not empty.
          type: array
          minItems: 0
          uniqueItems: true
          nullable: true
        children:
          items:
            type: string
          description: The ids of the categories that are children of this category. Each id must be unique within the array and a category with that id must exist in the product catalogue. Empty when item ids is not empty.
          type: array
          minItems: 0
          uniqueItems: true
          nullable: true
        timeConstraints:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV4TimeConstraint'
          description: An optional array of objects representing restrictions on when the category is available. By default, the category is available whenever the store is open.
          type: array
          minItems: 0
          nullable: true
        nameTranslations:
          description: An optional array of translations for the name of the category.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
          uniqueItems: true
        description:
          description: The description of the category.
          type: string
          minLength: 0
          nullable: true
        descriptionTranslations:
          description: An optional array of translations for the description of the category.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
          uniqueItems: true
    RestaurantsMenuSyncV4CategoryInformation:
      type: object
      required:
        - categories
      properties:
        categories:
          type: array
          minItems: 1
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV4Category'
      example:
        categories:
          - id: beverages-001
            name: Beverages
            description: A selection of beverages.
            children:
              - soft-beverages-002
              - alcoholic-beverages-003
          - id: soft-beverages-002
            name: Soft Beverages
            description: Coke & Pepsi
            itemIds:
              - item-001
              - item-002
          - id: alcoholic-beverages-003
            name: Alcoholic Beverages
            description: Wine and beer
            itemIds:
              - item-003
              - item-004
    RestaurantsMenuSyncV4DealGroup:
      type: object
      required:
        - id
        - name
        - numberOfChoices
        - dealItemVariations
      properties:
        id:
          description: Identifier for the deal group. Unique at the level of the product catalogue.
          type: string
          minLength: 1
          nullable: false
        numberOfChoices:
          description: The number of deal item variations that must be selected to satisfy this deal group. The value cannot be greater than 1 if the deal group contains variations with modifier groups.
          type: integer
          format: int32
          minimum: 1
          nullable: false
        dealItemVariations:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV4DealItemVariation'
          description: An array of one or more references to the variations that can be selected in order to satisfy this deal group. Their ids must exist within the product catalogue and the array cannot contain duplicate ids.
          type: array
          minItems: 1
          uniqueItems: true
          nullable: false
        name:
          description: The name of the deal group.
          minLength: 1
          type: string
          nullable: false
        nameTranslations:
          description: An optional array of translations for the name of the deal group.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
    RestaurantsMenuSyncV4DealItemVariation:
      type: object
      required:
        - variationId
        - minChoices
        - maxChoices
        - termsOfSale
      properties:
        variationId:
          description: A reference to a variation that can be chosen as a part of a deal group. May not reference a variation that has deal groups itself.
          type: string
          minLength: 1
          nullable: false
        minChoices:
          description: The minimum number of times this deal item variation can be chosen within a deal group.
          type: integer
          format: int32
          minimum: 0
          nullable: false
        maxChoices:
          description: The maximum number of times this deal item variation can be chosen within a deal group.
          format: int32
          type: integer
          minimum: 1
          nullable: false
        termsOfSale:
          type: object
          description: Provides the details of how and when the deal item variation can be ordered.
          properties:
            delivery:
              $ref: '#/components/schemas/RestaurantsMenuSyncV4AdditionalPricing'
              description: An object that provides details of the deal item variation's effect on the price for delivery. If null or not provided, the deal item variation is not available for delivery.
              nullable: true
            collection:
              $ref: '#/components/schemas/RestaurantsMenuSyncV4AdditionalPricing'
              description: An object that provides details of the deal item variation's effect on the price for collection. If null or not provided, the deal item variation is not available for collection.
              nullable: true
        externalId:
          description: The partner identifier for a deal item variation. For example, this could be a price look-up / stock keeping unit code.
          type: string
          minLength: 0
          maxLength: 1000
          nullable: true
    RestaurantsMenuSyncV4IngestProductCatalogueRequest:
      type: object
      required:
        - sourceApplication
      properties:
        eTag:
          description: The ETag of the S3 object that is obtained from the response of the [S3 POST upload](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html). Can be optionally used to ensure the correct object is ingested. The ETag must retain all quotes as returned by AWS after the upload.
          type: string
          nullable: true
        menuVersionTimestamp:
          type: string
          description: ISO-8601 string representing the UTC timestamp when the menu data was last updated in the source system. This is used in conjunction with [offline item requests](#operation/restaurantsTenantRestaurantIdCatalogueOfflineItemRequestsPost) to ensure that records of offline items are not removed from our system if the menu data is older than the offline items request.
          format: date-time
          nullable: true
        sourceApplication:
          type: string
          description: The name of the client application sending the request to ingest the product catalogue. For example, 'jetconnect', 'menubuilder', or 'menupusher'.
          nullable: false
        brandId:
          type: string
          description: An identifier for the brand to which the product catalogue belongs. This may take the form of a brand slug (e.g. 'je-uk-kfc'), but a plain identifier (e.g. 'kfc') is preferred for new integrations.
          nullable: true
        posId:
          type: string
          description: An identifier for the point of sale system that produced the product catalogue data.
          nullable: true
        productDataToEnrich:
          type: array
          description: An array indicating which types of data from a databank integration may be used to enrich the data provided in the request.
          minItems: 0
          uniqueItems: true
          nullable: true
          items:
            enum:
              - allProductInformation
              - images
      description: A command to ingest product catalogue data.
      example:
        eTag: '"1b2cf535f27731c974343645a3985328"'
        sourceApplication: menuBuilder
        brandId: burger-chain
        posId: pos1
        productDataToEnrich:
          - allProductInformation
          - images
        menuVersionTimestamp: '2023-06-19T14:28:00Z'
    RestaurantsMenuSyncV4Item:
      type: object
      required:
        - id
        - name
        - variations
      properties:
        id:
          description: The identifier for the item. Unique within the product catalogue.
          type: string
          minLength: 1
          nullable: false
        name:
          description: The name of the item.
          type: string
          minLength: 1
          nullable: false
        variations:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV4Variation'
          description: 'An array of one or more objects that represent distinct - but related - products for sale. When an item has more than one variation, this commonly represents different sizes. For example: small vs large pizza, or 330ml can vs 500ml bottle of lemonade.'
          type: array
          minItems: 1
          nullable: false
        nameTranslations:
          description: An optional array of translations for the name of the item.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
          uniqueItems: true
        description:
          description: The description of the item.
          type: string
          nullable: true
        descriptionTranslations:
          description: An optional array of translations for the description of the item.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
          uniqueItems: true
        externalId:
          description: The partner identifier for an item. For example, this could be a price look-up or stock keeping unit code.
          type: string
          minLength: 0
          maxLength: 1000
          nullable: true
        requireOtherProducts:
          description: Indicates whether the item can be ordered by itself or has to be ordered with other items. Typically, this applies to items within categories for drinks and desserts.
          type: boolean
          nullable: true
        imageUrl:
          description: URL for an image of the item.
          type: string
          minLength: 0
          nullable: true
          deprecated: true
        images:
          items:
            $ref: '#/components/schemas/RestaurantsImage'
          description: An optional array of images for the item. This currently only supports one image.
          type: array
          nullable: true
          minItems: 0
          maxItems: 1
          uniqueItems: true
        labels:
          description: 'An array of labels that will be displayed to customers. Allowed values: ''alcohol'', ''hot'', ''vegetarian'', ''vegan''. The alcohol label has historically been used to denote any item with a restriction applied, but this usage is considered deprecated and has been superseded by productTypes.'
          type: array
          items:
            type: string
          uniqueItems: true
          minItems: 0
          maxItems: 4
          nullable: true
        dealGroups:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV4DealGroup'
          description: An optional array of objects that represent choices customers can make from variations of other items in the product catalogue. If the array contains objects, the item is a deal.
          type: array
          nullable: true
          minItems: 0
          uniqueItems: true
        modifierGroups:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV4ModifierGroup'
          description: An optional array of objects that represent choices customers can make to modify the item.
          type: array
          nullable: true
          minItems: 0
          uniqueItems: true
    RestaurantsMenuSyncV4Modifier:
      type: object
      required:
        - id
        - name
        - minChoices
        - maxChoices
        - termsOfSale
      properties:
        id:
          description: The identifier for the modifier. Unique within the product catalogue.
          type: string
          minLength: 1
          nullable: false
        name:
          description: The name of the modifier.
          type: string
          minLength: 1
          nullable: false
        legalName:
          description: The descriptive name of the modifier required by law. This describes the true nature of the product.
          type: string
          minLength: 1
          nullable: true
        minChoices:
          description: The minimum number of times this modifier can be chosen within a given modifier group.
          type: integer
          format: int32
          minimum: 0
          nullable: false
        maxChoices:
          description: The maximum number of times this modifier can be chosen within a given modifier group.
          type: integer
          format: int32
          minimum: 1
          nullable: false
        termsOfSale:
          type: object
          description: Provides the details of how the modifier can be ordered.
          properties:
            delivery:
              $ref: '#/components/schemas/RestaurantsMenuSyncV4AdditionalPricing'
              description: An object that provides details of the modifier's effect on the price for delivery. If null or not provided, the modifier is not available for delivery.
              nullable: true
            collection:
              $ref: '#/components/schemas/RestaurantsMenuSyncV4AdditionalPricing'
              description: An object that provides details of the modifier's effect on the price for collection. If null or not provided, the modifier is not available for collection.
              nullable: true
        externalId:
          description: The partner identifier for a modifier. For example, this could be a price look-up or stock keeping unit code.
          type: string
          maxLength: 1000
          nullable: true
        nameTranslations:
          description: An optional array of translations for the name of the variation.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        nutrition:
          description: Nutritional information for the modifier.
          $ref: '#/components/schemas/RestaurantsNutrition'
          nullable: true
        numberOfServings:
          description: The number of servings, expressed as a range.
          $ref: '#/components/schemas/RestaurantsNumberOfServings'
          nullable: true
        additionalInformation:
          type: string
          description: This field will be deprecated in the future and is to be used for migrating and compatibility with L-TA menus only.
          nullable: true
        additionalInformationTranslations:
          description: An optional array of translations for the additional information for the modifier.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        physicalProperties:
          $ref: '#/components/schemas/RestaurantsMenuSyncV4PhysicalProperties'
          nullable: true
        gtin:
          $ref: '#/components/schemas/RestaurantsGtin'
          nullable: true
        productTypes:
          $ref: '#/components/schemas/RestaurantsProductTypes'
          nullable: true
        taxCategory:
          type: string
          description: The classification used to determine the tax rate applied to the modifier. Only applicable to CH tenants. Supported values are 'zeroRate', 'reducedRate', and 'standardRate'.
          nullable: true
        manufacturerInformation:
          description: Contains the manufacturer information for the modifier.
          $ref: '#/components/schemas/RestaurantsManufacturerInformation'
          nullable: true
        safetyInformation:
          description: Contains the safety information for the modifier.
          $ref: '#/components/schemas/RestaurantsSafetyInformation'
          nullable: true
        sourcingInformation:
          description: Contains the sourcing information for the modifier.
          $ref: '#/components/schemas/RestaurantsSourcingInformation'
          nullable: true
        importer:
          description: Contains the importer information for the modifier.
          $ref: '#/components/schemas/RestaurantsContactInformation'
          nullable: true
        productUsageInformation:
          description: Contains the product usage information for the modifier.
          $ref: '#/components/schemas/RestaurantsProductUsageInformation'
          nullable: true
    RestaurantsMenuSyncV4ModifierGroup:
      type: object
      required:
        - id
        - minChoices
        - maxChoices
        - modifiers
      properties:
        id:
          description: The identifier for the modifier group. Unique within the product catalogue.
          type: string
          minLength: 1
          nullable: false
        minChoices:
          description: The minimum number of modifiers that must be selected to satisfy this modifier group.
          type: integer
          format: int32
          minimum: 0
          nullable: false
        maxChoices:
          description: The maximum number of modifiers that must be selected to satisfy this modifier group.
          type: integer
          format: int32
          minimum: 1
          nullable: false
        modifiers:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV4Modifier'
          description: An array of one or more modifiers that can be selected to satisfy this modifier group.
          type: array
          minItems: 1
          nullable: false
        name:
          description: A name for the modifier group, usually phrased as a question.
          type: string
          nullable: true
          example: Would you like any extras?
        nameTranslations:
          description: An optional array of translations for the name of the modifier group.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
    RestaurantsMenuSyncV4PhysicalProperties:
      type: object
      description: The physical properties of an item.
      properties:
        grossWeight:
          description: The gross weight information for an item.
          $ref: '#/components/schemas/RestaurantsWeight'
          nullable: true
        drainedWeight:
          description: The drained weight information for a product.
          $ref: '#/components/schemas/RestaurantsWeight'
          nullable: true
        netQuantity:
          description: The net quantity information for an item.
          $ref: '#/components/schemas/RestaurantsNetQuantity'
          nullable: true
      example:
        unit: ml
        value: 330
        quantity: 6
        summary: Represents a product with a net quantity of 330ml per item in a multipack of 6 items, e.g. 6 pack of Coca-Cola.
    RestaurantsMenuSyncV4ProductCatalogue:
      type: object
      description: Schema for product catalogue data to publish to the JET platform. This schema is also known as Menu Sync v4.
      required:
        - name
        - baseLanguage
        - currency
        - categories
        - items
      properties:
        name:
          description: The name for the product catalogue. Usually matches the name of the store.
          type: string
          minLength: 1
          nullable: false
        baseLanguage:
          description: The language used for the base text in the product catalogue, represented as an ISO 639-1 language code.
          type: string
          minLength: 2
          maxLength: 2
          pattern: ^[a-z]{2}$
          nullable: false
        currency:
          $ref: '#/components/schemas/SharedCurrency'
          description: The currency used to represent prices, represented as an ISO 4217 currency code. For example, GBP, EUR or AUD.
        categories:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV4Category'
          description: The categories used to organize the items in the product catalogue.
          type: array
          minItems: 0
          nullable: true
        categoryInformation:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV4CategoryInformation'
          description: The categories and sub-categories used to organize the items in the product catalogue.
          type: array
          minItems: 0
          nullable: true
        items:
          items:
            $ref: '#/components/schemas/RestaurantsMenuSyncV4Item'
          description: The items sold by the store.
          type: array
          minItems: 1
          nullable: false
        quantityRestrictions:
          items:
            $ref: '#/components/schemas/RestaurantsQuantityRestriction'
          description: Specifies restrictions on the quantities for items added to the basket.
          type: array
          minItems: 0
          nullable: true
        description:
          description: A top-level description for the product catalogue.
          type: string
          nullable: true
    RestaurantsMenuSyncV4TimeConstraint:
      type: object
      description: A constraint on the time and days of the week when something is available
      required:
        - fromTime
        - toTime
        - daysOfWeek
      properties:
        fromTime:
          description: The time of day (inclusive) when the product or category becomes available, in the 24-hour format HH:mm:ss.
          $ref: '#/components/schemas/SharedIso8601Time'
          nullable: false
        toTime:
          description: The time of day (exclusive) when the product or category becomes unavailable, in the 24-hour format HH:mm:ss.
          $ref: '#/components/schemas/SharedIso8601Time'
          nullable: false
        daysOfWeek:
          description: An array of one or more days of the week on which the time constraint applies.
          type: array
          minItems: 1
          maxItems: 7
          uniqueItems: true
          nullable: false
          items:
            $ref: '#/components/schemas/SharedDayOfWeek'
    RestaurantsMenuSyncV4Variation:
      type: object
      required:
        - id
        - name
        - termsOfSale
      properties:
        id:
          description: The identifier for the variation. Unique for variations within the product catalogue, but may be shared with id of the item to which the variation belongs.
          type: string
          minLength: 1
          nullable: false
        name:
          description: The name of the variation. If this is the only variation for the item, this should be the same as the name of the item.
          type: string
          minLength: 1
          nullable: false
        legalName:
          description: The descriptive name of the variation required by law. This describes the true nature of the product.
          type: string
          minLength: 1
          nullable: true
        termsOfSale:
          type: object
          description: Provides the details of how and when the variation can be ordered.
          properties:
            delivery:
              items:
                $ref: '#/components/schemas/RestaurantsMenuSyncV4VariationPricing'
              description: An array of objects that provides details of when and how (including price) the variation can be ordered for delivery. If empty, null, or not provided, the variation is not available for delivery.
              minItems: 0
              nullable: true
            collection:
              items:
                $ref: '#/components/schemas/RestaurantsMenuSyncV4VariationPricing'
              description: An array of objects that provides details of when and how (including price) the variation can be ordered for collection. If empty, null, or not provided, the variation is not available for collection.
              minItems: 0
              nullable: true
        nameTranslations:
          description: An optional array of translations for the name of the variation.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        dealOnly:
          description: Indicates whether the variation is only available as part of a deal or will be available to order as a standalone item.
          type: boolean
          nullable: true
        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
          nullable: true
        modifierGroupIds:
          items:
            type: string
          description: An optional array of references to the modifier groups that are applicable for this variation.
          type: array
          minItems: 0
          nullable: true
        externalId:
          description: The partner identifier for a variation. For example, this could be a price look-up or stock keeping unit code.
          type: string
          minLength: 0
          maxLength: 1000
          nullable: true
        nutrition:
          $ref: '#/components/schemas/RestaurantsNutrition'
          nullable: true
        numberOfServings:
          $ref: '#/components/schemas/RestaurantsNumberOfServings'
          nullable: true
        dealGroupIds:
          items:
            type: string
          description: An optional array of references to the deal groups that are applicable for this variation.
          type: array
          minItems: 0
          nullable: true
        physicalProperties:
          $ref: '#/components/schemas/RestaurantsMenuSyncV4PhysicalProperties'
          description: The physical properties of the variation.
          nullable: true
        additionalInformation:
          type: string
          description: This field will be deprecated in the future and is to be used for migrating and compatibility with L-TA product catalogues only.
          nullable: true
        additionalInformationTranslations:
          description: An optional array of translations for the additional information for the variation.
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/RestaurantsMenuTranslation'
          nullable: true
        gtin:
          $ref: '#/components/schemas/RestaurantsGtin'
          nullable: true
        productTypes:
          $ref: '#/components/schemas/RestaurantsProductTypes'
          nullable: true
        taxCategory:
          type: string
          description: The classification used to determine the tax rate applied to the variation. Only applicable to CH tenants. Supported values are 'zeroRate', 'reducedRate', and 'standardRate'.
          nullable: true
        manufacturerInformation:
          description: Contains the manufacturer information for the variation.
          $ref: '#/components/schemas/RestaurantsManufacturerInformation'
          nullable: true
        safetyInformation:
          description: Contains the safety information for the variation.
          $ref: '#/components/schemas/RestaurantsSafetyInformation'
          nullable: true
        sourcingInformation:
          description: Contains the sourcing information for the variation.
          $ref: '#/components/schemas/RestaurantsSourcingInformation'
          nullable: true
        importer:
          description: Contains the importer information for the variation.
          $ref: '#/components/schemas/RestaurantsContactInformation'
          nullable: true
        productUsageInformation:
          description: Contains the product usage information for the variation.
          $ref: '#/components/schemas/RestaurantsProductUsageInformation'
          nullable: true
    RestaurantsMenuSyncV4VariationPricing:
      type: object
      description: The details of how and when a variation can be ordered for a given service type
      required:
        - basePrice
      properties:
        basePrice:
          description: The base price for the variation in the minor unit of the currency.
          type: number
          format: int32
          minimum: 0
          nullable: false
        additionalCharges:
          $ref: '#/components/schemas/RestaurantsMenuSyncV4AdditionalCharges'
          nullable: true
        unitPrice:
          $ref: '#/components/schemas/RestaurantsUnitPrice'
          nullable: true
        timeConstraint:
          description: Restriction on the time and days when the variation is available for sale. If null or not provided, there are no specific restrictions on when the variation can be ordered.
          $ref: '#/components/schemas/RestaurantsMenuSyncV4TimeConstraint'
          nullable: true
    RestaurantsOrderTime:
      properties:
        upperBoundMinutes:
          description: Order time upper bound value, in minutes.
          format: int32
          type: integer
        dayOfWeek:
          description: Day of week for order time
          enum:
            - sunday
            - monday
            - tuesday
            - wednesday
            - thursday
            - friday
            - saturday
          type: string
        serviceType:
          description: Service type of the order time
          enum:
            - Delivery
            - Collection
          type: string
        lowerBoundMinutes:
          description: Order time lower bound value, in minutes.
          format: int32
          type: integer
        overrides:
          description: Time-based adjustments to upper and lower bounds. No limits for the overrides count. No overlaps allowed.
          type: array
          items:
            $ref: '#/components/schemas/RestaurantsOrderTimeOverride'
      description: The object representing order time entry
      example:
        upperBoundMinutes: 50
        dayOfWeek: monday
        serviceType: Delivery
        lowerBoundMinutes: 35
        overrides:
          - startTime: '18:00:00'
            endTime: '20:00:00'
            lowerBoundMinutes: 44
            upperBoundMinutes: 59
      type: object
    RestaurantsTranslationsCatalogueTranslationsRequest:
      type: object
      description: A request for translations for user-supplied text in a product catalogue.
      required:
        - sourceLocale
        - targetLocales
        - translationRequestItems
      properties:
        sourceLocale:
          description: The locale for all source text in the request.
          example: en-GB
          $ref: '#/components/schemas/SharedLocale'
        targetLocales:
          description: The locales into which the source text should be translated.
          example:
            - nl-NL
          type: array
          minItems: 1
          uniqueItems: true
          items:
            $ref: '#/components/schemas/SharedLocale'
        translationRequestItems:
          description: A collection of items to be translated.
          type: array
          items:
            type: object
            required:
              - sourceText
              - context
            properties:
              sourceText:
                description: The text to be translated.
                type: string
                example: Freshly made with hand-stretched dough and baked to perfection in our wood-fired pizza oven.
              context:
                description: The context in which the source text appears within the catalogue.
                type: string
                example: This is the description of a category called 'Pizzas' for an online restaurant or grocery retailer's menu / catalogue.
    RestaurantsTranslationsCatalogueTranslationsResponse:
      type: object
      description: A successful response to a request for translations.
      required:
        - sourceLocale
        - translationResultItems
      properties:
        sourceLocale:
          description: The locale for all source text from the request.
          example: en-GB
          $ref: '#/components/schemas/SharedLocale'
        translationResultItems:
          type: array
          items:
            type: object
            description: Represents a single translation result item, including the input and its translations.
            properties:
              input:
                type: object
                required:
                  - sourceText
                  - context
                description: The input supplied to request a translation for a single string of text.
                properties:
                  sourceText:
                    description: The text that was translated.
                    type: string
                    example: Freshly made with hand-stretched dough and baked to perfection in our wood-fired pizza oven.
                  context:
                    description: The context supplied for the text that was translated.
                    type: string
                    example: This is the description of a category called 'Pizzas' for an online restaurant or grocery retailer's menu / catalogue.
              translations:
                description: A collection of objects containing the translated text in a specified locale.
                type: array
                items:
                  type: object
                  required:
                    - locale
                    - translatedText
                  properties:
                    locale:
                      description: The locale for the translated text.
                      example: nl-NL
                      $ref: '#/components/schemas/SharedLocale'
                    translatedText:
                      description: A translation for the source text in the specified locale.
                      type: string
                      example: Vers gemaakt met met de hand opgespannen deeg en perfect gebakken in onze houtgestookte pizzaoven.
    RestaurantsUpdateOrderTimeRequest:
      properties:
        upperBoundMinutes:
          description: Order time upper bound value, in minutes.
          format: int32
          type: integer
        lowerBoundMinutes:
          description: Order time lower bound value, in minutes.
          format: int32
          type: integer
      description: Request object for order time update
      example:
        upperBoundMinutes: 50
        lowerBoundMinutes: 35
      type: object
    RestaurantsWebhooksMenuIngestionComplete:
      type: object
      properties:
        tenant:
          format: enum
          description: Country code for the market the restaurant is in
          enum:
            - au
            - dk
            - es
            - ie
            - it
            - 'no'
            - uk
            - nz
          type: string
        result:
          format: enum
          description: The result of the menu ingestion process
          enum:
            - success
            - fail
          type: string
        correlationId:
          description: The ID of the execution which has been completed
          type: string
        restaurantId:
          description: The Just Eat restaurant ID
          type: string
        timestamp:
          description: The ISO-8601 datetime at which the menu ingestion completed
          format: date-time
          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:
            id:
              description: A unique ID for the fault
              type: string
            errors:
              items:
                properties:
                  description:
                    description: A description of the error to help you resolve the issue
                    type: string
                  code:
                    description: An alphanumeric code for the error
                    type: string
                type: object
              description: Details of errors which caused the fault
              type: array
          type: object
      example:
        tenant: uk
        result: fail
        correlationId: 64bef5ee-7265-47f8-9aee-28bc74f00b13
        restaurantId: '123456'
        timestamp: '2020-01-01T00:00:00.0000000+00:00'
        fault:
          id: 70e307df-0156-4d3c-ab92-dd57a103350b
          errors:
            - description: 'Invalid variation: 15237d6c-c866-55da-9e61-b4f59dcab9ae - variations must be associated with at least one availability'
              code: '123'
            - description: 'Invalid availability ID: menu-105369-availabilities - availability IDs must be integers'
              code: '145'
    RestaurantsWebhooksOrderTimeUpdated:
      type: object
      properties:
        upperBoundMinutes:
          description: Order time upper bound value, in minutes.
          format: int32
          type: integer
        serviceType:
          format: enum
          description: Service type of the order time.
          enum:
            - Delivery
            - Collection
          type: string
        dayOfWeek:
          format: enum
          description: The day of the week that has been updated.
          enum:
            - Sunday
            - Monday
            - Tuesday
            - Wednesday
            - Thursday
            - Friday
            - Saturday
          type: string
        lowerBoundMinutes:
          description: Order time lower bound value, in minutes.
          format: int32
          type: integer
        restaurantId:
          description: The Just Eat restaurant ID
          type: string
      example:
        upperBoundMinutes: 50
        serviceType: Delivery
        dayOfWeek: Monday
        lowerBoundMinutes: 35
        restaurantId: '123456'
    RestaurantschedulerBulkRestaurantResult:
      type: object
      properties:
        restaurantId:
          type: string
        restaurantName:
          type: string
        locationName:
          type: string
        feeZoneId:
          type: string
        feeZoneName:
          type: string
        savedDeliveryPackage:
          type: string
          x-nullable: true
          enum:
            - customSetup
            - skipFreeCp
            - restaurantFreeCp
            - splitFreeCp
            - defaultSetup
            - skipFreeDelivery
            - restaurantFreeDelivery
            - promotion
            - qsr
            - skipFreeQsr
            - restaurantFreeQsr
            - promotionTwo
            - micro
            - restaurantSelfServe
            - fsg
            - skipFreeFsg
            - restaurantFreeFsg
            - splitFreeFsg
            - qsg
            - skipFreeQsg
            - restaurantFreeQsg
            - splitFreeQsg
            - fsa
            - skipFreeFsa
            - restaurantFreeFsa
            - splitFreeFsa
            - customLinked
        sourceDeliveryPackage:
          type: string
          x-nullable: true
          enum:
            - customSetup
            - skipFreeCp
            - restaurantFreeCp
            - splitFreeCp
            - defaultSetup
            - skipFreeDelivery
            - restaurantFreeDelivery
            - promotion
            - qsr
            - skipFreeQsr
            - restaurantFreeQsr
            - promotionTwo
            - micro
            - restaurantSelfServe
            - fsg
            - skipFreeFsg
            - restaurantFreeFsg
            - splitFreeFsg
            - qsg
            - skipFreeQsg
            - restaurantFreeQsg
            - splitFreeQsg
            - fsa
            - skipFreeFsa
            - restaurantFreeFsa
            - splitFreeFsa
            - customLinked
        deliveryPackage:
          $ref: '#/components/schemas/RestaurantschedulerDeliveryPackage'
        setStatus:
          $ref: '#/components/schemas/RestaurantschedulerJobRestaurantStatus'
        setMessage:
          type: string
          x-nullable: true
        restoreStatus:
          type: string
          x-nullable: true
          enum:
            - scheduled
            - updating
            - applied
            - failed
        restoreStatusMessage:
          type: string
          x-nullable: true
        savedSettings:
          $ref: '#/components/schemas/RestaurantschedulerJobSettingApiAdapterDto'
    RestaurantschedulerBulkResultsDto:
      type: object
      properties:
        jobId:
          type: string
        jobName:
          type: string
        jobType:
          $ref: '#/components/schemas/RestaurantschedulerJobType'
        modifiedUsername:
          type: string
        jobSetting:
          $ref: '#/components/schemas/RestaurantschedulerJobSettingApiAdapterDto'
        resultValues:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantschedulerBulkRestaurantResult'
        jobStatus:
          $ref: '#/components/schemas/RestaurantschedulerJobStatus'
        startTime:
          type: integer
          format: int64
          x-nullable: true
        endTime:
          type: integer
          format: int64
          x-nullable: true
    RestaurantschedulerBulkUpdateConflict:
      type: object
      properties:
        restaurantId:
          type: string
        jobConflicts:
          $ref: '#/components/schemas/RestaurantschedulerJobConflictSet'
    RestaurantschedulerBulkUpdateConflictsCheckDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        jobType:
          type: string
        startTime:
          type: string
          x-nullable: true
        endTime:
          type: string
          x-nullable: true
    RestaurantschedulerCampaignFreeItemJobRequestDto:
      type: object
      properties:
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        campaignId:
          type: string
        restaurantMenuItems:
          type: object
          additionalProperties:
            type: string
    RestaurantschedulerConflictingJobOverridesDto:
      type: object
      properties:
        bulkUpdateConflicts:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerBulkUpdateConflict'
    RestaurantschedulerCuisineTagDto:
      type: object
      properties:
        id:
          type: string
        englishName:
          type: string
        tagType:
          $ref: '#/components/schemas/RestaurantschedulerTagType'
    RestaurantschedulerCuisineTagListDto:
      type: object
      properties:
        cuisineTags:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantschedulerCuisineTagDto'
    RestaurantschedulerCuisineTagsJobRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        startTime:
          type: string
          x-nullable: true
        endTime:
          type: string
          x-nullable: true
        bulkUpdateConflictSet:
          x-nullable: true
          allOf:
            - $ref: '#/components/schemas/RestaurantschedulerConflictingJobOverridesDto'
        cuisineIds:
          type: array
          uniqueItems: true
          items:
            type: string
    RestaurantschedulerCustomPackage:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    RestaurantschedulerCustomPackageJobRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        startTime:
          type: string
          x-nullable: true
        endTime:
          type: string
          x-nullable: true
        bulkUpdateConflictSet:
          x-nullable: true
          allOf:
            - $ref: '#/components/schemas/RestaurantschedulerConflictingJobOverridesDto'
        customPackageId:
          type: string
        customPackage:
          type: string
          x-nullable: true
          enum:
            - customSetup
            - skipFreeCp
            - restaurantFreeCp
            - splitFreeCp
            - defaultSetup
            - skipFreeDelivery
            - restaurantFreeDelivery
            - promotion
            - qsr
            - skipFreeQsr
            - restaurantFreeQsr
            - promotionTwo
            - micro
            - restaurantSelfServe
            - fsg
            - skipFreeFsg
            - restaurantFreeFsg
            - splitFreeFsg
            - qsg
            - skipFreeQsg
            - restaurantFreeQsg
            - splitFreeQsg
            - fsa
            - skipFreeFsa
            - restaurantFreeFsa
            - splitFreeFsa
            - customLinked
        deliveryPackage:
          $ref: '#/components/schemas/RestaurantschedulerDeliveryPackage'
    RestaurantschedulerCustomPackageOptionsDto:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantschedulerCustomPackage'
    RestaurantschedulerDayPartPackage:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    RestaurantschedulerDayPartPackageJobRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        startTime:
          type: string
          x-nullable: true
        endTime:
          type: string
          x-nullable: true
        bulkUpdateConflictSet:
          x-nullable: true
          allOf:
            - $ref: '#/components/schemas/RestaurantschedulerConflictingJobOverridesDto'
        dayPartPackageId:
          type: string
          x-nullable: true
    RestaurantschedulerDayPartPackageOptionsDto:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantschedulerDayPartPackage'
    RestaurantschedulerDefaultMinuteJobRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        startTime:
          type: string
          x-nullable: true
        endTime:
          type: string
          x-nullable: true
        bulkUpdateConflictSet:
          x-nullable: true
          allOf:
            - $ref: '#/components/schemas/RestaurantschedulerConflictingJobOverridesDto'
        defaultMinute:
          type: integer
          format: int32
    RestaurantschedulerDeliveryPackage:
      type: string
      enum:
        - customSetup
        - skipFreeCp
        - restaurantFreeCp
        - splitFreeCp
        - defaultSetup
        - skipFreeDelivery
        - restaurantFreeDelivery
        - promotion
        - qsr
        - skipFreeQsr
        - restaurantFreeQsr
        - promotionTwo
        - micro
        - restaurantSelfServe
        - fsg
        - skipFreeFsg
        - restaurantFreeFsg
        - splitFreeFsg
        - qsg
        - skipFreeQsg
        - restaurantFreeQsg
        - splitFreeQsg
        - fsa
        - skipFreeFsa
        - restaurantFreeFsa
        - splitFreeFsa
        - customLinked
    RestaurantschedulerFeeZoneIdsSetDto:
      type: object
      properties:
        ids:
          type: array
          uniqueItems: true
          items:
            type: string
    RestaurantschedulerFeeZonePackageJobRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        startTime:
          type: string
          x-nullable: true
        endTime:
          type: string
          x-nullable: true
        bulkUpdateConflictSet:
          x-nullable: true
          allOf:
            - $ref: '#/components/schemas/RestaurantschedulerConflictingJobOverridesDto'
        deliveryPackage:
          $ref: '#/components/schemas/RestaurantschedulerDeliveryPackage'
        keepPromotion:
          type: boolean
          x-nullable: true
    RestaurantschedulerJobConflict:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    RestaurantschedulerJobConflictSet:
      type: object
      properties:
        jobConflicts:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobConflict'
    RestaurantschedulerJobInformationDto:
      type: object
      properties:
        jobId:
          type: string
          x-nullable: true
        type:
          type: string
          x-nullable: true
          enum:
            - bulkApplyDefaultPackage
            - bulkApplyPromotionPackage
            - bulkApplyCustomPackage
            - bulkApplyCuisineTags
            - bulkApplyMaxDeliveryDistance
            - bulkApplyDayPartPackage
            - bulkApplyPrimarySecondaryCuisines
            - bulkApplyTertiaryCuisines
            - bulkApplyRemoveTertiaryCuisines
            - bulkApplyOptimizedPricing
            - bulkApplyDefaultMinute
            - bulkApplyCampaignFreeItem
            - bulkTogglePartnersOnlineStatus
          $ref: '#/components/schemas/RestaurantschedulerJobType'
    RestaurantschedulerJobListDto:
      type: object
      properties:
        records:
          type: array
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobListItem'
        numTotalRecords:
          type: integer
          format: int32
    RestaurantschedulerJobListItem:
      type: object
      properties:
        id:
          type: string
        updateId:
          type: string
        createdTime:
          type: integer
          format: int64
        numLocations:
          type: integer
          format: int32
        userName:
          type: string
        updateType:
          $ref: '#/components/schemas/RestaurantschedulerJobType'
        startTime:
          type: integer
          format: int64
          x-nullable: true
        endTime:
          type: integer
          format: int64
          x-nullable: true
        status:
          $ref: '#/components/schemas/RestaurantschedulerJobStatus'
    RestaurantschedulerJobOrderOption:
      type: string
      enum:
        - MODIFIED_TIME
        - JOB_TYPE
        - START_TIME
        - END_TIME
    RestaurantschedulerJobRestaurantStatus:
      type: string
      enum:
        - scheduled
        - updating
        - applied
        - failed
    RestaurantschedulerJobRestaurantsDto:
      type: object
      properties:
        feeZoneId:
          type: string
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
    RestaurantschedulerJobSettingApiAdapterDto:
      type: object
    RestaurantschedulerJobStatus:
      type: string
      enum:
        - scheduled
        - updating
        - running
        - cancelled
        - finished
    RestaurantschedulerJobType:
      type: string
      enum:
        - bulkApplyDefaultPackage
        - bulkApplyPromotionPackage
        - bulkApplyCustomPackage
        - bulkApplyCuisineTags
        - bulkApplyMaxDeliveryDistance
        - bulkApplyDayPartPackage
        - bulkApplyPrimarySecondaryCuisines
        - bulkApplyTertiaryCuisines
        - bulkApplyRemoveTertiaryCuisines
        - bulkApplyOptimizedPricing
        - bulkApplyDefaultMinute
        - bulkApplyCampaignFreeItem
        - bulkTogglePartnersOnlineStatus
    RestaurantschedulerModifiedUser:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        email:
          type: string
        type:
          type: string
    RestaurantschedulerOptimizedPricingJobRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        isUsingOptimizedPricing:
          type: boolean
        startTime:
          type: string
          x-nullable: true
        endTime:
          type: string
          x-nullable: true
        bulkUpdateConflictSet:
          x-nullable: true
          allOf:
            - $ref: '#/components/schemas/RestaurantschedulerConflictingJobOverridesDto'
    RestaurantschedulerOptionalFeeZoneIdsSetDto:
      type: object
      properties:
        feeZoneIds:
          type: array
          x-nullable: true
          uniqueItems: true
          items:
            type: string
    RestaurantschedulerOrderDirection:
      type: string
      enum:
        - ASC
        - DESC
    RestaurantschedulerPartnersOnlineStatusUpdateRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        onlineStatus:
          type: boolean
    RestaurantschedulerPrimarySecondaryCuisinesJobRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        primaryCuisineId:
          type: string
          x-nullable: true
        secondaryCuisineId:
          type: string
          x-nullable: true
    RestaurantschedulerPromotionPackageJobRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        startTime:
          type: string
          x-nullable: true
        endTime:
          type: string
          x-nullable: true
        bulkUpdateConflictSet:
          x-nullable: true
          allOf:
            - $ref: '#/components/schemas/RestaurantschedulerConflictingJobOverridesDto'
        promotionPackage:
          $ref: '#/components/schemas/RestaurantschedulerSubType'
    RestaurantschedulerRemoveTertiaryCuisinesJobRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        tertiaryCuisineIds:
          type: array
          uniqueItems: true
          items:
            type: string
    RestaurantschedulerRestaurantFeeZonePartial:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        locationName:
          type: string
        feeZoneId:
          type: string
          x-nullable: true
        deliveryPackage:
          $ref: '#/components/schemas/RestaurantschedulerDeliveryPackage'
        savedDeliveryPackage:
          type: string
          x-nullable: true
          enum:
            - customSetup
            - skipFreeCp
            - restaurantFreeCp
            - splitFreeCp
            - defaultSetup
            - skipFreeDelivery
            - restaurantFreeDelivery
            - promotion
            - qsr
            - skipFreeQsr
            - restaurantFreeQsr
            - promotionTwo
            - micro
            - restaurantSelfServe
            - fsg
            - skipFreeFsg
            - restaurantFreeFsg
            - splitFreeFsg
            - qsg
            - skipFreeQsg
            - restaurantFreeQsg
            - splitFreeQsg
            - fsa
            - skipFreeFsa
            - restaurantFreeFsa
            - splitFreeFsa
            - customLinked
        sourceDeliveryPackage:
          $ref: '#/components/schemas/RestaurantschedulerDeliveryPackage'
        cuisineTags:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerCuisineTagDto'
        customPackageName:
          type: string
          x-nullable: true
        dayPartPackageName:
          type: string
          x-nullable: true
        primaryCuisine:
          x-nullable: true
          allOf:
            - $ref: '#/components/schemas/RestaurantschedulerCuisineTagDto'
        secondaryCuisine:
          x-nullable: true
          allOf:
            - $ref: '#/components/schemas/RestaurantschedulerCuisineTagDto'
        isUsingOptimizedPricing:
          type: boolean
        defaultMinute:
          type: integer
          format: int32
          x-nullable: true
        online:
          type: boolean
    RestaurantschedulerRestaurantFeeZonePartialSetDto:
      type: object
      properties:
        restaurantFeeZonePartialSet:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerRestaurantFeeZonePartial'
    RestaurantschedulerRestaurantIdsSetDto:
      type: object
      properties:
        ids:
          type: array
          uniqueItems: true
          items:
            type: string
    RestaurantschedulerRestaurantPromotionPackageSummary:
      type: object
      properties:
        restaurantName:
          type: string
        locationName:
          type: string
        feeZoneName:
          type: string
        originalPromotion:
          type: string
    RestaurantschedulerRestaurantPromotionPackageSummarySetDto:
      type: object
      properties:
        restaurantPromotionPackageSummaries:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerRestaurantPromotionPackageSummary'
    RestaurantschedulerSubType:
      type: string
      enum:
        - default
        - skipSubsidy
        - restoSubsidy
        - splitSubsidy
        - other
    RestaurantschedulerTagType:
      type: string
      enum:
        - cuisine
        - marketing
    RestaurantschedulerTertiaryCuisinesJobRequestDto:
      type: object
      properties:
        restaurantIds:
          type: array
          uniqueItems: true
          items:
            type: string
        feeZones:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RestaurantschedulerJobRestaurantsDto'
        modifiedUser:
          $ref: '#/components/schemas/RestaurantschedulerModifiedUser'
        tertiaryCuisineIds:
          type: array
          uniqueItems: true
          items:
            type: string
    RestaurantserviceBusinessTypeEnum:
      description: The business type of a partner.
      enum:
        - restaurant
        - grocery
      type: string
    RestaurantservicePartnerAddress:
      type: object
      description: Addresses that are associated with the partner.
      properties:
        type:
          type: string
          description: |
            The type of address, describing the association of the address with the partner. The possible types are:
              - **commercial** - Indicates the address is the commercial location for the partner.
          enum:
            - commercial
        lines:
          type: array
          description: Holds more location specific details such as the house number, building name or street.
          items:
            type: string
        postalCode:
          type: string
          description: Holds the postal code that typically maps to a geographic area. The codes, and the system behind them, varies from country to country.
        city:
          type: string
          description: Holds the postal settlement, such as a city or town.
        country:
          type: string
          description: Contains the country code as defined by ISO 3166 codes.
        location:
          $ref: '#/components/schemas/SharedGeoJsonPoint'
    RestaurantservicePartnerBrandDetails:
      type: object
      description: Detail of the brand/chain associated with the partner.
      properties:
        externalId:
          type: integer
          description: The external identifier of the brand.
        name:
          type: string
          description: The name of a brand.
    RestaurantservicePartnerEmailAddress:
      type: object
      description: Email contact addresses associated with the partner.
      properties:
        email:
          type: string
          description: Email address of the partner.
        label:
          type: string
          description: Label for the email (e.g., owner email, business email).
          enum:
            - ownerEmail
            - businessEmail
            - customerFacingEmail
        validatedAt:
          type: string
          format: date-time
          description: The timestamp when the phone number was validated.
    RestaurantservicePartnerInformationResponse:
      properties:
        id:
          description: Unique identifier of the partner in JET.
          type: string
        legacyIds:
          description: Consisting of legacy ids across platforms for backward compatibility of the downstream services.
          properties:
            takeawayId:
              description: Legacy Takeaway partner ID
              type: integer
            jeId:
              description: Legacy Just Eat partner ID
              type: integer
        name:
          description: Name of the partner in JET.
          type: string
        tenant:
          description: Two letter tenant code indicating what market the partner is in.
          type: string
        isTestPartner:
          description: Indicates if the partner is a test partner.
          type: boolean
        timeZone:
          description: The time zone of the partner location.
          type: string
        changedAt:
          description: The timestamp when the partner information was last updated.
          type: string
          format: date-time
        businessLogo:
          description: URL of the partner's logo image.
          type: string
          format: uri
        communicationLanguage:
          type: string
          description: A two-letter language code as defined by ISO 639-1.
          minLength: 2
          maxLength: 2
        shortDescription:
          description: Brief summary of the partner.
          type: string
        longDescription:
          description: Comprehensive detailed overview of the partner.
          type: string
        allergenUrl:
          description: URL pointing to the partner's official dietary and allergen information page.
          type: string
          format: uri
        addresses:
          type: array
          description: A list of addresses associated with the partner.
          items:
            $ref: '#/components/schemas/RestaurantservicePartnerAddress'
        emailAddresses:
          type: array
          description: Email contact addresses associated with the partner.
          items:
            $ref: '#/components/schemas/RestaurantservicePartnerEmailAddress'
        phoneNumbers:
          type: array
          description: Phone contact addresses associated with the partner.
          items:
            $ref: '#/components/schemas/RestaurantservicePartnerPhoneNumbers'
        brand:
          $ref: '#/components/schemas/RestaurantservicePartnerBrandDetails'
          description: Detail of the brand/chain associated with the partner.
        businessType:
          $ref: '#/components/schemas/RestaurantserviceBusinessTypeEnum'
          description: The business type of a partner.
        status:
          $ref: '#/components/schemas/RestaurantservicePartnerStatusEnum'
          description: The status of a partner.
        serviceTypes:
          type: array
          description: The service types allowed for a partner.
          items:
            $ref: '#/components/schemas/RestaurantserviceServiceTypesEnum'
        seoName:
          type: string
          description: The SEO name of the partner.
        generalSettings:
          type: object
          description: Indicates a group of partner settings/capabilities.
          properties:
            allowCourierTipping:
              description: Indicates if courier tipping is allowed for the partner.
              type: boolean
            allowOrderComments:
              description: Indicates if order comments are allowed for the partner.
              type: boolean
            allowItemSubstitutions:
              description: Indicates if item substitutions are allowed for the partner.
              type: boolean
            allowSelfClosing:
              description: Indicates whether the partner is allowed to close themselves.
              type: boolean
            excludeFromSearch:
              description: Indicates whether the partner should be excluded from search results.
              type: boolean
            showAddressOnline:
              type: boolean
              description: Showing the address on Web/APP when setting is enabled. (for Pickup orders - The restaurant's address must always be shown)
            allowPhoneNumberDisplayInEmail:
              type: boolean
              description: This setting shows or hides the phone number on the order confirmation email.
            excludeGoogleFoodOrder:
              type: boolean
              description: Determines whether the restaurant is available on the Google Food Ordering Platform.
            isVIPPartner:
              type: boolean
              description: Indicates whether the partner is a VIP one.
            showInvoiceAddressInMinisiteDetails:
              type: boolean
              description: Address used in the minisite's colophon (default is Restaurant Address).
            allowDoubleReceipt:
              type: boolean
              description: Indicates if double receipt are allowed for the partner
            enablePreOrderAtCheckout:
              type: boolean
              description: Enables scheduling future fulfilment of an order during the checkout process.
            enableSKUsToPrintonOrderpadReceipts:
              type: boolean
              description: Determines whether SKUs will print on the orderpad receipts. SKUs are the identification codes for products.
            enablePreOrderForFutureAvailability:
              type: boolean
              description: Enables ordering for service windows beyond the current operating period.
            enableCollection:
              type: boolean
              description: Determines whether the restaurant allow customers to collect their orders.
            includeInUnlimitedFreeDelivery:
              type: boolean
              description: Determines whether the partner is to be included for Customers using their unlimited free delivery benefit.
            enableMenuSync:
              type: boolean
              description: Enable Menu Sync.
            enableMenuAvailabilitiesAndServiceTimes:
              type: boolean
              description: Enable Menu Availabilities and Service Times.
            enableRestaurantMenuManagerInPartnerCentre:
              type: boolean
              description: Enable Restaurant Menu Manager in Partner Centre.
        taxonomies:
          type: object
          nullable: true
          description: Taxonomy associations for the partner, sourced from the tagging service.
          properties:
            verticals:
              type: array
              nullable: true
              description: List of vertical ULID associated with the partner.
              items:
                type: string
            cuisines:
              type: array
              nullable: true
              description: List of cuisine ULID associated with the partner.
              items:
                type: string
      description: Response containing details of the partner in JET.
      example:
        id: DACVSSQJ2F8T
        legacyIds:
          takeawayId: 273
          jeId: 987654
        name: Test Partner
        tenant: uk
        isTestPartner: false
        timeZone: Central European Standard Time
        changedAt: '2026-03-20 14:26:21.000000'
        businessLogo: https://images/chains/nl/subway/logo_465x320.png
        communicationLanguage: es
        status: active
        brand:
          externalId: 77483
          name: Test Brand
        addresses:
          - lines:
              - '123'
              - Test Street
            city: Testville
            postalCode: TE5 7ST
            country: uk
            location:
              type: point
              coordinates:
                - 51.501285
                - -0.142442
        businessType: restaurant
        serviceTypes:
          - delivery
          - collection
        shortDescription: Authentic Italian pizzeria
        longDescription: Bella Napoli brings the heart of Naples to your doorstep. Our kitchen follows traditional methods passed down through three generations,  ensuring every pizza has the perfect taste
        allergenUrl: https://www.bellanapoli-pizzas.com/nutrition/allergen-guide.pdf
        seoName: test-partner
        generalSettings:
          allowCourierTipping: true
          allowOrderComments: true
          allowItemSubstitutions: true
          excludeFromSearch: true
          allowSelfClosing: true
          showAddressOnline: true
          allowPhoneNumberDisplayInEmail: false
          excludeGoogleFoodOrder: true
          isVIPPartner: false
          showInvoiceAddressInMinisiteDetails: true
          allowDoubleReceipt: false
          enablePreOrderAtCheckout: false
          enableSKUsToPrintonOrderpadReceipts: true
          enablePreOrderForFutureAvailability: true
          enableCollection: false
          includeInUnlimitedFreeDelivery: true
          enableMenuSync: true
          enableMenuAvailabilitiesAndServiceTimes: true
          enableRestaurantMenuManagerInPartnerCentre: false
        taxonomies:
          verticals:
            - 01KABBNAAGT57WZJW04YY07MS2
            - 01KABBNAAGT57WZJW04YY07MS3
          cuisines:
            - 01KABBNAAGT57WZJW04YY07MS4
            - 01KABBNAAGT57WZJW04YY07MS0
      type: object
    RestaurantservicePartnerPhoneNumbers:
      type: object
      properties:
        number:
          type: string
          description: Phone number of the partner in E.164 format.
          pattern: ^\+[1-9]\d{1,14}$
        label:
          type: string
          description: Label for the phone number (e.g., owner phone, marketing phone).
          enum:
            - ownerPhone
            - businessPhone
            - ownerEmergencyPhone
            - alternativeBusinessPhone
            - emergencyPhone1
            - emergencyPhone2
            - mobilePhone
        validatedAt:
          type: string
          format: date-time
          description: The timestamp when the phone number was validated.
        isMobile:
          type: boolean
          description: Indicates if the phone number is a mobile number.
    RestaurantservicePartnerStatusEnum:
      description: The status of a partner.
      enum:
        - active
        - inactive
      type: string
    RestaurantserviceSearchPartnersResponse:
      properties:
        partners:
          type: array
          description: List of partners matching the search criteria
          items:
            $ref: '#/components/schemas/RestaurantservicePartnerInformationResponse'
        totalCount:
          type: integer
          format: int64
          description: Total number of partners matching the search criteria
        limit:
          type: integer
          description: Maximum number of results requested
        offset:
          type: integer
          description: Number of results skipped
      type: object
      description: Response containing search results for partners
      example:
        partners:
          - id: DACVSSQJ2F8T
            legacyIds:
              takeawayId: 273
              jeId: 987654
            name: Test Partner
            tenant: uk
            isTestPartner: false
            businessLogo: https://images/chains/nl/subway/logo_465x320.png
            communicationLanguage: es
            status: active
            brand:
              externalId: 77483
              name: Test Brand
            addresses:
              - lines:
                  - '123'
                  - Test Street
                city: Testville
                postalCode: TE5 7ST
                country: uk
                location:
                  type: point
                  coordinates:
                    - 51.501285
                    - -0.142442
            businessType: restaurant
            serviceTypes:
              - delivery
              - collection
            shortDescription: Authentic Italian pizzeria
            longDescription: Bella Napoli brings the heart of Naples to your doorstep
            allergenUrl: https://www.bellanapoli-pizzas.com/nutrition/allergen-guide.pdf
            seoName: test-partner
            emailAddresses:
              - address: contact@testpartner.com
                type: primary
            phoneNumbers:
              - number: '+441234567890'
                type: primary
            generalSettings:
              allowCourierTipping: true
              allowOrderComments: true
              allowItemSubstitutions: true
              excludeFromSearch: false
        totalCount: 1
        limit: 20
        offset: 0
    RestaurantserviceServiceTypesEnum:
      description: The service types allowed for a partner.
      enum:
        - delivery
        - collection
      type: string
    RestaurantsettingsRestaurantSettingsResponse:
      properties:
        isMenuManagementTeaserVisible:
          description: A value indicated whether menu management teaser should be shown on restaurant edit menu page
          type: boolean
      description: response containing settings of the restaurant in partner centre
      example:
        isMenuManagementTeaserVisible: false
      type: object
    RestaurantsignupApplicationState:
      description: The application state i.e. Open, Approved etc.
      enum:
        - OpenApplication
        - ManualInterventionRequired
        - ReadyForInitialReview
        - InitialReviewRejected
        - ReadyForFinalReview
        - FinalReviewRejected
        - Approved
      type: string
    RestaurantsignupApplicationSubmitResponse:
      properties:
        applicationState:
          description: The current application state i.e. Open, Approved etc.
          $ref: '#/components/schemas/RestaurantsignupApplicationState'
      type: object
    RestaurantsignupDeliveryType:
      description: Supported delivery type
      type: object
      properties:
        name:
          description: Delivery Type Name
          type: string
    RestaurantsignupDeliveryTypes:
      type: object
      properties:
        deliveryTypes:
          description: Supported delivery methods
          type: array
          items:
            $ref: '#/components/schemas/RestaurantsignupDeliveryType'
    RestaurantsignupDocument:
      properties:
        documentType:
          $ref: '#/components/schemas/RestaurantsignupDocumentType'
        documentMetadata:
          $ref: '#/components/schemas/RestaurantsignupDocumentMetadata'
      type: object
    RestaurantsignupDocumentContentType:
      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
    RestaurantsignupDocumentLinkResponse:
      properties:
        method:
          enum:
            - GET
            - PUT
            - DELETE
          description: The method the client should use when calling S3
          type: string
        headers:
          type: object
          description: Headers that will be passed when calling S3
          additionalProperties:
            type: string
        href:
          description: The signed URL for S3. It includes the random generated file name which is usually a GUID.
          type: string
        documentKey:
          description: The name of the document
          type: string
      type: object
      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
    RestaurantsignupDocumentMetadata:
      description: Metadata of document being added
      properties:
        dateAdded:
          description: When the document is added [YYYY-MM-DDThh:mm:ssZ (UTC)]
          format: date-time
          type: string
        contentType:
          description: Content type of the document
          $ref: '#/components/schemas/RestaurantsignupDocumentContentType'
        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
    RestaurantsignupDocumentRejectionType:
      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
    RestaurantsignupDocumentReviews:
      properties:
        rejectionReasons:
          maxItems: 10
          type: array
          minItems: 0
          items:
            properties:
              comment:
                description: Any other review comments
                type: string
              type:
                $ref: '#/components/schemas/RestaurantsignupDocumentRejectionType'
            type: object
          description: An array of rejection reasons
      type: object
    RestaurantsignupDocumentState:
      description: The state of a document
      enum:
        - NotAvailable
        - Received
        - ReadyForInitialReview
        - InitialToBeRejected
        - InitialNoIssuesFound
        - InitialReviewRejected
        - ReadyForFinalReview
        - FinalReviewNoIssuesFound
        - FinalReviewToBeRejected
        - FinalReviewRejected
        - Approved
      type: string
    RestaurantsignupDocumentStateUpdate:
      properties:
        documentState:
          description: The new state of the document
          $ref: '#/components/schemas/RestaurantsignupDocumentState'
          type: string
      type: object
    RestaurantsignupDocumentType:
      description: The type of the document
      enum:
        - Menu
        - PhotoId
        - AddressProof
        - FsaCertificate
        - Logo
        - OwnershipInfo
        - Shopfront
      type: string
    RestaurantsignupInitialRestaurantRequest:
      type: object
      required:
        - name
        - address
        - owner
      properties:
        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
            phoneNumber:
              description: The phone number of the restaurant owner
              type: string
            givenName:
              description: The first name of the restaurant owner
              type: string
            familyName:
              description: The last name of the restaurant owner
              type: string
          type: object
        address:
          description: The address of the restaurant
          properties:
            city:
              description: The name of the city the restaurant is located
              type: string
            postalCode:
              description: The post code the restaurant is located
              type: string
            lines:
              maxItems: 3
              type: array
              minItems: 1
              items:
                type: string
              description: The address lines the restaurant is located
          type: object
        geolocation:
          description: The latitude and longitude of the restaurant.
          $ref: '#/components/schemas/SharedGeoposition'
      example:
        name: Test Restaurant
        address:
          city: London
          postalCode: EC4M 7RF
          lines:
            - Fleet Place House
            - Fleet Place
        geolocation:
          latitude: 51.5074
          longitude: 0.1278
        owner:
          phoneNumber: '+44791231234'
          emailAddress: restaurant@example.com
    RestaurantsignupRestaurant:
      type: object
      properties:
        menu:
          description: The restaurant menu
          properties:
            requestedCuisines:
              maxItems: 2
              type: array
              minItems: 1
              items:
                type: string
              description: The restaurant cuisines
          type: object
        applicationState:
          description: The current application state of the restaurant
          $ref: '#/components/schemas/RestaurantsignupApplicationState'
        applicationMetadata:
          nullable: true
          description: Extra information about the restaurant, like the premises and ownership status
          properties:
            occupancyType:
              nullable: true
              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
              type: string
            applicationType:
              nullable: true
              description: The type of sign up application i.e. Standard, Non-Standard.
              enum:
                - Unknown
                - Standard
                - NonStandard
              type: string
            premiseType:
              nullable: true
              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
              type: string
          type: object
        lastUpdatedDate:
          description: When the restaurant was last updated [YYYY-MM-DDThh:mm:ssZ (UTC)]
          format: date-time
          type: string
        address:
          description: The address of the restaurant
          properties:
            city:
              description: The name of the city the restaurant is located
              type: string
            postalCode:
              description: The post code the restaurant is located
              type: string
            lines:
              maxItems: 3
              type: array
              minItems: 1
              items:
                type: string
              description: The address lines the restaurant is located
          type: object
        geolocation:
          description: The latitude and longitude of the restaurant.
          $ref: '#/components/schemas/SharedGeoposition'
        createdDate:
          description: When the restaurant was created [YYYY-MM-DDThh:mm:ssZ (UTC)]
          format: date-time
          type: string
        name:
          description: The name of the restaurant
          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
        bankDetails:
          description: Account holder information for the restaurant
          properties:
            bankAccountNumber:
              description: The bank account number
              type: string
            bankName:
              description: The name of the bank
              type: string
            accountHolderName:
              description: The name on the bank account
              type: string
            bankSortCode:
              description: The sort code
              type: string
          type: object
        hygiene:
          description: The food hygiene rating for the restaurant
          properties:
            rating:
              description: The rating score
              type: string
          type: object
        owner:
          description: The restaurant owner
          properties:
            emailAddress:
              description: The email address of the restaurant owner
              type: string
            phoneNumber:
              description: The phone number of the restaurant owner
              type: string
            givenName:
              description: The first name of the restaurant owner
              type: string
            familyName:
              description: The last name of the restaurant owner
              type: string
          type: object
      example:
        name: Test Restaurant
        applicationState: OpenApplication
        applicationMetadata:
          applicationType: NonStandard
          occupancyType: MultipleBusinessMultipleOwnership
          premiseType: Van
        createdDate: '2019-10-16T12:18:34Z'
        lastUpdatedDate: '2019-10-16T12:18:34Z'
        hygiene:
          rating: '4'
        fulfilment:
          type: DeliveryAndCollection
          description: The fulfillment options for the restaurant
        menu:
          requestedCuisines:
            - Greek
            - European
        bankDetails:
          accountHolderName: John Doe
          bankName: Best Bank
          bankSortCode: 12-34-56
          bankAccountNumber: '12345678'
        address:
          city: London
          postalCode: EC4M 7RF
          lines:
            - Fleet Place House
            - Fleet Place
        geolocation:
          latitude: 51.5074
          longitude: 0.1278
        owner:
          givenName: John
          familyName: Doe
          phoneNumber: '+44791231234'
          emailAddress: restaurant@example.com
    RestauranttasksAddress:
      type: object
      properties:
        address:
          type: string
          description: Street address
        city:
          type: string
          description: City name
        postalCode:
          type: string
          description: Postal/ZIP code
        latitude:
          type: number
          format: double
          description: Geographic latitude
        longitude:
          type: number
          format: double
          description: Geographic longitude
      required:
        - address
        - city
        - postalCode
        - latitude
        - longitude
    RestauranttasksClosedDays:
      type: object
      properties:
        monday:
          type: boolean
        tuesday:
          type: boolean
        wednesday:
          type: boolean
        thursday:
          type: boolean
        friday:
          type: boolean
        saturday:
          type: boolean
        sunday:
          type: boolean
      required:
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday
        - sunday
    RestauranttasksContactInfo:
      type: object
      properties:
        email:
          type: string
          description: Email address
        phoneNumber:
          type: string
          description: Phone number
    RestauranttasksCreateJustEatRestaurantTask:
      type: object
      properties:
        justEatId:
          type: string
          description: Just Eat identifier
        name:
          type: string
          description: Restaurant name
        shortName:
          type: string
          description: Short restaurant name
        location:
          $ref: '#/components/schemas/RestauranttasksJustEatRestaurantLocation'
        contactInfo:
          $ref: '#/components/schemas/RestauranttasksJustEatContactInfo'
        ownerInfo:
          $ref: '#/components/schemas/RestauranttasksJustEatOwnerInfo'
        restaurantHours:
          $ref: '#/components/schemas/RestauranttasksUpdateRestaurantHours'
        restaurantType:
          $ref: '#/components/schemas/RestauranttasksRestaurantType'
        foodPrep:
          $ref: '#/components/schemas/RestauranttasksFoodPrep'
        modifiedUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
        tenant:
          $ref: '#/components/schemas/RestauranttasksTenant'
      required:
        - justEatId
        - name
        - shortName
        - location
        - contactInfo
        - ownerInfo
        - restaurantHours
        - restaurantType
        - foodPrep
        - modifiedUser
    RestauranttasksCreateRestaurantBulkTask:
      type: object
      properties:
        priority:
          $ref: '#/components/schemas/RestauranttasksTaskPriority'
        dateType:
          $ref: '#/components/schemas/RestauranttasksTaskDateType'
        scheduledDate:
          type: integer
          format: int64
          description: Scheduled date as epoch milliseconds
        assignedUser:
          $ref: '#/components/schemas/RestauranttasksStrippedUser'
        modifiedUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
        note:
          type: string
          description: Task note
        type:
          $ref: '#/components/schemas/RestauranttasksTaskType'
        restaurants:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksRestaurantPartialInput'
          description: List of restaurants
        step:
          $ref: '#/components/schemas/RestauranttasksTaskStep'
        tenant:
          $ref: '#/components/schemas/RestauranttasksTenant'
      required:
        - priority
        - dateType
        - scheduledDate
        - modifiedUser
        - type
        - restaurants
    RestauranttasksCreateRestaurantHelpTask:
      type: object
      properties:
        restaurantId:
          type: string
          description: Restaurant identifier
        modifiedUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
        type:
          $ref: '#/components/schemas/RestauranttasksTaskType'
        step:
          $ref: '#/components/schemas/RestauranttasksTaskStep'
      required:
        - restaurantId
        - modifiedUser
        - type
    RestauranttasksCreateRestaurantHolidayHoursTask:
      type: object
      properties:
        provinces:
          type: array
          items:
            type: string
          uniqueItems: true
          description: Set of provinces
        modifiedUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
        holidayHours:
          $ref: '#/components/schemas/RestauranttasksHolidayHours'
        dueBy:
          type: integer
          format: int64
          description: Due by date as epoch milliseconds
      required:
        - provinces
        - modifiedUser
        - holidayHours
        - dueBy
    RestauranttasksCreateRestaurantTask:
      type: object
      properties:
        priority:
          $ref: '#/components/schemas/RestauranttasksTaskPriority'
        dateType:
          $ref: '#/components/schemas/RestauranttasksTaskDateType'
        scheduledDate:
          type: integer
          format: int64
          description: Scheduled date as epoch milliseconds
        assignedUser:
          $ref: '#/components/schemas/RestauranttasksStrippedUser'
        modifiedUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
        note:
          type: string
          description: Task note
        type:
          $ref: '#/components/schemas/RestauranttasksTaskType'
        restaurant:
          $ref: '#/components/schemas/RestauranttasksRestaurantPartialInput'
        step:
          $ref: '#/components/schemas/RestauranttasksTaskStep'
        orderId:
          type: string
          description: Associated order ID
        reviewStatus:
          $ref: '#/components/schemas/RestauranttasksReviewModifiedStatus'
        suggestedRestaurantId:
          type: string
          description: Suggested restaurant ID
        address:
          $ref: '#/components/schemas/RestauranttasksAddress'
        holidayId:
          type: string
          description: Holiday identifier
        tenant:
          $ref: '#/components/schemas/RestauranttasksTenant'
      required:
        - priority
        - dateType
        - scheduledDate
        - modifiedUser
        - type
        - restaurant
    RestauranttasksDayOfWeek:
      type: string
      enum:
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday
        - sunday
      description: Day of the week
    RestauranttasksErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message
        code:
          type: string
          description: Error code
        timestamp:
          type: integer
          format: int64
          description: Error timestamp
      required:
        - error
    RestauranttasksFoodPrep:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/RestauranttasksFoodPrepType'
        minutes:
          type: integer
          description: Preparation time in minutes
        defaultType:
          $ref: '#/components/schemas/RestauranttasksFoodPrepType'
        defaultMinutes:
          type: integer
          description: Default preparation time in minutes
      required:
        - type
        - minutes
        - defaultType
        - defaultMinutes
    RestauranttasksFoodPrepType:
      type: string
      enum:
        - skipAssisted
        - restaurantManaged
        - skipOverride
      description: Food preparation type
    RestauranttasksHolidayHours:
      type: object
      properties:
        startDate:
          type: string
          format: date
          description: Holiday start date
        endDate:
          type: string
          format: date
          description: Holiday end date
        holidayName:
          type: string
          description: Name of the holiday
      required:
        - startDate
        - endDate
        - holidayName
    RestauranttasksHours:
      type: object
      properties:
        minHour:
          type: integer
          description: Minimum hour (0-23)
        minMinute:
          type: integer
          description: Minimum minute (0-59)
        maxHour:
          type: integer
          description: Maximum hour (0-23)
        maxMinute:
          type: integer
          description: Maximum minute (0-59)
        dayOfWeek:
          $ref: '#/components/schemas/RestauranttasksDayOfWeek'
      required:
        - minHour
        - minMinute
        - maxHour
        - maxMinute
        - dayOfWeek
    RestauranttasksJustEatContactInfo:
      type: object
      properties:
        email:
          type: string
          description: Email address
        phoneNumber:
          type: string
          description: Phone number
      required:
        - email
        - phoneNumber
    RestauranttasksJustEatOwnerInfo:
      type: object
      properties:
        name:
          type: string
          description: Owner name
        email:
          type: string
          description: Owner email
        mobileNumber:
          type: string
          description: Mobile number
        appPortalAccess:
          type: boolean
          description: Has app portal access
        userName:
          type: string
          description: Username
        password:
          type: string
          description: Password
        appToken:
          type: string
          description: App token
      required:
        - name
        - email
        - mobileNumber
        - appPortalAccess
    RestauranttasksJustEatRestaurantLocation:
      type: object
      properties:
        name:
          type: string
          description: Location name
        address:
          type: string
          description: Street address
        latitude:
          type: number
          format: double
          description: Latitude
        longitude:
          type: number
          format: double
          description: Longitude
        city:
          type: string
          description: City where the restaurant is located
        postalCode:
          type: string
          description: Postal code
        specialInstructions:
          type: string
          description: Special instructions
        accessibilityTime:
          type: integer
          description: Accessibility time in minutes
      required:
        - name
        - address
        - latitude
        - longitude
        - city
        - postalCode
        - accessibilityTime
    RestauranttasksJustEatWeeklyHours:
      type: object
      properties:
        sunday:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksTimeRange'
        monday:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksTimeRange'
        tuesday:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksTimeRange'
        wednesday:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksTimeRange'
        thursday:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksTimeRange'
        friday:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksTimeRange'
        saturday:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksTimeRange'
      required:
        - sunday
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday
    RestauranttasksModifiedUser:
      type: object
      properties:
        id:
          type: string
          description: User identifier
        name:
          type: string
          description: User display name
        type:
          $ref: '#/components/schemas/RestauranttasksModifiedUserType'
        time:
          type: integer
          format: int64
          description: Epoch timestamp in milliseconds
      required:
        - id
        - name
        - type
    RestauranttasksModifiedUserType:
      type: string
      enum:
        - customer
        - restaurant
        - courier
        - admin
        - unknown
        - system
      description: Type of user who modified a resource
    RestauranttasksNote:
      type: object
      properties:
        note:
          type: string
          description: Note text
        user:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
      required:
        - note
        - user
    RestauranttasksOrderOptions:
      type: string
      enum:
        - asc
        - desc
      description: Sort order options
    RestauranttasksOwnerInfo:
      type: object
      properties:
        name:
          type: string
          description: Owner name
        mobileNumber:
          type: string
          description: Mobile number
    RestauranttasksProvinceHoliday:
      type: object
      properties:
        startDate:
          type: string
          format: date
          description: Start date
        endDate:
          type: string
          format: date
          description: End date
        holidayName:
          type: string
          description: Holiday name
        holidayId:
          type: string
          description: Holiday identifier
        province:
          type: string
          description: Province
        restaurantIds:
          type: array
          items:
            type: string
          description: Associated restaurant IDs
      required:
        - startDate
        - endDate
        - holidayName
        - holidayId
        - province
        - restaurantIds
    RestauranttasksProvinceHolidayList:
      type: object
      properties:
        totalFilteredRecords:
          type: integer
          description: Filtered record count
        provinceHolidays:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksProvinceHoliday'
          description: List of holidays
      required:
        - totalFilteredRecords
        - provinceHolidays
    RestauranttasksProvinceList:
      type: object
      properties:
        provinces:
          type: array
          items:
            type: string
          uniqueItems: true
          description: Set of provinces
      required:
        - provinces
    RestauranttasksReportType:
      type: string
      enum:
        - task
        - team
        - class
      description: Type of report
    RestauranttasksRestaurantClass:
      type: string
      enum:
        - a
        - b
        - c
        - d
        - e
        - none
      description: Classification of a restaurant
    RestauranttasksRestaurantHolidayList:
      type: object
      properties:
        restaurantId:
          type: string
          description: Restaurant identifier
        holidays:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksProvinceHoliday'
          description: List of holidays
      required:
        - restaurantId
        - holidays
    RestauranttasksRestaurantPartialInput:
      type: object
      properties:
        id:
          type: string
          description: Restaurant identifier
        name:
          type: string
          description: Restaurant name
        timezone:
          type: string
          description: Timezone
        city:
          type: string
          description: City name
        restaurantClass:
          $ref: '#/components/schemas/RestauranttasksRestaurantClass'
        justEat:
          type: boolean
          description: Is Just Eat restaurant
        preferredLocale:
          type: string
          description: Preferred locale (e.g., en, fr)
        contactInfo:
          $ref: '#/components/schemas/RestauranttasksContactInfo'
        ownerInfo:
          $ref: '#/components/schemas/RestauranttasksOwnerInfo'
        closedDays:
          $ref: '#/components/schemas/RestauranttasksClosedDays'
        openingHours:
          $ref: '#/components/schemas/RestauranttasksWeeklyHours'
        closingHours:
          $ref: '#/components/schemas/RestauranttasksWeeklyHours'
      required:
        - id
        - name
        - timezone
        - city
        - restaurantClass
        - justEat
    RestauranttasksRestaurantPartialOutput:
      type: object
      properties:
        id:
          type: string
          description: Restaurant identifier
        name:
          type: string
          description: Restaurant name
        timezone:
          type: string
          description: Timezone
        city:
          type: string
          description: City where the restaurant is located
        restaurantClass:
          $ref: '#/components/schemas/RestauranttasksRestaurantClass'
        justEat:
          type: boolean
          description: Is Just Eat
        preferredLocale:
          type: string
          description: Preferred locale
        contactInfo:
          $ref: '#/components/schemas/RestauranttasksContactInfo'
        ownerInfo:
          $ref: '#/components/schemas/RestauranttasksOwnerInfo'
        hours:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksHours'
          description: Hours
      required:
        - id
        - name
        - timezone
        - city
        - restaurantClass
        - justEat
    RestauranttasksRestaurantTask:
      type: object
      properties:
        id:
          type: string
          description: Task identifier
        priority:
          $ref: '#/components/schemas/RestauranttasksTaskPriority'
        status:
          $ref: '#/components/schemas/RestauranttasksTaskStatus'
        dueBy:
          type: integer
          format: int64
          description: Due by date as epoch milliseconds
        scheduledAt:
          type: integer
          format: int64
          description: Scheduled at date as epoch milliseconds
        assignedUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
        createdByUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
        modifiedByUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
        notes:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksNote'
          description: List of notes
        closedTime:
          type: integer
          format: int64
          description: Closed time as epoch milliseconds
        restaurant:
          $ref: '#/components/schemas/RestauranttasksRestaurantPartialOutput'
        type:
          $ref: '#/components/schemas/RestauranttasksTaskType'
        step:
          $ref: '#/components/schemas/RestauranttasksTaskStep'
        orderId:
          type: string
          description: Order ID
        reviewStatus:
          $ref: '#/components/schemas/RestauranttasksReviewModifiedStatus'
        address:
          $ref: '#/components/schemas/RestauranttasksAddress'
        suggestedRestaurantId:
          type: string
          description: Suggested restaurant ID
        holidayId:
          type: string
          description: Holiday ID
        tenant:
          $ref: '#/components/schemas/RestauranttasksTenant'
      required:
        - id
        - priority
        - status
        - createdByUser
        - modifiedByUser
        - notes
        - closedTime
        - restaurant
        - type
        - tenant
    RestauranttasksRestaurantTaskList:
      type: object
      properties:
        totalRecords:
          type: integer
          description: Total record count
        totalFilteredRecords:
          type: integer
          description: Filtered record count
        restaurantTasks:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksRestaurantTask'
          description: List of tasks
      required:
        - totalRecords
        - totalFilteredRecords
        - restaurantTasks
    RestauranttasksRestaurantTaskReport:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/RestauranttasksReportType'
        report:
          type: object
          additionalProperties:
            type: array
            items:
              type: object
              additionalProperties:
                type: integer
          description: Report data grouped by key
      required:
        - type
        - report
    RestauranttasksRestaurantTaskType:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/RestauranttasksTaskType'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksTaskStep'
          uniqueItems: true
          description: Valid steps for this type
      required:
        - type
        - steps
    RestauranttasksRestaurantTaskWithAssociated:
      type: object
      properties:
        task:
          $ref: '#/components/schemas/RestauranttasksRestaurantTask'
        associatedTasks:
          type: array
          items:
            $ref: '#/components/schemas/RestauranttasksRestaurantTask'
          description: Associated tasks
      required:
        - task
        - associatedTasks
    RestauranttasksRestaurantType:
      type: string
      enum:
        - fullService
        - quickService
        - grocery
        - alcohol
        - convenienceStore
        - cannabis
        - skipExpressLane
        - pharmacy
        - retail
        - petStore
        - flowers
        - beauty
        - kidsAndBaby
      description: Type of restaurant
    RestauranttasksReviewModifiedStatus:
      type: string
      enum:
        - approved
        - rejected
        - pendingTask
      description: Status of a review
    RestauranttasksStrippedUser:
      type: object
      properties:
        id:
          type: string
          description: User identifier
        name:
          type: string
          description: User name
      required:
        - id
        - name
    RestauranttasksTaskDateType:
      type: string
      enum:
        - dueBy
        - scheduledAt
      description: Type of date associated with a task
    RestauranttasksTaskPriority:
      type: string
      enum:
        - high
        - medium
        - low
      description: Priority level of a task
    RestauranttasksTaskStatus:
      type: string
      enum:
        - open
        - closed
      description: Status of a task
    RestauranttasksTaskStep:
      type: string
      enum:
        - typing
        - programming
        - validating
        - pitch
        - claimGplus
        - followUp
        - build
        - waitingForRestaurant
        - managementReview
        - waitingForCustomer
        - needsToBeEdited
        - needsQa
        - needsToBePosted
        - needsToBeBilled
        - reviewMssMenuChangeRequest
        - reviewMssMenuAndImageChangeRequest
        - reviewMssPublishedMenuChange
        - reviewMssPublishedMenuAndImageChange
      description: Step within a task workflow
    RestauranttasksTaskType:
      type: string
      enum:
        - changeActiveRestaurantMenu
        - createNewRestaurantMenu
        - newJustEatRestaurant
        - reviewMssChangeRequest
        - reviewMssPublishedChange
      description: Type of restaurant task (non-deprecated types only)
    RestauranttasksTaskUrgency:
      type: string
      enum:
        - OVERDUE
        - DUE_TODAY
        - DUE_WITHIN_7_DAYS
      description: Urgency level of a task
    RestauranttasksTeam:
      type: string
      enum:
        - ONBOARDING
        - RESTAURANT_SUCCESS
        - CONTENT
      description: Team filter for reports
    RestauranttasksTenant:
      type: string
      description: Tenant identifier
      x-assumption: External enum from ca.skipthedishes.core.Tenant
    RestauranttasksTime:
      type: object
      properties:
        hour:
          type: integer
          minimum: 0
          maximum: 23
          description: Hour (0-23)
        minute:
          type: integer
          minimum: 0
          maximum: 59
          description: Minute (0-59)
      required:
        - hour
        - minute
    RestauranttasksTimeRange:
      type: object
      properties:
        start:
          $ref: '#/components/schemas/RestauranttasksTime'
        end:
          $ref: '#/components/schemas/RestauranttasksTime'
      required:
        - start
        - end
    RestauranttasksUnconfirmedRestaurantHoliday:
      type: object
      properties:
        isTaskOpen:
          type: boolean
          description: Is task open flag
        holiday:
          $ref: '#/components/schemas/RestauranttasksProvinceHoliday'
      required:
        - isTaskOpen
    RestauranttasksUpdateRestaurantBulkTask:
      type: object
      properties:
        taskIds:
          type: array
          items:
            type: string
          description: List of task IDs to update
        assignedUser:
          $ref: '#/components/schemas/RestauranttasksStrippedUser'
        status:
          $ref: '#/components/schemas/RestauranttasksTaskStatus'
        unassign:
          type: boolean
          description: Whether to remove the task assignment
        modifiedUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
        note:
          type: string
          description: Task note
      required:
        - taskIds
        - modifiedUser
    RestauranttasksUpdateRestaurantHours:
      type: object
      properties:
        hours:
          $ref: '#/components/schemas/RestauranttasksJustEatWeeklyHours'
        modifiedUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
      required:
        - hours
    RestauranttasksUpdateRestaurantTask:
      type: object
      properties:
        priority:
          $ref: '#/components/schemas/RestauranttasksTaskPriority'
        dateType:
          $ref: '#/components/schemas/RestauranttasksTaskDateType'
        scheduledDate:
          type: integer
          format: int64
          description: Scheduled date as epoch milliseconds
        assignedUser:
          $ref: '#/components/schemas/RestauranttasksStrippedUser'
        modifiedUser:
          $ref: '#/components/schemas/RestauranttasksModifiedUser'
        note:
          type: string
          description: Task note
        status:
          $ref: '#/components/schemas/RestauranttasksTaskStatus'
        accessedTime:
          type: integer
          format: int64
          description: Last accessed time as epoch milliseconds
        type:
          $ref: '#/components/schemas/RestauranttasksTaskType'
        step:
          $ref: '#/components/schemas/RestauranttasksTaskStep'
        orderId:
          type: string
          description: Associated order ID
        reviewStatus:
          $ref: '#/components/schemas/RestauranttasksReviewModifiedStatus'
      required:
        - priority
        - dateType
        - scheduledDate
        - modifiedUser
        - status
        - accessedTime
        - type
    RestauranttasksWeeklyHours:
      type: object
      properties:
        monday:
          type: string
          format: time
          description: Monday time (HH:mm)
        tuesday:
          type: string
          format: time
          description: Tuesday time (HH:mm)
        wednesday:
          type: string
          format: time
          description: Wednesday time (HH:mm)
        thursday:
          type: string
          format: time
          description: Thursday time (HH:mm)
        friday:
          type: string
          format: time
          description: Friday time (HH:mm)
        saturday:
          type: string
          format: time
          description: Saturday time (HH:mm)
        sunday:
          type: string
          format: time
          description: Sunday time (HH:mm)
    RestoorderflmtnotificationserviceAcceptOrder:
      type: object
      description: Accept order asynchronously
      required:
        - handler
        - timeAccepted
        - acceptedDevice
        - orderChangeLogDetails
        - orderId
      properties:
        handler:
          type: string
          description: Handler name
          example: John Doe
        timeAccepted:
          type: integer
          format: int64
          description: Acceptance timestamp (epoch milliseconds)
        acceptedDevice:
          $ref: '#/components/schemas/RestoorderflmtnotificationserviceAcceptedDevice'
        orderChangeLogDetails:
          $ref: '#/components/schemas/RestoorderflmtnotificationserviceOrderChangeLogDetails'
        orderId:
          type: string
          format: uuid
          description: Order identifier
        orderType:
          type: string
          enum:
            - delivery
            - pickup
          description: Order type enumeration
    RestoorderflmtnotificationserviceAcceptedDevice:
      type: string
      enum:
        - updatedApp
        - olderApp
        - portal
        - liveOps
      description: Device type used to accept order
    RestoorderflmtnotificationserviceAccuracy:
      type: string
      enum:
        - accurate
        - inaccurate
        - unsure
      description: Location accuracy enumeration
    RestoorderflmtnotificationserviceActionIdTenantPair:
      type: object
      description: Action ID and tenant pair for call termination
      required:
        - actionId
        - tenant
      properties:
        actionId:
          type: string
          description: Action identifier
          example: action-123
        tenant:
          type: string
          description: Tenant identifier
          example: skipthedishes
    RestoorderflmtnotificationserviceAutoAcceptNeedMoreTime:
      type: object
      description: Auto-accept order that needs additional preparation time
      required:
        - orderId
        - needMoreTime
      properties:
        orderId:
          type: string
          format: uuid
          description: Order identifier
          example: 3e661287-75ee-449c-b863-106931fbbcce
        needMoreTime:
          type: integer
          description: Additional minutes needed
          example: 15
          minimum: 1
          maximum: 120
    RestoorderflmtnotificationserviceCallsToTerminate:
      type: object
      description: List of calls to terminate
      required:
        - actionIdTenantPairs
      properties:
        actionIdTenantPairs:
          type: array
          items:
            $ref: '#/components/schemas/RestoorderflmtnotificationserviceActionIdTenantPair'
    RestoorderflmtnotificationserviceCourierHoldNotification:
      type: object
      description: Scheduled task for courier hold notification
      required:
        - orderId
        - restaurantId
      properties:
        orderId:
          type: string
          format: uuid
          description: Order identifier
        restaurantId:
          type: string
          format: uuid
          description: Restaurant identifier
      x-assumption: Fields inferred from service usage
    RestoorderflmtnotificationserviceCreateCallInOrder:
      type: object
      description: Create a new call-in order
      required:
        - subtotal
        - customerName
        - customerPhone
        - customerAddress
        - customerCity
        - customerProvince
        - restaurantId
        - customerEmail
        - customerPostalCode
        - customerId
        - longitude
        - latitude
        - accuracy
        - foodHandler
        - paymentMethod
        - userId
        - userName
      properties:
        acceptedTime:
          type: integer
          format: int64
          description: Acceptance timestamp (epoch milliseconds)
        subtotal:
          type: integer
          description: Order subtotal in cents
          example: 2550
        customerName:
          type: string
          description: Customer name
          example: John Doe
        customerPhone:
          type: string
          description: Customer phone number
          example: '+12045551234'
        customerAddress:
          type: string
          description: Customer address
          example: 123 Main St
        customerAddress2:
          type: string
          description: Customer address line 2
          example: Apt 4B
        customerCity:
          type: string
          description: Customer city
          example: Winnipeg
        customerProvince:
          type: string
          description: Customer province
          example: MB
        specialInstructions:
          type: string
          description: Special delivery instructions
          example: Ring doorbell
        restaurantId:
          type: string
          format: uuid
          description: Restaurant identifier
        customerEmail:
          type: string
          format: email
          description: Customer email
          example: john.doe@example.com
        customerPostalCode:
          type: string
          description: Customer postal code
          example: R3C 0A5
        customerId:
          type: string
          description: Customer identifier
        longitude:
          type: number
          format: double
          description: Delivery location longitude
          example: -97.1384
        latitude:
          type: number
          format: double
          description: Delivery location latitude
          example: 49.8951
        accuracy:
          $ref: '#/components/schemas/RestoorderflmtnotificationserviceAccuracy'
        tip:
          type: integer
          description: Tip amount in cents
          example: 500
        requestedTime:
          type: integer
          format: int64
          description: Requested delivery time (epoch milliseconds)
        foodHandler:
          type: string
          description: Food handler name
        acceptedDevice:
          $ref: '#/components/schemas/RestoorderflmtnotificationserviceAcceptedDevice'
        paymentMethod:
          type: string
          description: Payment method
          example: CREDIT_CARD
        userId:
          type: string
          description: User identifier who created the order
        userName:
          type: string
          description: User name who created the order
    RestoorderflmtnotificationserviceEarlyArrivalCourierClose:
      type: object
      description: Scheduled task for early arrival courier notification
      required:
        - orderId
        - restaurantId
      properties:
        orderId:
          type: string
          format: uuid
          description: Order identifier
        restaurantId:
          type: string
          format: uuid
          description: Restaurant identifier
      x-assumption: Fields inferred from service usage
    RestoorderflmtnotificationserviceFailedToSendToKitchen:
      type: object
      description: JustEat order that failed to send to kitchen POS
      required:
        - orderId
        - restaurantId
      properties:
        orderId:
          type: string
          format: uuid
          description: Order identifier
        restaurantId:
          type: string
          format: uuid
          description: Restaurant identifier
    RestoorderflmtnotificationserviceInteraction:
      type: object
      description: Twilio phone masking interaction callback
      required:
        - interactionSessionSid
        - interactionDateUpdated
        - duration
        - inboundResourceStatus
        - outboundResourceStatus
      properties:
        interactionSessionSid:
          type: string
          description: Twilio session SID
          example: KCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        interactionDateUpdated:
          type: string
          format: date-time
          description: Interaction update timestamp (ISO 8601)
        duration:
          type: integer
          description: Interaction duration in seconds
          example: 45
        inboundResourceStatus:
          type: string
          description: Inbound resource status
          example: completed
        outboundResourceStatus:
          type: string
          description: Outbound resource status
          example: completed
    RestoorderflmtnotificationserviceMessage:
      type: object
      description: Push notification message to send to a user
      required:
        - userId
        - userType
        - payload
      properties:
        userId:
          type: string
          description: User identifier
          example: user-123
        messageId:
          type: string
          description: Optional message identifier
          example: msg-456
        userType:
          $ref: '#/components/schemas/RestoorderflmtnotificationserviceUserType'
        payload:
          type: object
          description: Message payload
          additionalProperties:
            type: string
          example:
            key1: value1
            key2: value2
        androidPayload:
          type: object
          description: Android-specific payload
          additionalProperties:
            type: string
        iosPayload:
          type: object
          description: iOS-specific payload
          additionalProperties:
            type: string
        title:
          type: string
          description: Notification title
          example: New Order
        body:
          type: string
          description: Notification body
          example: You have a new order
        iosAlert:
          type: boolean
          description: iOS alert flag
          default: true
        iosSound:
          type: boolean
          description: iOS sound flag
          default: true
        iosContentAvailable:
          type: boolean
          description: iOS content available flag
          default: true
    RestoorderflmtnotificationserviceOrderChangeLogDetails:
      type: object
      description: Order change log details for audit trail
      required:
        - userId
        - userName
        - userType
      properties:
        userId:
          type: string
          description: User identifier
        userName:
          type: string
          description: User name
        userType:
          type: string
          enum:
            - restaurantUser
            - customer
            - admin
          description: User type
    RestoorderflmtnotificationserviceRestaurantOutboundNumber:
      type: object
      description: Restaurant outbound phone number configuration
      required:
        - restaurantId
        - outboundNumber
        - setPrimary
      properties:
        restaurantId:
          type: string
          format: uuid
          description: Restaurant identifier
        outboundNumber:
          type: string
          description: Outbound phone number
          example: '+12045551234'
        numberNickName:
          type: string
          description: Optional nickname for the number
          example: Main Line
        setPrimary:
          type: boolean
          description: Set as primary outbound number
          default: false
    RestoorderflmtnotificationserviceUserType:
      type: string
      enum:
        - courier
        - admin
        - restaurant
        - customer
        - unknown
      description: User type enumeration
    RetailMediaAssetUrls:
      title: Asset URLs
      description: An object comprising still and animated image URLs.
      type: object
      required:
        - imageUrlPortrait
        - imageUrlLandscape
      properties:
        imageUrlPortrait:
          description: URL for the static portrait image.
          type: string
          format: uri
        imageUrlLandscape:
          description: URL for the static landscape image.
          type: string
          format: uri
        animationUrlPortrait:
          description: URL for the animated portrait asset.
          type: string
          nullable: true
          format: uri
        animationUrlLandscape:
          description: URL for the animated landscape asset.
          type: string
          nullable: true
          format: uri
    RetailMediaBannerItem:
      title: Banner Item
      type: object
      required:
        - title
        - imageUrl
        - message
        - actionText
        - targets
      properties:
        title:
          description: The title for the banner.
          type: string
        imageUrl:
          description: URL for the banner image.
          type: string
          format: uri
          deprecated: true
        imageUrlWide:
          description: URL for the wide banner image.
          type: string
          format: uri
          deprecated: true
        message:
          description: The message for the banner.
          type: string
        actionText:
          description: The text to be displayed with the action.
          type: string
        targets:
          description: A list of targets for the banner action.
          type: array
          items:
            type: object
            $ref: '#/components/schemas/RetailMediaBannerTarget'
        assetUrls:
          description: An object comprising still and animated image URLs.
          type: object
          $ref: '#/components/schemas/RetailMediaAssetUrls'
    RetailMediaBannerItemAction:
      title: Banner Item Action
      description: Action to be triggered.
      type: object
      required:
        - targets
      properties:
        text:
          description: The text to be displayed with the action.
          type: string
        targets:
          description: A list of targets for the action.
          type: array
          items:
            type: object
            required:
              - type
            properties:
              type:
                description: The type of action.
                type: string
                enum:
                  - url
                  - filter
                  - partnerMenu
                  - vertical
                  - copyCode
              value:
                description: The value to be used with the action type specified.
                type: string
        trackingInfo:
          type: object
          $ref: '#/components/schemas/RetailMediaBannerItemActionTrackingInfo'
    RetailMediaBannerItemActionTrackingInfo:
      title: Banner Item Action Tracking Information
      description: Tracking information for client applications.
      type: object
      properties:
        filters:
          description: A list of filters used for the action.
          type: array
          items:
            type: string
    RetailMediaBannerItemV2:
      title: Banner Item
      type: object
      required:
        - source
        - type
        - title
        - message
        - theme
        - imageUrl
        - primaryAction
        - auction
        - position
      properties:
        source:
          description: The source of the banner.
          type: string
          enum:
            - displayAds
        type:
          description: The type of the banner used for styling.
          type: string
          enum:
            - pastel
            - tallAndWide
            - shortAndWide
        title:
          description: The title for the banner.
          type: string
        message:
          description: The message for the banner.
          type: string
        theme:
          description: The theme style for the banner.
          type: string
        imageUrl:
          description: URL for the banner image.
          type: string
          format: uri
        imageUrlWide:
          description: URL for the wide banner image.
          type: string
          format: uri
        primaryAction:
          type: object
          $ref: '#/components/schemas/RetailMediaBannerItemAction'
        auction:
          description: A dictionary of campaign ids and related tracking information.
          type: object
          additionalProperties:
            x-additionalPropertiesName: topSortCampaignId
            type: object
            description: A dictionary of partners and their related auction id.
            additionalProperties:
              x-additionalPropertiesName: partnerId
              type: string
        position:
          $ref: '#/components/schemas/RetailMediaBannerPosition'
      example:
        source: displayAds
        type: pastel
        title: Relax, delivery is on us
        message: Enjoy free pizza delivery and more… T&Cs apply
        theme: berry
        imageUrl: http://img.png
        imageUrlWide: http://img_wide.png
        primaryAction:
          text: Find out more
          targets:
            - type: filter
              value: '5089576'
          trackingInfo:
            filters:
              - '5089576'
        auction:
          campaign123:
            partner123: auction123
            partner456: auction456
        position:
          web: 4
          app: 3
    RetailMediaBannerPosition:
      title: Banner Position
      type: object
      required:
        - web
        - app
      properties:
        web:
          description: Web banner position 4 in partner list.
          type: integer
        app:
          description: App banner position 3 in partner list.
          type: integer
    RetailMediaBannerTarget:
      title: Banner Target
      type: object
      required:
        - type
        - value
      properties:
        type:
          description: The type of banner target.
          type: string
          enum:
            - landingPage
            - menu
            - chain
        value:
          description: The value associated with the banner target.
          type: string
    RetailMediaBannerTargetType:
      type: string
      description: The type of target for a banner.
      enum:
        - landingPage
        - menu
        - chain
        - url
    RetailMediaBrandPartner:
      title: Brand Partner
      type: object
      required:
        - partnerId
      properties:
        brandName:
          description: The name of the brand.
          type: string
          nullable: true
        partnerId:
          description: The id of the partner associated with the brand.
          type: string
      example:
        brandName: BrandA
        partnerId: partner123
    RetailMediaCampaignItem:
      title: Campaign Item
      description: A campaign item for display ads.
      type: object
      required:
        - partners
        - mealDealPartners
        - auctionId
        - rank
        - campaignId
      properties:
        partners:
          description: A list partner campaigns.
          type: array
          items:
            type: object
            $ref: '#/components/schemas/RetailMediaPartnerCampaign'
        mealDealPartners:
          description: A list of meal deal partner identifiers.
          type: array
          items:
            type: string
        heroImage:
          type: object
          $ref: '#/components/schemas/RetailMediaHeroImage'
          nullable: true
        banner:
          type: object
          $ref: '#/components/schemas/RetailMediaBannerItem'
          nullable: true
        auctionId:
          description: The auction identifier.
          type: string
        rank:
          description: The rank of the campaign in the auction.
          type: integer
          minimum: 1
        campaignId:
          description: The campaign identifier.
          type: string
        brandName:
          description: The brand name associated with the campaign.
          type: string
          nullable: true
    RetailMediaCharge:
      description: A single charge event to be submitted for processing.
      type: object
      required:
        - eventId
        - timeStamp
        - data
      properties:
        eventId:
          type: string
          format: uuid
          description: Unique identifier for this event.
          example: 550e8400-e29b-41d4-a716-446655440000
        timeStamp:
          type: string
          format: date-time
          description: ISO 8601 timestamp indicating when the event occurred.
          example: '2026-01-19T17:04:00Z'
        data:
          type: object
          required:
            - chargeId
            - partnerId
            - campaignId
            - amount
            - currency
          properties:
            chargeId:
              type: string
              description: Unique identifier for the charge from the external platform.
              example: ch_123456789
            partnerId:
              type: string
              description: Unique identifier for the partner associated with the charge.
              example: vnd_987654321
            campaignId:
              type: string
              description: Unique identifier for the campaign from the external platform.
              example: cmp_topsort_555
            amount:
              type: integer
              description: The charge amount in the minor unit of the currency (e.g., cents for USD, pence for GBP).
              example: 1000
            currency:
              type: string
              description: ISO 4217 currency code for the charge amount.
              pattern: ^[A-Z]{3}$
              example: GBP
            description:
              type: string
              nullable: true
              description: Optional human-readable description providing additional context for the charge.
              example: CPC charge for sponsored listing click
            metadata:
              type: object
              nullable: true
              description: Optional key-value pairs for platform-specific data such as wallet ID and charge type.
              additionalProperties:
                type: string
              example:
                walletId: wlt_abc123
                chargeType: CPA
    RetailMediaChargesRequest:
      description: Request body containing an array of charges to be processed.
      type: array
      items:
        $ref: '#/components/schemas/RetailMediaCharge'
      minItems: 1
      maxItems: 1000
      example:
        - eventId: 550e8400-e29b-41d4-a716-446655440000
          timeStamp: '2026-01-19T17:04:00Z'
          data:
            chargeId: ch_123456789
            partnerId: vnd_987654321
            campaignId: cmp_topsort_555
            amount: 1000
            currency: GBP
            description: CPC charge for sponsored listing click
            metadata:
              walletId: wlt_abc123
              chargeType: CPA
        - eventId: 550e8400-e29b-41d4-a716-446655440001
          timeStamp: '2026-01-19T17:05:00Z'
          data:
            chargeId: ch_123456790
            partnerId: vnd_987654322
            campaignId: cmp_topsort_556
            amount: 550
            currency: GBP
            description: CPM charge for sponsored listing impression
            metadata:
              walletId: wlt_abc124
              chargeType: CPM
    RetailMediaChargesResponse:
      description: Response indicating the result of processing the submitted charges.
      type: object
      required:
        - accepted
        - message
      properties:
        accepted:
          type: integer
          description: The number of charges successfully accepted for processing.
          example: 2
        message:
          type: string
          description: A message describing the result of the operation.
          example: Charges accepted for processing
    RetailMediaGetBasketRecommendationsRequest:
      type: object
      title: Get Basket Recommendations Request
      additionalProperties: false
      description: The request payload for running a basket recommendations auction.
      properties:
        slots:
          description: The number of auction slots to request. Defaults to the configured maximum if not provided.
          type: integer
          nullable: true
          minimum: 1
        slotName:
          description: The slot name. Use "pdp" to request the product detail page placement.
          type: string
          nullable: true
      example:
        slots: 3
        slotName: pdp
    RetailMediaGetBasketRecommendationsResponse:
      type: object
      title: Get Basket Recommendations Response
      description: Response from the basket recommendations endpoint. Contains auction-winning products for the retail media basket recommendations placement.
      additionalProperties: false
      required:
        - winners
      properties:
        winners:
          description: Auction-winning products for the basket recommendations placement. Empty array when no winners are returned.
          type: array
          items:
            type: object
            title: Basket Recommendations Winner
            description: A single product selected by the retail media auction as a basket recommendation.
            required:
              - id
              - resolvedBidId
              - campaignId
            properties:
              id:
                description: The product identifier.
                type: string
              resolvedBidId:
                description: The winning bid identifier from the auction.
                type: string
              campaignId:
                description: The campaign identifier that won this auction slot.
                type: string
      example:
        winners:
          - id: product-123
            resolvedBidId: bid-abc456
            campaignId: campaign-789
          - id: product-456
            resolvedBidId: bid-def789
            campaignId: campaign-789
    RetailMediaHeroImage:
      title: Hero Image
      type: object
      required:
        - assetId
        - assetText
        - assetSubText
        - campaignId
        - contentType
        - resolvedBidId
        - assetUrl
      properties:
        assetId:
          description: The asset identifier.
          type: string
        assetText:
          description: The asset text.
          type: string
        assetAltText:
          description: The asset alt text.
          type: string
          nullable: true
        assetSubText:
          description: The asset sub text.
          type: string
        campaignId:
          description: The campaign identifier.
          type: string
        contentType:
          description: The content type of the asset.
          type: string
        resolvedBidId:
          description: The resolved bid identifier.
          type: string
        assetUrl:
          description: The URL of the asset.
          type: string
    RetailMediaMidrollBannerRequest:
      type: object
      title: Midroll Banner Request
      additionalProperties: false
      description: The request payload for creating a The midroll banner auction.
      required:
        - ids
      properties:
        ids:
          description: A list of partner ids to attribute campaigns to.
          type: array
          items:
            type: string
          nullable: false
        device:
          description: The device from which the request originated.
          type: string
          enum:
            - mobile
            - desktop
          nullable: false
      example:
        ids:
          - partner123
          - partner456
        device: mobile
    RetailMediaMidrollBannerRequestV2:
      type: object
      title: Midroll Banner Request V2
      additionalProperties: false
      description: The request payload for creating a The midroll banner auction.
      required:
        - partners
        - searchTerm
      properties:
        partners:
          description: An ordered list of partners and their associated brand.
          items:
            $ref: '#/components/schemas/RetailMediaBrandPartner'
          type: array
          nullable: false
        searchTerm:
          description: The search text used to trigger matching campaigns.
          type: string
          minLength: 1
          maxLength: 128
          nullable: false
      example:
        searchTerm: pizza
        partners:
          - partnerId: partner123
            brandName: BrandA
          - partnerId: partner456
            brandName: BrandB
    RetailMediaMidrollBannerResponse:
      type: object
      title: Midroll Banner Response
      description: The The midroll banner endpoint response.
      additionalProperties: false
      required:
        - campaigns
        - availableCampaignIds
      properties:
        availableCampaignIds:
          description: A list of available campaign ids.
          type: array
          items:
            type: string
        campaigns:
          description: A dictionary of campaign ids and related campaign details.
          type: object
          additionalProperties:
            x-additionalPropertiesName: campaign id
            $ref: '#/components/schemas/RetailMediaCampaignItem'
        webViewLink:
          description: A link to a web view template for rendering banners
          type: string
          format: uri
    RetailMediaMidrollBannerResponseV2:
      type: object
      title: Midroll Banner Response V2
      description: The The midroll banner endpoint response.
      additionalProperties: false
      required:
        - banner
      properties:
        banner:
          description: The winning banner from running an auction.
          type: object
          additionalProperties:
            x-additionalPropertiesName: banner id
            $ref: '#/components/schemas/RetailMediaBannerItemV2'
      example:
        banner:
          banner789:
            source: displayAds
            type: pastel
            title: Special Offer
            message: Get 20% off your next purchase!
            theme: berry
            imageUrl: http://img.png
            imageHeight: 200
            imageUrlWide: http://img_wide.png
            primaryAction:
              text: Find out more
              targets:
                - type: filter
                  value: '5089576'
              trackingInfo:
                filters:
                  - '5089576'
            auction:
              campaign123:
                partner123: auction123
                partner456: auction456
            position:
              web: 4
              app: 3
    RetailMediaPartnerCampaign:
      title: Partner Campaign
      type: object
      required:
        - partnerId
        - resolvedBidId
      properties:
        partnerId:
          description: The partner identifier.
          type: string
        resolvedBidId:
          description: The resolved bid identifier.
          type: string
    RetailMediaPostOrderAdsResponse:
      type: object
      required:
        - campaigns
        - availableCampaigns
      example:
        campaigns:
          campaign-123:
            campaignId: campaign-123
            resolvedBidId: bid-456
            rank: 1
            banner:
              assetType: image
              assetUrlDesktop: https://example.com/image-desktop.jpg
              assetUrlMobile: https://example.com/image-mobile.jpg
              title: Summer Sale
              actionText: Shop Now
              targets:
                - type: url
                  value: https://example.com/summer-sale
        availableCampaigns:
          - campaign-123
      properties:
        campaigns:
          type: object
          description: A map of campaign IDs to campaign details.
          additionalProperties:
            type: object
            required:
              - campaignId
              - resolvedBidId
              - rank
              - banner
            properties:
              campaignId:
                type: string
                description: The campaign identifier. Matches the key under which this campaign appears in the `campaigns` map.
              resolvedBidId:
                type: string
                description: The resolved bid identifier.
              rank:
                type: integer
                description: The rank of the campaign.
              banner:
                type: object
                required:
                  - assetType
                  - assetUrlDesktop
                  - assetUrlMobile
                properties:
                  assetType:
                    type: string
                    enum:
                      - image
                      - video
                    description: The type of banner asset.
                  assetUrlDesktop:
                    type: string
                    description: The URL of the banner asset for desktop.
                  assetUrlMobile:
                    type: string
                    description: The URL of the banner asset for mobile.
                  title:
                    type: string
                    description: The title of the banner.
                  actionText:
                    type: string
                    description: The action text for the banner.
                  targets:
                    type: array
                    description: The target actions for the banner.
                    items:
                      type: object
                      required:
                        - type
                        - value
                      properties:
                        type:
                          $ref: '#/components/schemas/RetailMediaBannerTargetType'
                        value:
                          type: string
                          description: The target value.
        availableCampaigns:
          type: array
          description: A list of available campaign IDs.
          items:
            type: string
    RetailMediaRetailMediaCampaignClickRequest:
      type: object
      title: RetailMediaCampaignClickRequest
      additionalProperties: false
      description: A top-ranked partner menu click
      required:
        - campaignId
        - partnerId
        - clickTimeStamp
        - clickSource
      properties:
        campaignId:
          description: The unique identifier of the campaign.
          type: string
        partnerId:
          type: string
          description: The id of the partner.
        clickSource:
          type: string
          description: The event when the click was triggered.
          enum:
            - menu
        clickTimeStamp:
          format: date-time
          description: The UTC date and time at which the partner menu click occurred.
          type: string
      example:
        campaignId: 5d333100-2d05-4690-a2da-6d0c465c5c4c
        partnerId: '418'
        clickTimeStamp: '2024-08-29T10:35:03.000Z'
        clickSource: menu
    RetailMediaRetailMediaSessionResponse:
      type: object
      title: RetailMediaSessionResponse
      description: Response of retail media session api
      additionalProperties: false
      required:
        - sessionId
      properties:
        sessionId:
          nullable: false
          description: The session id which has been created.
          type: string
    ReviewsConsumerReview:
      properties:
        reviewId:
          nullable: false
          description: Unique identifier for the review
          type: string
        customerFirstName:
          nullable: false
          description: The first name of the customer who left the review
          type: string
        reviewDate:
          nullable: false
          format: date-time
          description: The date on which the review was submitted
          type: string
        orderId:
          nullable: false
          type: string
          description: A unique identifier for the order
        orderDate:
          nullable: false
          format: date-time
          description: The date on which the order was made
          type: string
        customerComments:
          nullable: true
          description: Any comments left by the customer in their review
          type: string
        restaurantComments:
          nullable: true
          description: Any published comments left by the restaurant in response to the review
          type: string
        restaurantId:
          nullable: false
          description: The Id of the restaurant associated with the reviews
          type: string
        ratingAverage:
          nullable: false
          format: double
          description: The average score left by the customer
          type: number
        maxRating:
          nullable: false
          format: integer
          description: The maximum possible value of a score
          type: number
          minimum: 1
        ratingScores:
          $ref: '#/components/schemas/ReviewsReviewScores'
        insightClassifications:
          $ref: '#/components/schemas/ReviewsInsightClassifications'
      additionalProperties: false
      example:
        reviewId: abc1234
        customerFirstName: John
        reviewDate: '2022-01-15T23:07:39Z'
        orderId: 12345a
        orderDate: '2022-01-12T23:07:39Z'
        restaurantComments: Thanks for your review!
        customerComments: Tasty food
        restaurantId: '1234'
        ratingAverage: 4.8
        maxRating: 5
        ratingScores:
          quality: '5'
          delivery: '4'
        insightClassifications:
          deliverySpeed: 1
          foodQuality: -1
          deliveryService: 1
          foodLeakedOrSpilled: -1
          foodTemperature: 1
          wrongOrMissingItems: -1
          orderNeverArrived: 1
          pricingAndFees: -1
          portionSize: 1
          serviceQuality: -1
          customerSatisfaction: 1
    ReviewsHideConsumerReviewsRequest:
      properties:
        partnerId:
          nullable: true
          description: When supplied, only hides reviews of that partner that were left by the consumer
          type: string
        beforeDate:
          nullable: true
          description: When supplied, only hides reviews left with a review date before that date by the consumer
          format: date-time
          type: string
      type: object
      description: Optionally filter which reviews of the consumer to hide
      additionalProperties: false
      example:
        partnerId: 7788abc
        beforeDate: '2025-02-23T06:31:42Z'
    ReviewsHideConsumerReviewsResponse:
      properties:
        numberOfReviewsHidden:
          nullable: false
          description: The number of reviews that were hidden for the given consumer
          type: integer
      type: object
      description: Response from hiding consumer reviews
      required:
        - numberOfReviewsHidden
      example:
        numberOfReviewsHidden: 11
    ReviewsInsightClassifications:
      nullable: true
      additionalProperties: true
      description: The Review Insights of a customer review containing the classification topic and sentiment score.
      type: object
      properties:
        deliverySpeed:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
        foodQuality:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
        deliveryService:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
        foodLeakedOrSpilled:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
        foodTemperature:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
        wrongOrMissingItems:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
        orderNeverArrived:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
        pricingAndFees:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
        portionSize:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
        serviceQuality:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
        customerSatisfaction:
          description: The classification topic of a Review Insight.
          $ref: '#/components/schemas/ReviewsSentimentScore'
      required:
        - deliverySpeed
        - foodQuality
        - deliveryService
        - foodLeakedOrSpilled
        - foodTemperature
        - wrongOrMissingItems
        - orderNeverArrived
        - pricingAndFees
        - portionSize
        - serviceQuality
        - customerSatisfaction
    ReviewsOrderReviewResponse:
      type: object
      properties:
        reviewId:
          nullable: false
          description: Unique identifier for the review
          type: string
        customerFirstName:
          nullable: false
          description: The first name of the customer who left the review
          type: string
        reviewDate:
          nullable: false
          format: date-time
          description: The date on which the review was submitted
          type: string
        orderId:
          nullable: false
          type: string
          description: A unique identifier for the order
        orderDate:
          nullable: false
          format: date-time
          description: The date on which the order was made
          type: string
        customerComments:
          nullable: true
          description: Any comments left by the customer in their review
          type: string
        restaurantComments:
          nullable: true
          description: Any published comments left by the restaurant in response to the review
          type: string
        restaurantId:
          nullable: false
          format: string
          description: The Id of the restaurant associated with the reviews
        ratingAverage:
          nullable: false
          format: double
          description: The average score left by the customer
          type: number
        maxRating:
          nullable: false
          format: integer
          description: The maximum possible value of a score
          type: number
          minimum: 1
        ratingScores:
          $ref: '#/components/schemas/ReviewsReviewScores'
        insightClassifications:
          $ref: '#/components/schemas/ReviewsInsightClassifications'
      example:
        reviewId: abc1234
        customerFirstName: John
        reviewDate: '2022-01-15T23:07:39Z'
        orderId: 12345a
        orderDate: '2022-01-12T23:07:39Z'
        customerComments: Tasty food
        restaurantComments: Thanks for your review!
        restaurantId: '1234'
        ratingAverage: 4.8
        maxRating: 5
        ratingScores:
          quality: '5'
          delivery: '4'
        insightClassifications:
          deliverySpeed: 1
          foodQuality: -1
          deliveryService: 1
          foodLeakedOrSpilled: -1
          foodTemperature: 1
          wrongOrMissingItems: -1
          orderNeverArrived: 1
          pricingAndFees: -1
          portionSize: 1
          serviceQuality: -1
          customerSatisfaction: 1
    ReviewsPagedConsumerReviewsResponse:
      allOf:
        - $ref: '#/components/schemas/PagingPagedAfterOnlyCursorResponse'
        - properties:
            reviews:
              type: array
              description: A collection of reviews associated with a user
              items:
                $ref: '#/components/schemas/ReviewsConsumerReview'
          type: object
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
        reviews:
          - reviewId: abc1234
            customerFirstName: John
            orderId: 12345a
            reviewDate: '2022-01-15T23:07:39Z'
            orderDate: '2022-01-12T23:07:39Z'
            restaurantComments: Thanks for your review!
            customerComments: Tasty food
            restaurantId: '1234'
            ratingAverage: 4.8
            maxRating: 5
            ratingScores:
              quality: '5'
              delivery: '4'
            insightClassifications:
              deliverySpeed: 1
              foodQuality: -1
              deliveryService: 1
              foodLeakedOrSpilled: -1
              foodTemperature: 1
              wrongOrMissingItems: -1
              orderNeverArrived: 1
              pricingAndFees: -1
              portionSize: 1
              serviceQuality: -1
              customerSatisfaction: 1
    ReviewsPagedRestaurantReviewsResponse:
      allOf:
        - $ref: '#/components/schemas/PagingPagedAfterOnlyCursorResponse'
        - properties:
            reviews:
              type: array
              description: A Collection of Ratings by Restaurant
              items:
                $ref: '#/components/schemas/ReviewsRestaurantReview'
          type: object
      example:
        paging:
          cursors:
            after: NDMyNzQyODI3OTQw
        reviews:
          - customerName: John
            rateDate: '2021-06-12T23:07:39Z'
            restaurantComments: Thanks for your review!
            customerComments: Tasty food
            restaurantId: 1234
            ratingAverage: 4.8
            maxRating: 5
    ReviewsPagedUnfilteredRestaurantReviewsResponse:
      allOf:
        - $ref: '#/components/schemas/PagingPagedCursorResponse'
        - properties:
            reviews:
              type: array
              description: A collection of reviews associated with a restaurant, with restaurant comments shown regardless of whether they have been approved
              items:
                $ref: '#/components/schemas/ReviewsUnfilteredRestaurantReview'
          type: object
      example:
        paging:
          cursors:
            before: KHt67IUVSDJDVLa
            after: NDMyNzQyODI3OTQw
        reviews:
          - reviewId: abcdef22334455
            customerFirstName: John
            reviewDate: '2022-01-15T23:07:39Z'
            orderId: 12345a
            orderNumber: 556677
            customerComments: Tasty food
            restaurantComments: Thanks for your review!
            restaurantCommentApproved: false
            ratingAverage: 4.8
            maxRating: 5
            reported: false
            insightClassifications:
              deliverySpeed: 1
              foodQuality: -1
              deliveryService: 1
              foodLeakedOrSpilled: -1
              foodTemperature: 1
              wrongOrMissingItems: -1
              orderNeverArrived: 1
              pricingAndFees: -1
              portionSize: 1
              serviceQuality: -1
              customerSatisfaction: 1
    ReviewsProhibitedWordResponse:
      type: object
      properties:
        prohibitedWordId:
          type: string
          description: Unique identifier for the prohibited word entry
          example: aB24d2
        word:
          type: string
          description: The prohibited word
          example: poop
        language:
          type: string
          maxLength: 2
          minLength: 2
          description: The two letter language code for this prohibited word
          example: en
        tenant:
          type: string
          maxLength: 2
          minLength: 2
          description: The tenant
          example: uk
        createdDate:
          type: string
          format: date-time
          description: When the prohibited word was created
          example: '2025-07-31T10:30:00Z'
      required:
        - prohibitedWordId
        - word
        - language
        - tenant
        - createdDate
    ReviewsProhibitedWordsListResponse:
      type: object
      properties:
        prohibitedWords:
          type: array
          items:
            $ref: '#/components/schemas/ReviewsProhibitedWordResponse'
          description: List of prohibited words
      required:
        - prohibitedWords
      allOf:
        - $ref: '#/components/schemas/PagingPagedCursorResponse'
        - properties:
            prohibitedWords:
              type: array
              description: List of prohibited words
              items:
                $ref: '#/components/schemas/ReviewsProhibitedWordResponse'
          type: object
      example:
        paging:
          cursors:
            before: KHt67IUVSDJDVLa
            after: NDMyNzQyODI3OTQw
        prohibitedWords:
          - prohibitedWordId: aB24d2
            word: poop
            language: en
            tenant: uk
            createdDate: '2025-07-31T10:30:00Z'
    ReviewsRatingDistribution:
      type: object
      description: The distribution data for a single star rating bucket
      properties:
        distributionPercentage:
          type: integer
          format: int32
          minimum: 0
          maximum: 100
          description: The percentage of total ratings that fall within this star bucket
        distributionCount:
          type: integer
          format: int32
          minimum: 0
          description: The number of ratings that fall within this star bucket
      required:
        - distributionPercentage
      additionalProperties: false
      example:
        distributionPercentage: 22
        distributionCount: 31
    ReviewsRatingDistributions:
      type: object
      description: Distribution of ratings across whole-star buckets. Decimal ratings are truncated to their base value (e.g. 1.5 counts in the "1" bucket). The distribution percentage values across all five buckets are guaranteed to sum to exactly 100, unless the restaurant has no ratings counted in its score, in which case all five buckets will return 0
      properties:
        '1':
          $ref: '#/components/schemas/ReviewsRatingDistribution'
        '2':
          $ref: '#/components/schemas/ReviewsRatingDistribution'
        '3':
          $ref: '#/components/schemas/ReviewsRatingDistribution'
        '4':
          $ref: '#/components/schemas/ReviewsRatingDistribution'
        '5':
          $ref: '#/components/schemas/ReviewsRatingDistribution'
      required:
        - '1'
        - '2'
        - '3'
        - '4'
        - '5'
      additionalProperties: false
      example:
        '1':
          distributionPercentage: 11
          distributionCount: 15
        '2':
          distributionPercentage: 19
          distributionCount: 27
        '3':
          distributionPercentage: 22
          distributionCount: 31
        '4':
          distributionPercentage: 30
          distributionCount: 42
        '5':
          distributionPercentage: 18
          distributionCount: 25
    ReviewsRestaurantReview:
      properties:
        customerName:
          nullable: false
          description: The (first) name of the customer who left the review
          type: string
        rateDate:
          nullable: false
          format: date-time
          description: The date on which the order was made
          type: string
        restaurantComments:
          nullable: true
          description: Any comments left by the restaurant in response to the review
          type: string
        customerComments:
          nullable: true
          description: Any comments left by the customer in their review
          type: string
        restaurantId:
          nullable: false
          format: int32
          description: The Id of the restaurant associated with the reviews
          type: integer
        ratingAverage:
          nullable: false
          format: double
          description: The average score left by the customer
          type: number
        maxRating:
          nullable: false
          format: integer
          description: The maximum possible value of a score
          type: number
          minimum: 1
      additionalProperties: false
      example:
        customerName: John
        rateDate: '2021-06-12T23:07:39Z'
        restaurantComments: Thanks for your review!
        customerComments: Tasty food
        restaurantId: 1234
        ratingAverage: 4.8
        maxRating: 5
    ReviewsRestaurantReviewAggregation:
      type: object
      properties:
        restaurantId:
          nullable: false
          description: The Id of the restaurant associated with the review aggregation
          type: string
        restaurantReviewScore:
          $ref: '#/components/schemas/ReviewsRestaurantReviewScore'
          description: The review score for this restaurant
        restaurantReviewBreakdowns:
          items:
            $ref: '#/components/schemas/ReviewsRestaurantReviewBreakdown'
          description: The review breakdowns for this restaurant
          type: array
        ratingDistributions:
          $ref: '#/components/schemas/ReviewsRatingDistributions'
          description: Distribution of ratings across whole-star buckets. Decimal ratings are truncated to their base value (e.g. 1.5 counts in the "1" bucket)
      additionalProperties: false
      example:
        restaurantId: 1234ab
        restaurantReviewScore:
          restaurantScoreValue: 4.4
          restaurantScoreStars: 4.5
          ratingCountUsedInScore: 140
          totalRestaurantRatingCount: 550
        restaurantReviewBreakdowns:
          - ratingType: 1
            goodReviews: 200
            badReviews: 100
            indifferentReviews: 287
        ratingDistributions:
          '1':
            distributionPercentage: 11
            distributionCount: 15
          '2':
            distributionPercentage: 19
            distributionCount: 27
          '3':
            distributionPercentage: 22
            distributionCount: 31
          '4':
            distributionPercentage: 30
            distributionCount: 42
          '5':
            distributionPercentage: 18
            distributionCount: 25
    ReviewsRestaurantReviewAggregationsResponse:
      type: object
      properties:
        restaurantReviewAggregations:
          items:
            $ref: '#/components/schemas/ReviewsRestaurantReviewAggregation'
            description: The review aggregations for these restaurants
          type: array
      example:
        restaurantReviewAggregations:
          - restaurantId: 1234ab
            restaurantReviewScore:
              restaurantScoreValue: 4.4
              restaurantScoreStars: 4.5
              ratingCountUsedInScore: 140
              totalRestaurantRatingCount: 550
            restaurantReviewBreakdowns:
              - ratingType: 1
                goodReviews: 200
                badReviews: 100
                indifferentReviews: 287
            ratingDistributions:
              '1':
                distributionPercentage: 11
                distributionCount: 15
              '2':
                distributionPercentage: 19
                distributionCount: 27
              '3':
                distributionPercentage: 22
                distributionCount: 31
              '4':
                distributionPercentage: 30
                distributionCount: 42
              '5':
                distributionPercentage: 18
                distributionCount: 25
    ReviewsRestaurantReviewBreakdown:
      properties:
        ratingType:
          nullable: false
          format: integer
          description: The type of rating - Service = 1, Quality = 2, Delivery = 3, Overall = 4
          type: number
        goodReviews:
          nullable: false
          format: integer
          description: The number of good reviews
          type: number
        badReviews:
          nullable: false
          format: integer
          description: The number of bad reviews
          type: number
        indifferentReviews:
          nullable: false
          format: integer
          description: The number of indifferent reviews
          type: number
      additionalProperties: false
      example:
        ratingType: 1
        goodReviews: 200
        badReviews: 100
        indifferentReviews: 287
    ReviewsRestaurantReviewScore:
      type: object
      description: The review score of the restaurant
      properties:
        restaurantScoreValue:
          nullable: false
          format: double
          description: The exact value of the score
          type: number
        restaurantScoreStars:
          nullable: false
          format: double
          description: The score to use when displaying stars
          type: number
        ratingCountUsedInScore:
          nullable: false
          format: integer
          description: The number of ratings used to calculate the score
        totalRestaurantRatingCount:
          nullable: false
          format: integer
          description: The total number of ratings left for this restaurant
      example:
        restaurantScoreValue: 4.4
        restaurantScoreStars: 4.5
        ratingCountUsedInScore: 140
        totalRestaurantRatingCount: 550
    ReviewsRestaurantReviewTrendsResponse:
      type: object
      description: Review trend data for a restaurant, including monthly and weekly review counts and historical aggregation snapshots
      properties:
        monthlyRatingCounts:
          type: object
          description: Review counts for the last 12 calendar months, keyed by month in YYYY-MM format.
          additionalProperties:
            type: integer
            format: int32
          example:
            2025-08: 42
            2025-09: 38
            2025-10: 51
            2025-11: 0
            2025-12: 55
            2026-01: 48
            2026-02: 37
            2026-03: 44
            2026-04: 50
            2026-05: 53
            2026-06: 39
            2026-07: 29
        weeklyRatingCounts:
          type: array
          description: Review counts for four rolling seven-day windows. The windows are not calendar weeks. Index 0 covers reviews from more than 0 and up to 7 days ago, index 1 from more than 7 and up to 14 days ago, index 2 from more than 14 and up to 21 days ago, and index 3 from more than 21 and up to 28 days ago.
          items:
            type: integer
            format: int32
          minItems: 4
          maxItems: 4
        historicalAggregations:
          type: object
          description: Aggregation snapshots at historical points in time, keyed by date in YYYY-MM-DD format. Additional date keys may be added in future.
          additionalProperties:
            $ref: '#/components/schemas/ReviewsReviewTrendsHistoricalAggregation'
          example:
            '2025-07-01':
              ratingCountUsedInScore: 120
              ratingScore: 4.3
              ratingScoreStars: 4.5
      required:
        - monthlyRatingCounts
        - weeklyRatingCounts
        - historicalAggregations
      additionalProperties: false
      example:
        monthlyRatingCounts:
          2025-08: 42
          2025-09: 38
          2025-10: 51
          2025-11: 0
          2025-12: 55
          2026-01: 48
          2026-02: 37
          2026-03: 44
          2026-04: 50
          2026-05: 53
          2026-06: 39
          2026-07: 29
        weeklyRatingCounts:
          - 8
          - 11
          - 9
          - 13
        historicalAggregations:
          '2026-07-01':
            ratingCountUsedInScore: 120
            ratingScore: 4.3
            ratingScoreStars: 4.5
    ReviewsReviewComment:
      properties:
        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
        comment:
          nullable: true
          maxLength: 4000
          description: Comment left by customer/restaurant
          type: string
        processed:
          description: Will be false until processed by an agent/automation
          type: boolean
      type: object
      description: Details for a review comment
      additionalProperties: false
      example:
        showText: false
        comment: Yum!
        processed: true
    ReviewsReviewManagementData:
      properties:
        restaurantId:
          description: The restaurant partner Id
          type: string
        processed:
          description: Flag used to indicate that this review has passed through the validation process.
          type: boolean
        reviewDate:
          format: date-time
          description: When the review was submitted
          type: string
        orderId:
          description: A unique identifier for the order
          type: string
        orderNumber:
          description: The user friendly order number
          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
        customerCity:
          nullable: true
          description: The customers city
          type: string
        orderDate:
          format: date-time
          description: When order was placed
          type: string
        customerComment:
          $ref: '#/components/schemas/ReviewsReviewComment'
        ratingScores:
          $ref: '#/components/schemas/ReviewsReviewScores'
        restaurantComment:
          $ref: '#/components/schemas/ReviewsReviewComment'
        customerDisplayName:
          nullable: true
          description: Customer name shown on the public site. Forename only to avoid disclosing PII
          type: string
        reviewId:
          nullable: true
          description: Identifier for ratings - will be equal to the legacy `RatingCode`
          type: string
        RelatedExperienceIsCancelled:
          description: Flag used to indicate that an order is cancelled
          type: boolean
      type: object
      description: A customer review for an order
      additionalProperties: false
      example:
        restaurantId: '1234'
        processed: true
        reviewDate: '2021-05-14T18:00:00.0000000+01:00'
        orderId: fg12345a
        orderNumber: '1234'
        hideFromSite: false
        customerCity: London
        orderDate: '2021-05-14T13:00:00.0000000+01:00'
        customerComment:
          showText: true
          comment: Very tasty!
          processed: true
        ratingScores:
          quality: '5'
          delivery: '4'
        restaurantComment:
          showText: true
          comment: Thank you :-)
          processed: true
        customerDisplayName: John
        reviewId: abc1234
        RelatedExperienceIsCancelled: false
    ReviewsReviewManagementPagedList:
      allOf:
        - $ref: '#/components/schemas/PagingPagedAfterOnlyCursorResponse'
        - properties:
            reviews:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/ReviewsReviewManagementData'
              description: The current page of reviews
          type: object
      description: Represents a page of reviews plus data about the overall result set. E.g. total number of results for the search.
      additionalProperties: false
      example:
        paging:
          after: NDMyNzQyODI3OTQw
        reviews:
          - restaurantId: '1234'
            processed: true
            reviewDate: '2021-05-14T18:00:00.0000000+01:00'
            orderId: gh63745b
            orderNumber: '1234'
            hideFromSite: false
            customerCity: London
            orderDate: '2021-05-14T13:00:00.0000000+01:00'
            customerComment:
              showText: true
              comment: Very tasty!
              processed: true
            ratingScores:
              quality: '5'
              delivery: '4'
            restaurantComment:
              showText: true
              comment: Thank you :-)
              processed: true
            customerDisplayName: John
            reviewId: abc1234
            RelatedExperienceIsCancelled: false
    ReviewsReviewScores:
      type: object
      description: The star ratings given by a customer
      additionalProperties:
        type: string
    ReviewsReviewTrendsHistoricalAggregation:
      type: object
      description: A snapshot of the review aggregation at a historical point in time
      properties:
        ratingCountUsedInScore:
          type: integer
          format: int32
          description: The number of ratings included in the score at this historical point
        ratingScore:
          type: number
          format: double
          description: The exact aggregated rating score at this historical point
        ratingScoreStars:
          type: number
          format: double
          description: The star-display value of the aggregated rating score at this historical point
      required:
        - ratingCountUsedInScore
        - ratingScore
        - ratingScoreStars
      additionalProperties: false
      example:
        ratingCountUsedInScore: 120
        ratingScore: 4.3
        ratingScoreStars: 4.5
    ReviewsSentimentScore:
      description: The Sentiment Score of a Review Insight.
      type: integer
      format: int32
      minimum: -1
      maximum: 1
    ReviewsSubmitProhibitedWordRequest:
      type: object
      properties:
        word:
          type: string
          description: The prohibited word
          example: poop
        language:
          type: string
          maxLength: 2
          minLength: 2
          description: The two letter language code for this prohibited word
          example: en
      required:
        - word
        - language
    ReviewsSubmitReviewReplyRequest:
      properties:
        reviewReply:
          nullable: false
          maxLength: 4000
          description: Review reply left by the restaurant
          type: string
      type: object
      description: A restaurant reply to a review
      additionalProperties: false
      example:
        reviewReply: Glad you liked the food!
    ReviewsSubmitReviewReportRequest:
      properties:
        reportType:
          nullable: false
          description: The type of report of the review
          type: string
          enum:
            - commentReported
        reportReason:
          nullable: false
          description: The reason for reporting the review
          type: string
          enum:
            - abusive
            - mealNotPresent
            - offTopic
            - notAllowedPromotion
            - privacyViolation
            - notRestaurantPartnerFault
        reasonComment:
          nullable: false
          description: Detail on why the review is being reported
          type: string
          maxLength: 500
      type: object
      description: A report submitted for a review
      required:
        - reportType
        - reportReason
        - reasonComment
      additionalProperties: false
      example:
        reportType: commentReported
        reportReason: offTopic
        reasonComment: The customer is advertising crypto
    ReviewsSubmitReviewRequest:
      properties:
        customerComment:
          nullable: true
          maxLength: 4000
          description: Comment left by customer
          type: string
        ratingScores:
          $ref: '#/components/schemas/ReviewsReviewScores'
        timeTakenMinutes:
          nullable: true
          description: An optional field detailing the customer's perceived time of delivery
          type: number
          format: integer
          minimum: 0
          maximum: 120
        consumerId:
          nullable: true
          description: Optional Id of the user submitting the review
          type: string
        deliveryReviewScoreRangeVersion:
          nullable: true
          description: The version of the delivery score range supplied by this frontend
          type: string
      type: object
      description: A customer review for an order
      additionalProperties: false
      example:
        customerComment: Very tasty!
        ratingScores:
          quality: '5'
          delivery: '4'
        timeTakenMinutes: 60
        deliveryReviewScoreRangeVersion: v3
    ReviewsUnfilteredRestaurantReview:
      properties:
        reviewId:
          nullable: false
          description: Identifier for ratings - will be equivalent to `RatingCode`
          type: string
        customerFirstName:
          nullable: false
          description: The first name of the customer who left the review
          type: string
        reviewDate:
          nullable: false
          format: date-time
          description: The date on which the review was submitted
          type: string
        orderId:
          nullable: false
          description: A unique identifier for the order
          type: string
        orderNumber:
          nullable: false
          description: The user friendly order number
          type: string
        customerComments:
          nullable: true
          description: Any comments left by the customer in their review
          type: string
        restaurantComments:
          nullable: true
          description: Any comments left by the restaurant in response to the review, whether approved or not
          type: string
        restaurantCommentApproved:
          nullable: false
          description: Indicates whether the response left by the restaurant has been approved
          type: boolean
        ratingAverage:
          nullable: false
          format: double
          description: The average score left by the customer
          type: number
        maxRating:
          nullable: false
          format: integer
          description: The maximum possible value of a score
          type: number
          minimum: 1
        reported:
          description: Flag used to indicate that this review has been reported by the restaurant
          type: boolean
        insightClassifications:
          $ref: '#/components/schemas/ReviewsInsightClassifications'
      additionalProperties: false
      example:
        reviewId: abcdef22334455
        customerFirstName: John
        reviewDate: '2022-01-15T23:07:39Z'
        orderNumber: '556677'
        customerComments: Tasty food
        restaurantComments: Thanks for your review!
        restaurantCommentApproved: false
        ratingAverage: 4.8
        maxRating: 5
        reported: false
        insightClassifications:
          deliverySpeed: 1
          foodQuality: -1
          deliveryService: 1
          foodLeakedOrSpilled: -1
          foodTemperature: 1
          wrongOrMissingItems: -1
          orderNeverArrived: 1
          pricingAndFees: -1
          portionSize: 1
          serviceQuality: -1
          customerSatisfaction: 1
    RichmediaImagesByTagResponse:
      type: object
      example:
        images:
          - imageContext:
              tenant: uk
              restaurantKey: burgers-pizza-restaurant
              dishKey: pizza
            moderationStatus: approved
            urlTemplate: https://cloudinary.test/image/upload/c_fill,q_auto,{transformations}/v1/uk/dishes/burgers-pizza-restaurant/pizza
            rawImageUrl: https://cloudinary.test/image/upload/v1/uk/dishes/burgers-pizza-restaurant/pizza
            publicId: uk/dishes/burgers-pizza-restaurant/pizza
            supplier: uk#brg_je-uk-burgers-pizza-restaurant
            tags:
              - uk_dishes_burgers-pizza-restaurant
              - uk_dishes
          - imageContext:
              tenant: uk
              restaurantKey: burgers-pizza-restaurant
              dishKey: burger
            moderationStatus: pending
            urlTemplate: ''
            rawImageUrl: ''
            publicId: moderation/pending/uk/dishes/burgers-pizza-restaurant/pizza
            supplier: uk#brg_je-uk-burgers-pizza-restaurant
            tags:
              - uk_dishes_burgers-pizza-restaurant
              - uk_dishes
          - imageContext:
              tenant: uk
              restaurantKey: burgers-pizza-restaurant
              dishKey: burger-with-beef
            moderationStatus: rejected
            moderationRejectionReasons:
              - id: bad-quality
                value: Bad quality
              - id: bad-proportion
                value: Bad proportion
            urlTemplate: ''
            rawImageUrl: ''
            publicId: moderation/rejected/uk/dishes/burgers-pizza-restaurant/pizza
            supplier: uk#brg_je-uk-burgers-pizza-restaurant
            tags:
              - uk_dishes_burgers-pizza-restaurant
              - uk_dishes
        approvedCount: 1
        unapprovedCount: 1
        paging:
          cursors:
            after: 926cdc79-7802-4dbf-820e-10a448edfedf
      properties:
        images:
          description: The array of images having specified tag
          type: array
          items:
            type: object
            properties:
              supplier:
                description: |
                  The supplier of the imagery. Could be an agency, brand or even an individual restaurant that owns and provides images. See the additional guidance at https://justeattakeaway.atlassian.net/wiki/spaces/ContentVertical/pages/6056083749/Integrating+with+Content+as+a+service+CaaS
                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 image transformations that suit your need (e.g. height, width etc). For more details see https://justeattakeaway.atlassian.net/wiki/spaces/ContentVertical/pages/48259335/Cloudinary+image+URL+-+Guidelines
                type: string
              rawImageUrl:
                description: Image URL without any transformations, which gives access to the raw original image and may be used, for example, as a source URL when publishing an image to a CDN
                type: string
              publicId:
                description: Id of the image on a CDN. Should not be used to build image URLs; the `urlTemplate` and `rawImageUrl` properties should be used for this purpose.
                type: string
              imageContext:
                description: Image contextual metadata. Might contain some or all of the fields that were sent during image publishing
                additionalProperties:
                  type: string
                type: object
              moderationStatus:
                format: string
                description: Moderation status of the image
                enum:
                  - approved
                  - rejected
                  - pending
              moderationRejectionReasons:
                description: If the image was rejected the reasons for rejection will be supplied in this array
                type: array
                items:
                  $ref: '#/components/schemas/RichmediaListItem'
              tags:
                description: Array of tags attached to an image
                type: array
                items:
                  type: string
        approvedCount:
          description: Number of `approved` images in the response
          format: integer
          type: number
        unapprovedCount:
          description: Number of `rejected` or `pending` images in the response
          format: integer
          type: number
        paging:
          description: Consists of pagination information.
          properties:
            cursors:
              description: Consists of cursor markers used in pagination.
              properties:
                after:
                  description: Cursor parameter to use in the next request to the resource to fetch the next page of data. A missing or empty value indicates that the end of the result set has been reached.
                  type: string
              type: object
          type: object
      nullable: false
    RichmediaListItem:
      description: Custom type for all list items.
      type: object
      properties:
        id:
          description: Id of the list item. Can be used to build country-specific translations.
          type: string
        value:
          description: Text representation of the list item in English.
          type: string
      required:
        - id
        - value
    RichmediaMediaAssetsByTagResponse:
      type: object
      example:
        assets:
          - assetContext:
              tenant: uk
              restaurantKey: burgers-pizza-restaurant
              dishKey: pizza
            moderationStatus: approved
            urlTemplate: https://cloudinary.test/image/upload/c_fill,q_auto,{transformations}/v1/uk/dishes/burgers-pizza-restaurant/pizza
            rawAssetUrl: https://cloudinary.test/image/upload/v1/uk/dishes/burgers-pizza-restaurant/pizza
            publicId: uk/dishes/burgers-pizza-restaurant/pizza
            supplier: uk#brg_je-uk-burgers-pizza-restaurant
            tags:
              - uk_dishes_burgers-pizza-restaurant
              - uk_dishes
          - assetContext:
              tenant: uk
              restaurantKey: burgers-pizza-restaurant
              dishKey: burger
            moderationStatus: pending
            urlTemplate: ''
            rawAssetUrl: ''
            publicId: moderation/pending/uk/dishes/burgers-pizza-restaurant/pizza
            supplier: uk#brg_je-uk-burgers-pizza-restaurant
            tags:
              - uk_dishes_burgers-pizza-restaurant
              - uk_dishes
          - assetContext:
              tenant: uk
              restaurantKey: burgers-pizza-restaurant
              dishKey: burger-with-beef
            moderationStatus: rejected
            moderationRejectionReasons:
              - id: bad-quality
                value: Bad quality
              - id: bad-proportion
                value: Bad proportion
            urlTemplate: ''
            rawAssetUrl: ''
            publicId: moderation/rejected/uk/dishes/burgers-pizza-restaurant/pizza
            supplier: uk#brg_je-uk-burgers-pizza-restaurant
            tags:
              - uk_dishes_burgers-pizza-restaurant
              - uk_dishes
        approvedCount: 1
        unapprovedCount: 1
        paging:
          cursors:
            after: 926cdc79-7802-4dbf-820e-10a448edfedf
      properties:
        assets:
          description: The array of media assets having specified tag.
          type: array
          items:
            type: object
            properties:
              supplier:
                description: |
                  The supplier of the media assets. Could be an agency, brand or even an individual restaurant that owns and provides media assets. See the additional guidance at https://justeattakeaway.atlassian.net/wiki/spaces/ContentVertical/pages/6056083749/Integrating+with+Content+as+a+service+CaaS
                type: string
              urlTemplate:
                description: Media asset URL template that can be used to access the media asset. Mandatory transformations are already baked in the URL template. The {transformations} placeholder can be replaced with additional media asset transformations that suit your need (e.g. height, width etc). For more details see https://justeattakeaway.atlassian.net/wiki/spaces/ContentVertical/pages/48259335/Cloudinary+image+URL+-+Guidelines
                type: string
              rawAssetUrl:
                description: Media asset URL without any transformations, which gives access to the raw original media asset and may be used, for example, as a source URL when publishing a media asset to a CDN
                type: string
              publicId:
                description: Id of the media asset on a CDN. Should not be used to build media asset URLs; the `urlTemplate` and `rawAssetUrl` properties should be used for this purpose.
                type: string
              assetContext:
                description: Media asset contextual metadata. Might contain some or all of the fields that were sent during media asset publishing
                additionalProperties:
                  type: string
                type: object
              moderationStatus:
                format: string
                description: Moderation status of the media asset
                enum:
                  - approved
                  - rejected
                  - pending
              moderationRejectionReasons:
                description: If the media asset was rejected the reasons for rejection will be supplied in this array
                type: array
                items:
                  $ref: '#/components/schemas/RichmediaListItem'
              tags:
                description: Array of tags attached to an media asset
                type: array
                items:
                  type: string
        approvedCount:
          description: Number of `approved` media assets in the response
          format: integer
          type: number
        unapprovedCount:
          description: Number of `rejected` or `pending` media assets in the response
          format: integer
          type: number
        paging:
          description: Consists of pagination information. Note that only forward paging is supported.
          properties:
            cursors:
              description: Consists of cursor markers used in pagination.
              properties:
                after:
                  description: Cursor parameter to use in the next request to the resource to fetch the next page of data. A missing or empty value indicates that the end of the result set has been reached.
                  type: string
              type: object
          type: object
      nullable: false
    RichmediaRichMediaAssetBatchResponse:
      required:
        - batchStatus
      type: object
      example:
        batchStatus: partiallySucceeded
        externalId: rNXjPKwIaN7StcV3YQfY
        assets:
          - assetContext:
              tenant: uk
              restaurantKey: burgers&pizza
              dishKey: pizza
            assetStatus: succeeded
            urlTemplate: https://cloudinary.test/image/upload/{transformations}/v1/uk/dishes/burgers_pizza/image01
            sourceAssetUrl: https://example.org/image01.jpg
          - assetContext:
              tenant: uk
              restaurantKey: burgers&pizza
              dishKey: burger
            assetStatus: failed
            sourceAssetUrl: https://example.org/image02.jpg
            failureReason: Source asset exeeds maximum size of 10 MB.
        paging:
          cursors:
            after: 926cdc79-7802-4dbf-820e-10a448edfedf
            before: bd7e1aeb-1a73-46bf-8f07-5b3716693b35
      properties:
        batchStatus:
          format: enum
          description: The status of batch request
          enum:
            - queued
            - running
            - succeeded
            - partiallySucceeded
            - failed
            - cancelled
          type: string
        externalId:
          description: String which can be provided by the client to later identify the assets batch on their side
          type: string
        assets:
          items:
            required:
              - sourceAssetUrl
              - assetContext
              - assetStatus
            properties:
              failureReason:
                description: Can contain additional information about asset publishing failure
                type: string
              urlTemplate:
                description: Media asset URL template that can be used to access the media asset. 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
              sourceAssetUrl:
                description: Source media asset URL. The remote HTTP or HTTPS URL address of an existing media asset or a private S3 object URL in a whitelisted bucket.
                type: string
              assetStatus:
                format: enum
                description: The status of individual media asset
                enum:
                  - succeeded
                  - failed
                type: string
              assetContext:
                description: Media asset context in dictionary format. Can contain additional data that will be published alongside the media asset.
                additionalProperties:
                  type: string
                type: object
            type: object
          description: The array of media assets in the batch
          type: array
        paging:
          description: Consists of pagination information.
          properties:
            cursors:
              description: Consists of cursor markers used in pagination.
              properties:
                after:
                  description: Cursor parameter to use in the next request to the resource to fetch the next page of data. A missing or empty value indicates that the end of the result set has been reached.
                  type: string
                before:
                  description: Cursor parameter to use in the next request to the resource to fetch the previous page of data. A missing or empty value indicates that the beginning of the result set has been reached.
                  type: string
              type: object
          type: object
      nullable: false
    RichmediaRichMediaAssetPublishRequest:
      required:
        - assetType
        - assets
      type: object
      example:
        assetType: dishImage
        publisher: contentMenuSync
        externalId: rNXjPKwIaN7StcV3YQfY
        assets:
          - assetContext:
              tenant: uk
              restaurantKey: brg_chain1
              dishKey: cheeseburger
            sourceAssetUrl: https://example.org/image01.jpg
            supplier: uk#brg_chain1
            tags:
              - ai-generated
          - assetContext:
              tenant: uk
              restaurantKey: brg_chain2
              dishKey: mcflurry
            sourceAssetUrl: https://example.org/image02.jpg
            supplier: uk#brg_chain2
      properties:
        assetType:
          description: Media asset type of published media assets. Must match an asset type defined in the metadata for your client.
          type: string
        publisher:
          description: |
            The sender of the request. If provided, it must match one of the registered publishers in the client profile or the request will be rejected. If not provided - the client name will be used by default.
          type: string
        externalId:
          description: String which can be provided by the client to later identify the media assets batch on their side
          type: string
        assets:
          maxItems: 2500
          type: array
          minItems: 1
          items:
            properties:
              assetContext:
                description: Media asset context in dictionary format. Can contain additional data that will be published alongside the media asset.
                additionalProperties:
                  type: string
                type: object
              sourceAssetUrl:
                description: Source media asset URL. The remote HTTP or HTTPS URL address of an existing media asset or a private S3 object URL in a whitelisted bucket.
                type: string
              supplier:
                description: |
                  The supplier of the media assets. Could be an agency, brand or even individual restaurant that owns and provides media assets. See the additional guidance https://justeattakeaway.atlassian.net/wiki/spaces/ContentVertical/pages/6056083749/Integrating+with+Content+as+a+service+CaaS
                type: string
              tags:
                description: List of custom tags to apply to the media asset alongside the default tags defined in the asset type schema.
                type: array
                maxItems: 10
                items:
                  type: string
                  minLength: 1
                  maxLength: 50
            type: object
          description: The array of media assets to publish.
      nullable: false
    RichmediaRichMediaImageBatchResponse:
      required:
        - batchStatus
      type: object
      example:
        batchStatus: partiallySucceeded
        externalId: rNXjPKwIaN7StcV3YQfY
        images:
          - imageContext:
              tenant: uk
              restaurantKey: burgers&pizza
              dishKey: pizza
            imageStatus: succeeded
            urlTemplate: https://cloudinary.test/image/upload/c_fill,q_auto,{transformations}/v1/uk/dishes/burgers_pizza/image01
            sourceImageUrl: https://test.test/image01.jpg
          - imageContext:
              tenant: uk
              restaurantKey: burgers&pizza
              dishKey: burger
            imageStatus: failed
            sourceImageUrl: https://test.test/image02.jpg
            failureReason: Source image exeeds maximum size of 10 MB.
        paging:
          cursors:
            after: 926cdc79-7802-4dbf-820e-10a448edfedf
            before: bd7e1aeb-1a73-46bf-8f07-5b3716693b35
      properties:
        batchStatus:
          format: enum
          description: The status of batch request
          enum:
            - queued
            - running
            - succeeded
            - partiallySucceeded
            - failed
            - cancelled
          type: string
        externalId:
          description: String which can be provided by the client to later identify the images batch on their side
          type: string
        images:
          items:
            required:
              - sourceImageUrl
              - imageContext
              - imageStatus
            properties:
              failureReason:
                description: Can contain additional information about image publishing failure
                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
              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
              imageStatus:
                format: enum
                description: The status of individual image
                enum:
                  - succeeded
                  - failed
                type: string
              imageContext:
                description: Image context in dictionary format. Can contain additional data that will be published alongside the image.
                additionalProperties:
                  type: string
                type: object
            type: object
          description: The array of images in the batch
          type: array
        paging:
          description: Consists of pagination information.
          properties:
            cursors:
              description: Consists of cursor markers used in pagination.
              properties:
                after:
                  description: Cursor parameter to use in the next request to the resource to fetch the next page of data. A missing or empty value indicates that the end of the result set has been reached.
                  type: string
                before:
                  description: Cursor parameter to use in the next request to the resource to fetch the previous page of data. A missing or empty value indicates that the beginning of the result set has been reached.
                  type: string
              type: object
          type: object
      nullable: false
    RichmediaRichMediaImagePublishRequest:
      required:
        - imageType
        - images
      type: object
      example:
        imageType: dishImage
        imagePublisher: contentMenuSync
        externalId: rNXjPKwIaN7StcV3YQfY
        images:
          - imageContext:
              tenant: uk
              restaurantKey: brg_chain1
              dishKey: cheeseburger
            sourceImageUrl: https://test.test/image01.jpg
            supplier: uk#brg_chain1
            tags:
              - ai-generated
          - imageContext:
              tenant: uk
              restaurantKey: brg_chain2
              dishKey: mcflurry
            sourceImageUrl: https://test.test/image02.jpg
            supplier: uk#brg_chain2
      properties:
        imageType:
          description: Image type of published images. Must match an image type defined in the metadata for your client.
          type: string
        imagePublisher:
          description: |
            The sender of the request. If provided, it must match one of the registered publishers in the client profile or the request will be rejected. If not provided - the client name will be used by default.
          type: string
        externalId:
          description: String which can be provided by the client to later identify the images batch on their side
          type: string
        images:
          maxItems: 2500
          type: array
          minItems: 1
          items:
            properties:
              imageContext:
                description: Image context in dictionary format. Can contain additional data that will be published alongside the image.
                additionalProperties:
                  type: string
                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
              supplier:
                description: |
                  The supplier of the imagery. Could be an agency, brand or even individual restaurant that owns and provides images. See the additional guidance https://justeattakeaway.atlassian.net/wiki/spaces/ContentVertical/pages/6056083749/Integrating+with+Content+as+a+service+CaaS
                type: string
              tags:
                description: List of custom tags to apply to the image alongside the default tags defined in the image type schema.
                type: array
                maxItems: 10
                items:
                  type: string
                  minLength: 1
                  maxLength: 50
            type: object
          description: The array of images to publish.
      nullable: false
    S3GeneratePresignedFileResponse:
      description: Response to request to generate presigned file link
      type: object
      properties:
        documentKey:
          type: string
          description: the file name
        headers:
          type: object
          description: Headers to include on subsequent request following redirect
          additionalProperties:
            oneOf:
              - type: string
              - type: integer
      example:
        documentKey: 313d6863-c160-497a-8691-fdb688401ac6
        headers:
          x-amz-server-side-encryption: AES256
    SanityDocumentEventPost:
      type: object
      additionalProperties: true
      properties:
        _id:
          type: string
          description: The document ID
        _type:
          type: string
          description: The Sanity document type
        _rev:
          type: string
          description: The Sanity document revision
        _createdAt:
          type: string
          format: date-time
          description: The date and time when the document was created
        _updatedAt:
          type: string
          format: date-time
          description: The date and time when the document was last updated
      required:
        - _id
        - _type
        - _rev
        - _createdAt
        - _updatedAt
      example:
        _id: e18b4a63-3b5d-4bcc-b6b9-54ee335995ec
        _type: filter
        _rev: c9OHh4bpULqFYpOnlrIEjs
        _createdAt: '2024-12-09T16:15:58Z'
        _updatedAt: '2024-12-09T16:19:47Z'
        name: 40% off
        slug: 40-off
        requirements:
          - type: offerId
            value:
              - 40FRI20
              - 40SAT20
    ScooberPayrollPayrollapiRegion:
      type: object
      description: An object that stores the information of a region
      properties:
        countryCode:
          type: string
          description: The region's country code represented by two-letter country code (ISO 3166-1 alpha-2)
        cityName:
          type: string
          description: The region's city name or any city if the entire region is targeted
    ScooberPayrollPayrollapiAbsenceTypesAbsenceType:
      type: object
      description: The payload that turns a absence type
      properties:
        id:
          description: id of absence type
          type: string
        type:
          description: type of absence type
          type: string
        region:
          $ref: '#/components/schemas/ScooberPayrollPayrollapiRegion'
        reason:
          description: reason for the absence type
          type: string
        isPaid:
          description: indicates if the absence type is paid
          type: boolean
    ScooberPayrollPayrollapiAdminReprocessingRequest:
      type: object
      description: Request payload to reprocess events by type and identifier
      properties:
        fieldName:
          type: string
          example: shiftId
          description: The field name representing the unique identifier in the event type
        fieldValues:
          type: array
          items:
            type: string
          minItems: 1
          maxItems: 100
          example:
            - 694b1234ca1b4803e4c76abc
          description: List of unique identifier values to reprocess
        endTimestamp:
          type: string
          format: date-time
          example: '2024-10-01T00:00:00Z'
          description: ISO 8601 timestamp up to which events should be reprocessed
      required:
        - fieldName
        - fieldValues
        - endTimestamp
    ScooberPayrollPayrollapiPublicHolidaysCreatePublicHolidayRequest:
      type: object
      description: Request to create a new public holiday
      properties:
        countryCode:
          type: string
          pattern: ^[A-Za-z]{2}$
          example: de
          description: ISO 3166-1 alpha-2 country code
        cities:
          type: array
          items:
            type: string
          example:
            - de:berlin
          description: List of cities in "country:city" format. Empty means country-wide.
        day:
          type: string
          format: date
          example: '2024-12-25'
          description: The date of the public holiday
        description:
          type: string
          nullable: true
          example: Christmas Day
          description: Description or name of the public holiday
      required:
        - countryCode
        - day
    ScooberPayrollPayrollapiPublicHolidaysPublicHolidayResponse:
      type: object
      description: Public holiday information
      properties:
        id:
          type: string
          example: 507f1f77bcf86cd799439011
          description: Unique public holiday identifier
        countryCode:
          type: string
          pattern: ^[A-Za-z]{2}$
          example: de
          description: ISO 3166-1 alpha-2 country code
        day:
          type: string
          format: date
          example: '2024-12-25'
          description: The date of the public holiday
        description:
          type: string
          nullable: true
          example: Christmas Day
          description: Description or name of the public holiday
        cities:
          type: array
          items:
            type: string
          example: []
          description: List of cities where the holiday applies, in "country:city" format. Empty means country-wide.
      required:
        - id
        - countryCode
        - day
        - cities
    ScooberPayrollPayrollapiPublicHolidaysUpdatePublicHolidayRequest:
      type: object
      description: Request to update an existing public holiday
      properties:
        countryCode:
          type: string
          pattern: ^[A-Za-z]{2}$
          example: de
          description: ISO 3166-1 alpha-2 country code
        cities:
          type: array
          items:
            type: string
          example:
            - de:berlin
          description: List of cities in "country:city" format. Empty means country-wide.
        day:
          type: string
          format: date
          example: '2024-12-25'
          description: The date of the public holiday
        description:
          type: string
          nullable: true
          example: Christmas Day
          description: Description or name of the public holiday
      required:
        - countryCode
        - day
    ScooberPayrollPayrollapiSettingsChangeCountrySettings:
      type: object
      description: Request payload to update country settings
      allOf:
        - $ref: '#/components/schemas/ScooberPayrollPayrollapiSettingsCountrySettingsCommonProperties'
      required:
        - active
        - countryName
        - currency
        - dateFormat
        - distanceUnit
        - language
        - thousandsSeparator
        - timezone
    ScooberPayrollPayrollapiSettingsCountrySettingsCommonProperties:
      type: object
      description: Commons fields for country settings used in multiple operations
      properties:
        active:
          type: boolean
          example: true
          description: Whether the country settings are active
        countryName:
          type: string
          minLength: 3
          maxLength: 100
          example: Deutschland
          description: The name of the country exhibited in the Payroll Web
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          example: EUR
          description: ISO 4217 currency code
        dateFormat:
          type: string
          pattern: ^(dd[\./-]{1}MM[\./-]{1}yyyy|MM[\./-]{1}dd[\./-]{1}yyyy|yyyy[\./-]{1}MM[\./-]{1}dd)$
          example: dd.MM.yyyy
          description: Date format pattern
        distanceUnit:
          type: string
          enum:
            - KM
            - MILE
          example: KM
          description: Distance unit for measurements
        language:
          type: string
          pattern: ^[a-z]{2}$
          example: pt
          description: ISO 639-1 language code
        thousandsSeparator:
          type: boolean
          example: true
          description: Whether to use thousands separator in number formatting
        timezone:
          type: string
          pattern: ^[a-zA-Z]+/[a-zA-Z_]+$
          example: Europe/Berlin
          description: IANA timezone identifier
    ScooberPayrollPayrollapiSettingsCountrySettingsResponse:
      type: object
      description: Country settings and regional configurations
      allOf:
        - type: object
          properties:
            countryCode:
              type: string
              pattern: ^[a-zA-Z]{2}$
              example: BR
              description: ISO 3166-1 alpha-2 country code
        - $ref: '#/components/schemas/ScooberPayrollPayrollapiSettingsCountrySettingsCommonProperties'
      required:
        - active
        - countryCode
        - countryName
        - currency
        - dateFormat
        - distanceUnit
        - language
        - thousandsSeparator
        - timezone
    ScooberPayrollPayrollapiSettingsCreateCountrySettings:
      type: object
      description: Request payload to create new country settings
      allOf:
        - type: object
          properties:
            countryCode:
              type: string
              pattern: ^[a-zA-Z]{2}$
              example: BR
              description: ISO 3166-1 alpha-2 country code (must be unique)
        - $ref: '#/components/schemas/ScooberPayrollPayrollapiSettingsCountrySettingsCommonProperties'
      required:
        - active
        - countryCode
        - countryName
        - currency
        - dateFormat
        - distanceUnit
        - language
        - thousandsSeparator
        - timezone
    ScooberPayrollPayrollapiTimeCompensationPoliciesAdditionalTimeRange:
      type: object
      description: Object that represents the period of time when additional rates may apply
      properties:
        minPerDay:
          description: Inform the min amount of time per day allowed to calculate additional compensation
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesTimeAmount'
        maxPerDay:
          description: Inform the max amount of time per day allowed to calculate additional compensation
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesTimeAmount'
        minPerYear:
          description: Inform the min amount of time per year allowed to calculate additional compensation
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesTimeAmount'
        maxPerYear:
          description: Inform the max amount of time per year allowed to calculate additional compensation
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesTimeAmount'
    ScooberPayrollPayrollapiTimeCompensationPoliciesCreateTimeCompensationPolicy:
      type: object
      description: Object that creates a new Time Compensation Policy
      required:
        - additionalRate
        - country
        - effectiveOn
        - name
        - timeScope
        - type
        - weekDays
        - weeklyThresholdInHours
      properties:
        country:
          description: The policy's country code represented by two-letter country code (ISO 3166-1 alpha-2)
          type: string
          pattern: \D{2}
        city:
          description: The policy's city name when applicable
          type: string
        name:
          description: The policy's name
          type: string
        description:
          description: The detailed policy's description
          type: string
        weeklyThresholdInHours:
          description: The maximum hours in a week accounted as regular working hours
          type: number
          format: double
        advanceShiftPlanningDays:
          description: The number of days in advance that shifts are planned
          type: integer
          format: int64
        timeScope:
          description: The period of time in which additional compensation should be paid
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesTimeScope'
        includeHolidays:
          description: Indicates if the Time Compensation policy applies in bank holidays
          type: boolean
        effectiveOn:
          description: The date since when the Time Compensation policy will be effective
          type: string
          format: date
        type:
          description: Indicates the type of compensation to be paid
          type: string
          enum:
            - OVERTIME
            - EXTRA_TIME
            - PREMIUM
        weekDays:
          description: The days of week in which the Time Compensation policy is applicable
          maxItems: 2147483647
          minItems: 1
          uniqueItems: true
          type: array
          items:
            type: string
            enum:
              - MONDAY
              - TUESDAY
              - WEDNESDAY
              - THURSDAY
              - FRIDAY
              - SATURDAY
              - SUNDAY
        additionalRate:
          description: The rate to be applied for additional time
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesTimeCompensationRate'
        additionalTimeRange:
          description: The period of time in which additions should be paid
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesAdditionalTimeRange'
        seniorityLevels:
          description: The courier's seniority level in which the policy applies to
          type: array
          items:
            type: string
            enum:
              - LEVEL_0
              - LEVEL_1
              - UNDEFINED
        contractTypes:
          description: The type of contract in which the policy applies to
          type: array
          items:
            type: string
            enum:
              - FULL_TIME
              - PART_TIME
              - FREELANCER
              - STUDENT
              - MINI_JOBBER
              - MIDI_JOBBER
              - SUBCONTRACTOR
              - CONTINGENT_WORKER
              - FLEX
              - UNKNOWN
        dailyOvertimeDisabled:
          description: The indication in the policy whether the Daily Overtime should or should not be accounted
          type: boolean
    ScooberPayrollPayrollapiTimeCompensationPoliciesTimeAmount:
      type: object
      description: Object that represents the amount of time used in the Time Compensation Policy
      properties:
        hours:
          description: The number representing the hours part of time
          type: integer
          format: int32
        minutes:
          description: The number representing the minutes part of time
          type: integer
          format: int32
        seconds:
          description: The number representing the seconds part of time
          type: integer
          format: int32
        milliseconds:
          description: The number representing the milliseconds part of time
          type: integer
          format: int32
    ScooberPayrollPayrollapiTimeCompensationPoliciesTimeCompensationPolicy:
      type: object
      properties:
        id:
          description: The ID that uniquely identifies a given Time Compensation policy
          type: string
        region:
          description: The region (country:city) where a policy is applicable
          type: string
        effectiveOn:
          description: The moment from where a policy become active
          type: string
          format: date-time
        type:
          description: The type of policy being created
          type: string
          enum:
            - OVERTIME
            - EXTRA_TIME
            - PREMIUM
        shiftSettings:
          description: The configuration that defines how a Shift will intersects the policy
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesTimeCompensationShiftSettings'
        additionalRate:
          description: The rate to be paid on top of hourly wage
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesTimeCompensationRate'
        includeHolidays:
          description: The flags that indicates whether the policy should be applied in bank holidays
          type: boolean
        createdAt:
          description: The moment when the policy was created
          type: string
          format: date-time
        additionalTimeRange:
          description: Other threshold that constraint the application of a policy e.g. Max Overtime in a year
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesAdditionalTimeRange'
        weeklyThresholdInHours:
          description: The amount of hours that should be crossed to the policy be applied
          type: number
          format: double
        seniorityLevels:
          description: The courier's seniority level in which the policy applies to
          type: array
          items:
            type: string
            enum:
              - LEVEL_0
              - LEVEL_1
              - UNDEFINED
        contractTypes:
          description: The type of contract in which the policy applies to
          type: array
          items:
            type: string
            enum:
              - FULL_TIME
              - PART_TIME
              - FREELANCER
              - STUDENT
              - MINI_JOBBER
              - MIDI_JOBBER
              - SUBCONTRACTOR
              - CONTINGENT_WORKER
              - FLEX
              - UNKNOWN
        dailyOvertimeDisabled:
          description: The indication in the policy whether the Daily Overtime should or should not be accounted
          type: boolean
    ScooberPayrollPayrollapiTimeCompensationPoliciesTimeCompensationRate:
      type: object
      description: The rate to be applied in the time to compensate
      required:
        - rate
        - type
      properties:
        type:
          description: The type of rate
          type: string
          enum:
            - PERCENT
            - FIXED_AMOUNT
        rate:
          description: The rate amount
          type: number
          format: double
    ScooberPayrollPayrollapiTimeCompensationPoliciesTimeCompensationShiftSettings:
      type: object
      description: The shift configuration that needs to intersect to the policy be applied
      properties:
        timeScope:
          description: The time range in which a policy is applicable
          $ref: '#/components/schemas/ScooberPayrollPayrollapiTimeCompensationPoliciesTimeScope'
        advanceShiftPlanningDays:
          description: The number of days in advance that courier's Shifts are planned
          type: integer
          format: int64
        weekDays:
          description: The days of week in which the Shift Settings are applicable
          uniqueItems: true
          type: array
          items:
            type: string
            enum:
              - MONDAY
              - TUESDAY
              - WEDNESDAY
              - THURSDAY
              - FRIDAY
              - SATURDAY
              - SUNDAY
    ScooberPayrollPayrollapiTimeCompensationPoliciesTimeScope:
      type: object
      description: The time range in which a policy is applicable
      required:
        - endAt
        - startAt
      properties:
        startAt:
          description: The local time of the beginning of period to pay additional
          type: string
          pattern: ^(0[0-9]{1}|1[0-9]{1}|2[0-3]{1}):[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$
          example: '10:00:00'
        endAt:
          description: The local time of the end of period to pay additional
          type: string
          pattern: ^(0[0-9]{1}|1[0-9]{1}|2[0-3]{1}):[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$
          example: '16:00:00'
    ScooberPayrollPayrollapiTimeCompensationPoliciesUpdatePolicyRequest:
      type: object
      description: The payload that turns a policy deactivated
      properties:
        active:
          description: The state of active or inactive
          type: boolean
        name:
          description: The policy's name
          type: string
        description:
          description: The policy's detailed description
          type: string
    ScooberPayrollPayrollvendorintegrationAddPaycodeAbsenceMappingRequest:
      required:
        - paycodeConfigurations
        - reason
        - region
      type: object
      properties:
        reason:
          description: The reason for a courier absence also known as subtype
          type: string
        region:
          description: The target region of a paycode mapping
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationRegion'
        paycodeConfigurations:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPaycodeConfigurations'
        takesEffectOn:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationTakesEffectOn'
    ScooberPayrollPayrollvendorintegrationAddPaycodeAggregatorMappingRequest:
      type: object
      required:
        - region
        - paycode
        - name
        - paycodes
      properties:
        paycode:
          type: string
          x-field-extra-annotation: '@jakarta.validation.constraints.NotBlank(message = "The aggregator''s paycode should be informed")'
          example: '529'
        name:
          type: string
          example: Attendance Pay Code Aggregator
          x-field-extra-annotation: '@jakarta.validation.constraints.NotBlank(message = "The aggregator''s name should be informed")'
        region:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationRegion'
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        paycodes:
          type: array
          items:
            type: string
          x-field-extra-annotation: '@jakarta.validation.constraints.NotEmpty(message = "The list of paycodes to be aggregated should not be empty")'
        takesEffectOn:
          type: string
          format: date
    ScooberPayrollPayrollvendorintegrationAddPaycodeAttendanceMappingRequest:
      x-class-extra-annotation: '@com.scoober.payrollvendorintegration.infrastructure.http.paycode.requests.validator.ValidPolicyId'
      type: object
      required:
        - payable
        - region
        - paycode
      properties:
        payable:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationAttendancePayableType'
        policyId:
          type: string
        region:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationRegion'
        paycode:
          type: string
          example: ABC
        unitType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationUnitType'
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        takesEffectOn:
          type: string
          format: date
    ScooberPayrollPayrollvendorintegrationAddPaycodeNonDeliveryShiftMappingRequest:
      required:
        - paycode
        - region
      type: object
      properties:
        paycode:
          type: string
          description: The pay code of the mapping
          example: '529'
        type:
          type: string
          description: The NDS type of the mapping
        reason:
          type: string
          description: The NDS reason of the mapping
        region:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationRegion'
        unitType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationUnitType'
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        takesEffectOn:
          type: string
          description: Local date defining when the pay code mapping should take effect
          format: date
          example: '2025-07-30'
    ScooberPayrollPayrollvendorintegrationAddPaycodeReimbursementMappingRequest:
      required:
        - paycode
        - region
      type: object
      properties:
        paycode:
          type: string
          description: The pay code of the mapping
          example: '529'
        region:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationRegion'
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        takesEffectOn:
          type: string
          description: Local date defining when the pay code mapping should take effect
          format: date
          example: '2025-07-30'
        reimbursementReason:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationReimbursementReason'
    ScooberPayrollPayrollvendorintegrationAddPaycodeSupplementMappingRequest:
      type: object
      required:
        - paycode
        - region
      properties:
        paycode:
          type: string
          example: '529'
        region:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationRegion'
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        supplementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationSupplementType'
        takesEffectOn:
          type: string
          format: date
    ScooberPayrollPayrollvendorintegrationAddPaycodeTippingMappingRequest:
      type: object
      required:
        - paycode
        - region
      properties:
        paycode:
          type: string
          example: '529'
        region:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationRegion'
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        takesEffectOn:
          type: string
          format: date
    ScooberPayrollPayrollvendorintegrationAmountType:
      type: string
      description: The amount type of the pay code
      enum:
        - POSITIVE
        - NEGATIVE
    ScooberPayrollPayrollvendorintegrationApiError:
      type: object
      properties:
        type:
          type: string
          description: type of the error
        message:
          type: string
          description: message of the error
    ScooberPayrollPayrollvendorintegrationAssociatePaycodeConfigurationMappingRequest:
      required:
        - id
        - paycodeConfigurations
        - takesEffectOn
      type: object
      properties:
        id:
          description: The unique identifier of paycode absence mapping
          type: string
        paycodeConfigurations:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPaycodeConfigurations'
        takesEffectOn:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationTakesEffectOn'
    ScooberPayrollPayrollvendorintegrationAssociatePaycodeMappingRequest:
      required:
        - id
        - paycode
        - takesEffectOn
      type: object
      properties:
        id:
          type: string
          description: ID of uninitialized pay code mapping
        paycode:
          type: string
          description: Pay code of uninitialized pay code mapping
        unitType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationUnitType'
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        takesEffectOn:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationTakesEffectOn'
    ScooberPayrollPayrollvendorintegrationAttendancePayableType:
      type: string
      enum:
        - ExtraTime
        - OverTime
        - WorkTime
        - OVERTIME_UNSUPPLEMENTED
      x-enum-varnames:
        - EXTRA_TIME
        - OVER_TIME
        - WORK_TIME
        - OVERTIME_UNSUPPLEMENTED
    ScooberPayrollPayrollvendorintegrationDatevPaycodeConfiguration:
      required:
        - processingKey
        - unitType
        - amountType
      type: object
      allOf:
        - $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationVendorDiscriminator'
        - type: object
          properties:
            wageType:
              description: The value configured as wage type (LA) in the `Datev` system
              type: string
            processingKey:
              description: The value configured as processing key (BS) in the `Datev` system
              type: string
            unitType:
              $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationUnitType'
            amountType:
              $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationAmountType'
    ScooberPayrollPayrollvendorintegrationDatevRecord:
      type: object
      properties:
        datevId:
          type: integer
          format: int32
          description: The `datev` id of the user
        amount:
          type: string
          description: the amount of the record
        processingKey:
          type: integer
          format: int32
          description: vendor processing key
        wageType:
          type: integer
          format: int32
          description: wage type of the record
        billingPeriod:
          type: string
          description: the target payroll period
        type:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationDatevRecordType'
    ScooberPayrollPayrollvendorintegrationDatevRecordType:
      type: string
      description: the payable type of the `datev` record
      enum:
        - ABSENCE
        - ATTENDANCE
        - NON_DELIVERY_SHIFT
        - DISTANCE_REIMBURSEMENT
        - EQUIPMENT_CLEANING
        - PERFORMANCE_BONUS
        - RAF_BONUS
        - TIP
    ScooberPayrollPayrollvendorintegrationDecommissionPaycodeRequest:
      type: object
      properties:
        takesEffectUntil:
          type: string
          description: Local date defining when the pay code mapping stops being valid
          format: date
    ScooberPayrollPayrollvendorintegrationElementType:
      type: string
      description: element type of the pay code
      enum:
        - POSITIVE_PAY_ELEMENT
        - NEGATIVE_TIME_ELEMENT
    ScooberPayrollPayrollvendorintegrationPayElementType:
      type: string
      description: the pay element type of the paycode
      enum:
        - ADDITIONAL
        - RECURRING
    ScooberPayrollPayrollvendorintegrationPaycodeAbsenceMappingResponse:
      type: object
      properties:
        id:
          description: The unique identifier for a paycode mapping
          type: string
        reason:
          description: The absence reason that maps to the paycode configuration(s)
          type: string
        region:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationRegion'
        paycodeConfigurations:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPaycodeConfigurations'
        active:
          description: Indicates whether a given mapping is initialized and not decommissioned
          type: boolean
        decommissioned:
          description: Indicates whether a given mapping was decommissioned and should not be used
          type: boolean
        notInitialized:
          description: Indicates whether a given mapping has not paycode yet associated
          type: boolean
        takesEffectOn:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationTakesEffectOn'
        takesEffectUntil:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationTakesEffectUntil'
        createdAt:
          description: The date-time when the mapping was created
          type: string
          format: date-time
        lastModifiedAt:
          description: The date-time when the mapping was last modified
          type: string
          format: date-time
    ScooberPayrollPayrollvendorintegrationPaycodeAggregatorMappingResponse:
      type: object
      properties:
        id:
          type: string
        paycode:
          type: string
        name:
          type: string
        region:
          type: string
          example: be:any_city
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        paycodes:
          type: array
          items:
            type: string
        active:
          type: boolean
        decommissioned:
          type: boolean
        notInitialized:
          type: boolean
        takesEffectOn:
          type: string
          format: date-time
        takesEffectUntil:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        lastModifiedAt:
          type: string
          format: date-time
    ScooberPayrollPayrollvendorintegrationPaycodeAttendanceMappingResponse:
      type: object
      properties:
        id:
          type: string
        paycode:
          type: string
        payable:
          type: string
        policyId:
          type: string
        policyName:
          type: string
        region:
          type: string
          example: be:any_city
        unitType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationUnitType'
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        active:
          type: boolean
        decommissioned:
          type: boolean
        notInitialized:
          type: boolean
        takesEffectOn:
          type: string
          format: date-time
        takesEffectUntil:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        lastModifiedAt:
          type: string
          format: date-time
    ScooberPayrollPayrollvendorintegrationPaycodeConfigurations:
      description: The list of paycode configurations belonging to an absence, the structure is Vendor-dependent
      type: array
      items:
        oneOf:
          - $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationDatevPaycodeConfiguration'
          - $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationStradaPaycodeConfiguration'
    ScooberPayrollPayrollvendorintegrationPaycodeNonDeliveryShiftMappingResponse:
      type: object
      properties:
        id:
          type: string
        paycode:
          type: string
        type:
          type: string
        reason:
          type: string
        region:
          type: string
          example: be:any_city
        unitType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationUnitType'
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        active:
          type: boolean
        decommissioned:
          type: boolean
        notInitialized:
          type: boolean
        takesEffectOn:
          type: string
          format: date-time
        takesEffectUntil:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        lastModifiedAt:
          type: string
          format: date-time
    ScooberPayrollPayrollvendorintegrationPaycodeReimbursementResponse:
      type: object
      properties:
        id:
          type: string
          description: id of pay code
        paycode:
          type: string
          description: pay code
        region:
          type: string
          description: region of pay code
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        takesEffectOn:
          type: string
          description: the date that this pay code is going to be active
          format: date-time
        takesEffectUntil:
          type: string
          description: the date that this pay code is going to be de-active
          format: date-time
        decommissioned:
          type: boolean
          description: boolean to show if a pay code is decommissioned
        notInitialized:
          type: boolean
          description: boolean to show if a pay code is initialized
        active:
          type: boolean
          description: boolean to show if a pay code is active
        reimbursementReason:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationReimbursementReason'
    ScooberPayrollPayrollvendorintegrationPaycodeSupplementMappingResponse:
      type: object
      properties:
        id:
          type: string
        paycode:
          type: string
        region:
          type: string
          example: de:any_city
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        supplementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationSupplementType'
        active:
          type: boolean
        decommissioned:
          type: boolean
        notInitialized:
          type: boolean
        takesEffectOn:
          type: string
          format: date-time
        takesEffectUntil:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        lastModifiedAt:
          type: string
          format: date-time
    ScooberPayrollPayrollvendorintegrationPaycodeTippingMappingResponse:
      type: object
      properties:
        id:
          type: string
        paycode:
          type: string
        region:
          type: string
          example: be:any_city
        elementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
        payElementType:
          $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
        active:
          type: boolean
        decommissioned:
          type: boolean
        notInitialized:
          type: boolean
        takesEffectOn:
          type: string
          format: date-time
        takesEffectUntil:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        lastModifiedAt:
          type: string
          format: date-time
    ScooberPayrollPayrollvendorintegrationRegion:
      type: object
      description: An object that stores the information of a region
      properties:
        countryCode:
          type: string
          description: The region's country code represented by two-letter country code (ISO 3166-1 alpha-2)
        cityName:
          type: string
          description: The region's city name or any city if the entire region is targeted
    ScooberPayrollPayrollvendorintegrationReimbursementReason:
      type: string
      description: The reimbursement reason of the mapping
      enum:
        - DISTANCE_MONEY
        - DISTANCE_MONEY_TAXABLE
        - DISTANCE_VOUCHER
    ScooberPayrollPayrollvendorintegrationStradaPaycodeConfiguration:
      required:
        - paycode
        - unitType
        - elementType
      type: object
      allOf:
        - $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationVendorDiscriminator'
        - type: object
          properties:
            paycode:
              description: Pay code of uninitialized pay code mapping
              type: string
            unitType:
              $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationUnitType'
            elementType:
              $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationElementType'
            payElementType:
              $ref: '#/components/schemas/ScooberPayrollPayrollvendorintegrationPayElementType'
    ScooberPayrollPayrollvendorintegrationSupplementType:
      type: string
      enum:
        - PERFORMANCE_BONUS
        - TIP
        - EQUIPMENT_CLEANING
        - REFER_A_FRIEND_REFERRER
        - REFER_A_FRIEND_REFERRAL
    ScooberPayrollPayrollvendorintegrationTakesEffectOn:
      description: Local date defining when the pay code mapping should take effect
      type: string
      format: date-time
    ScooberPayrollPayrollvendorintegrationTakesEffectUntil:
      description: Local date defining when the pay code mapping was/will be decommissioned
      type: string
      format: date-time
    ScooberPayrollPayrollvendorintegrationUnitType:
      type: string
      description: The unit type of the pay code
      enum:
        - DAYS
        - HOURS
        - PERCENT
        - KM
        - PIECES
    ScooberPayrollPayrollvendorintegrationVendorDiscriminator:
      required:
        - vendor
      type: object
      properties:
        vendor:
          description: The vendor name utilized in the region mapping paycode
          type: string
      discriminator:
        description: The property name utilized to determine which Vendor the configuration belongs to
        propertyName: vendor
    ScoobercuriosityAuthServiceAccountConfirmationResponse:
      title: Root Type for AccountConfirmationResponse
      description: Account Confirmation Response
      required:
        - accessToken
        - refreshToken
        - userId
        - confirmationTime
      type: object
      properties:
        confirmationTime:
          type: string
          description: confirmation time in ISO 8601 format
        refreshToken:
          description: User's Refresh Token. Can be used to to get a new Access Token.
          type: string
        accessToken:
          description: User's Access Token.
          type: string
        userId:
          description: Courier's ID
          type: string
      example:
        confirmationTime: '2021-02-18T12:57:28.714819Z'
        userId: e354d3bd-57b7-488d-9ade-2e15aac5a790
        accessToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gU21pdGgiLCJlbWFpbCI6ImpvaG4uc21pdGguZ21haWwuY29tIn0.klCBfmCL5vZOVg5-tJCg_TJi_w1uuyszI4OcXD8EblY
        refreshToken: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE1OTgwMDgwNzMsImV4cCI6MTYyOTU0NDA3MywiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImZpcnN0TmFtZSI6IkpvaG4iLCJsYXN0TmFtZSI6IlNtaXRoIiwiZW1haWwiOiJqb2huLnNtaXRoQGdtYWlsLmNvbSJ9.NFE2z99BAIFF8dj4myCtFm0SuxLuIRObDpFqponIwyc
    ScoobercuriosityAuthServiceAccountDisabledResponse:
      title: Root Type for AccountDisabledResponse
      description: Account Disabled Response
      type: object
      properties:
        reason:
          description: Failure Reason
          type: string
        supportEmail:
          description: Support Email
          type: string
      example:
        reason: ACCOUNT_DISABLED
        supportEmail: support@takeaway.com
    ScoobercuriosityAuthServiceCheckEmailResponse:
      title: Root Type for checkEmailResponse
      description: Tells if the email is available for registration or not.
      required:
        - available
      type: object
      properties:
        available:
          description: |-
            A boolean flag
            - true: the email is available for registration
            - false: the email is not available for registration
          type: boolean
      example:
        available: true
    ScoobercuriosityAuthServiceConfirmAccount:
      title: Root Type for ConfirmAccount
      description: Confirm account
      type: object
      properties:
        email:
          description: Courier's email address
          type: string
        confirmationCode:
          description: Confirmation code from the account confirmation email
          type: string
      example:
        email: john.smith@gmail.com
        confirmationCode: '1234'
    ScoobercuriosityAuthServiceConfirmForgotPassword:
      title: Root Type for ConfirmForgotPassword
      description: Confirm Forgot Password
      type: object
      properties:
        email:
          description: user email
          type: string
        password:
          description: user password
          type: string
        confirmationCode:
          description: Confirmation code. Sent to the provided email upon forgot Password request
          type: string
      example:
        email: john.smith@gmail.com
        password: NewPa$$w0rd
        confirmationCode: '123456'
    ScoobercuriosityAuthServiceConfirmationResponse:
      title: Root Type for ConfirmForgotPasswordResponse
      description: 'Confirm Forgot Password Response 200 '
      type: object
      properties:
        confirmationTime:
          type: string
          description: confirmation time
      example:
        confirmationTime: '2021-02-18T12:57:28.714819Z'
    ScoobercuriosityAuthServiceCourierInfo:
      description: Courier Info response
      required:
        - firstName
        - lastName
        - email
        - locale
      type: object
      properties:
        firstName:
          description: Courier's first name
          type: string
        lastName:
          description: Courier's last name
          type: string
        email:
          description: Courier's email address
          type: string
        verified:
          description: Indicates whether the courier's account is verified via email
          type: boolean
        locale:
          $ref: '#/components/schemas/ScoobercuriosityAuthServiceLocale'
          description: Courier's locale data
      example:
        firstName: John
        lastName: Smith
        email: john.smith@gmail.com
        verified: true
        locale:
          language: en
          country: GB
    ScoobercuriosityAuthServiceCredentials:
      title: Root Type for Credentials
      description: courier credentials
      required:
        - email
        - password
      type: object
      properties:
        email:
          description: Courier's email address
          type: string
        password:
          description: Courier's password
          type: string
      example:
        email: johns.smith@gmail.com
        password: Pa$$w0rd
    ScoobercuriosityAuthServiceErrorCodesCountryCodeMismatch:
      description: country code mismatch error response
      required:
        - reason
      type: object
      properties:
        reason:
          description: The connection code belongs to a restaurant in a different country
          enum:
            - countryCodeMismatch
          type: string
        correctCountryCode:
          description: The correct country code for the connection code provided
          type: string
    ScoobercuriosityAuthServiceErrorCodesEmailAlreadyExists:
      description: Email already exists error response
      required:
        - reason
      type: object
      properties:
        reason:
          description: Email already exists
          enum:
            - emailAlreadyExists
          type: string
    ScoobercuriosityAuthServiceErrorCodesErrorCourierNotFoundResponse:
      description: courier not found response
      required:
        - reason
      type: object
      properties:
        reason:
          description: The reason the courier is unable to perform the action.
          enum:
            - courierNotFound
          type: string
    ScoobercuriosityAuthServiceErrorCodesErrorForbiddenResponse:
      description: not authorized response
      required:
        - reason
      type: object
      properties:
        reason:
          description: The reason the courier is unable to perform the action.
          enum:
            - guestCourier
          type: string
    ScoobercuriosityAuthServiceErrorCodesErrorInvalidConnectionCode:
      description: invalid connection code response
      required:
        - reason
      type: object
      properties:
        reason:
          description: The connection code is either invalid or does not exist
          enum:
            - invalidConnectionCode
          type: string
    ScoobercuriosityAuthServiceErrorCodesErrorInvalidToken:
      description: invalid token
      required:
        - reason
      type: object
      properties:
        reason:
          description: The token is either expired, invalid or user not found
          enum:
            - invalidToken
            - tokenExpired
          type: string
    ScoobercuriosityAuthServiceErrorCodesErrorOtpLoginTooManyAttempts:
      description: OTP login attempt limit exceeded (v=2). Client should ask the user to generate a new code.
      required:
        - reason
      type: object
      properties:
        reason:
          description: User is out of retry attempts for the current OTP.
          type: string
          enum:
            - codeAttemptExceeded
      example:
        reason: codeAttemptExceeded
    ScoobercuriosityAuthServiceErrorCodesErrorOtpLoginUnauthorized:
      description: OTP login unauthorized (v=2). Code cannot be accepted.
      required:
        - reason
      type: object
      properties:
        reason:
          description: |-
            - `invalidCode`: the entered code does not match the latest OTP for this courier.
            - `codeExpired`: the latest OTP has already been used or has expired. Client should ask the user to generate a new code.
          type: string
          enum:
            - invalidCode
            - codeExpired
    ScoobercuriosityAuthServiceForgotPasswordResponse:
      description: forgot password response
      required:
        - email
      type: object
      properties:
        email:
          description: Courier's email address
          type: string
      example:
        email: john.smith@gmail.com
    ScoobercuriosityAuthServiceForgotPassword:
      title: Root Type for ForgotPassword
      description: forgot password request
      required:
        - email
      type: object
      properties:
        email:
          description: 'Courier''s email address '
          type: string
      example:
        email: john.smith@gmail.com
    ScoobercuriosityAuthServiceGuestLoginCredentials:
      title: Root Type for appUuid
      description: Unique id of the app/device id, needed to avoid multiple sessions creation from one device
      required:
        - locale
        - appUuid
      type: object
      properties:
        appUuid:
          description: Unique id of the app/device id, needed to avoid multiple sessions creation from one device
          type: string
        locale:
          $ref: '#/components/schemas/ScoobercuriosityAuthServiceLocale'
          description: Courier's locale info
      example:
        appUuid: 07f099dd-403d-4bb1-aead-070cb9711115
        locale:
          language: en
          country: GB
    ScoobercuriosityAuthServiceInvalidConfirmationCode:
      title: Root Type for InvalidConfirmationCode
      description: invalid confirmation code
      type: object
      properties:
        reason:
          type: string
          description: Failure Reason
      example:
        reason: INVALID_CODE
    ScoobercuriosityAuthServiceInvalidParametersResponse:
      title: Root Type for InvalidParametersResponse
      description: Returned when input parameters are invalid or malformed
      type: object
      properties:
        reason:
          type: string
          description: Failure Reason
      example:
        reason: INVALID_PARAMS
    ScoobercuriosityAuthServiceLocale:
      title: Root Type for Locale
      description: locale of the user
      type: object
      properties:
        language:
          description: ISO-639-1 language code
          type: string
        country:
          description: ISO 3166-1 A2 country code
          type: string
      example:
        language: en
        country: GB
    ScoobercuriosityAuthServiceNewUser:
      description: new user object
      required:
        - userId
      type: object
      properties:
        userId:
          description: Courier's unique ID
          type: string
        confirmationMethod:
          description: 'Account confirmation method to be used. In case null, already confirmed. Available values: CODE, URL'
          enum:
            - CODE
            - URL
          type: string
      example:
        userId: e354d3bd-57b7-488d-9ade-2e15aac5a790
        confirmationMethod: CODE
    ScoobercuriosityAuthServiceOcfToken:
      description: OCF token request schema
      required:
        - token
      type: object
      properties:
        token:
          description: The JWT token to sign-in or verify the account.
          type: string
      example:
        token: >-
          eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIxT245RHdicHUxU3BUU3FKakd5ME1mdHAzai1YZlRvUnV0SFIzb2t1WXlrIn0.eyJleHAiOjE3NjkwNzUxNDQsImlhdCI6MTc2OTA3NDU0NCwianRpIjoib25ydG5hOjQwYTU0MjIzLTY1ZjQtNTM3Yy0wYzRkLTQwYzkxN2QwMGFhYyIsImlzcyI6Imh0dHBzOi8vbWNhcC1rZXljbG9hay5wYS1wYXJ0bmVyLWFjY2Vzcy5wZHYtNi5ldS13ZXN0LTEuc3RhZ2luZy5qZXQtaW50ZXJuYWwuY29tL2F1dGgvcmVhbG1zL21jYXAiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiOTZlMDI2YjYtNDFjZS00NzQxLTlkM2ItZjY3ZjY4Y2UzMGJjIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiYXV0aC1zZXJ2aWNlIiwic2lkIjoiZGYzNjE5MjYtNzViMS00M2E3LWIyOTQtYzQ1OGJkNTM4NjVhIiwiYWNyIjoiMSIsInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsImRlZmF1bHQtcm9sZXMtbWNhcCIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJwcm9maWxlIGVtYWlsIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJuYW1lIjoiSm9obiBEb2UiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhMTUxMjA2Zi1kMjZjLTQ5MDQtODA3NS04NjMxOGMyODQ4NjYiLCJnaXZlbl9uYW1lIjoiSm9obiIsImxvY2FsZSI6ImVuIiwiZmFtaWx5X25hbWUiOiJEb2UiLCJlbWFpbCI6InR1bmEueWFnY2lAanVzdGVhdHRha2Vhd2F5LmNvbSJ9.HfDFKvcwcx-CAiom7D1l6JpqDaWbbrR9CmLsz6dDGlTec0tn_J_qS41h695xScuW5NobkiAWE37fo-XlqbmhjdRb5LrAW_JVDglnHZovcsjhp1VYTHSVAyCI6B9gvvY9IIVmJpnv0eYD_Ias92EjHH46FnldsMjcW1vd6echpPoZ1cwC_GcgYJX19Y7iXjqmGwNhlJTe6hoecBTI4J5zTbwPIzcwkKwCsoyDOLeFYhWsfg3lYf9KtW7yag812YSRBDylwBudIAr7GpiXfpC5Zt5UkBcc4cNqYGScIonOrdkTSyZ7OWQu2zImmPHSGWEOHBbt314SdSphPyijEDbi7r
    ScoobercuriosityAuthServiceOtpLoginCredentials:
      description: OTP login request payload (v=2)
      required:
        - code
        - courierId
      type: object
      properties:
        code:
          description: The 4 digit OTP code sent to the courier's email. Leading zeros are allowed.
          type: string
          pattern: ^[0-9]{4}$
          minLength: 4
          maxLength: 4
        courierId:
          description: The courier's id, as returned by the identify endpoint (v=2).
          type: string
          format: uuid
      example:
        code: '0427'
        courierId: e354d3bd-57b7-488d-9ade-2e15aac5a790
    ScoobercuriosityAuthServiceRefreshTokenCredentials:
      description: refresh token credentials
      required:
        - refreshToken
        - userId
      type: object
      properties:
        refreshToken:
          description: User's JWT Refresh Token.
          type: string
        userId:
          description: Cognito user ID
          type: string
      example:
        userId: 62f031c7-0000-4fc3-baad-f67f6f635cc1
        refreshToken: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE1OTgwMDgwNzMsImV4cCI6MTYyOTU0NDA3MywiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImZpcnN0TmFtZSI6IkpvaG4iLCJsYXN0TmFtZSI6IlNtaXRoIiwiZW1haWwiOiJqb2huLnNtaXRoQGdtYWlsLmNvbSJ9.NFE2z99BAIFF8dj4myCtFm0SuxLuIRObDpFqponIwyc
    ScoobercuriosityAuthServiceResendConfirmation:
      description: resend confirmation response
      required:
        - email
      type: object
      properties:
        email:
          description: Courier's email address
          type: string
      example:
        email: john.smith@gmail.com
    ScoobercuriosityAuthServiceResendLoginEmailResponse:
      description: Resend login email response
      required:
        - actionTaken
        - courierId
      type: object
      properties:
        actionTaken:
          description: action taken during resend login email process
          type: string
          enum:
            - magicLinkSent
        courierId:
          description: The courier's id
          type: string
          format: uuid
      example:
        actionTaken: magicLinkSent
        courierId: e354d3bd-57b7-488d-9ade-2e15aac5a790
    ScoobercuriosityAuthServiceResendMagicLinkRequest:
      description: User identification request payload
      required:
        - email
      type: object
      properties:
        email:
          description: email address of the user
          type: string
      example:
        email: Jon.der@gmail.com
    ScoobercuriosityAuthServiceResendVerificationEmailResponse:
      description: Resend verification email response.
      required:
        - actionTaken
      type: object
      properties:
        actionTaken:
          description: action taken during identification
          type: string
          enum:
            - magicLinkSent
      example:
        actionTaken: magicLinkSent
    ScoobercuriosityAuthServiceTokenSuccessResponse:
      description: response for successful token generation
      required:
        - accessToken
        - refreshToken
        - userId
      type: object
      properties:
        refreshToken:
          description: User's Refresh Token. Can be used to to get a new Access Token.
          type: string
        accessToken:
          description: User's Access Token. Should be included in the following calls for authorization.
          type: string
        userId:
          description: Courier's ID
          type: string
      example:
        userId: e354d3bd-57b7-488d-9ade-2e15aac5a790
        accessToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gU21pdGgiLCJlbWFpbCI6ImpvaG4uc21pdGguZ21haWwuY29tIn0.klCBfmCL5vZOVg5-tJCg_TJi_w1uuyszI4OcXD8EblY
        refreshToken: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE1OTgwMDgwNzMsImV4cCI6MTYyOTU0NDA3MywiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsImZpcnN0TmFtZSI6IkpvaG4iLCJsYXN0TmFtZSI6IlNtaXRoIiwiZW1haWwiOiJqb2huLnNtaXRoQGdtYWlsLmNvbSJ9.NFE2z99BAIFF8dj4myCtFm0SuxLuIRObDpFqponIwyc
    ScoobercuriosityAuthServiceTokenUnauthorizedResponse:
      description: token unauthorized response
      required:
        - reason
      type: object
      properties:
        reason:
          description: '- INVALID_TOKEN: The provided refresh token is invalid or expired'
          enum:
            - INVALID_TOKEN
          type: string
    ScoobercuriosityAuthServiceTooManyAttemptsResponse:
      description: Too many attempts
      required:
        - reason
      type: object
      properties:
        reason:
          description: Reason for the error
          type: string
          enum:
            - tooManyAttempts
      example:
        reason: tooManyAttempts
    ScoobercuriosityAuthServiceUnauthorizedLogin:
      description: unauthorized login response
      required:
        - reason
      type: object
      properties:
        reason:
          description: |-
            Tells why the request is rejected.
            - NOT_VERIFIED: when courier has not confirmed his or her email yet
            - NOT_AUTHORIZED: when the password is wrong or the account does not exists
          enum:
            - NOT_VERIFIED
            - NOT_AUTHORIZED
          type: string
      example:
        reason: NOT_VERIFIED
    ScoobercuriosityAuthServiceUpdateCourierInfo:
      title: Root Type for UpdateCourierInfo
      description: Update Courier Info
      required:
        - firstName
        - lastName
      type: object
      properties:
        firstName:
          description: courier's first name
          type: string
        lastName:
          description: courier's last name
          type: string
      example:
        firstName: John
        lastName: Smith
    ScoobercuriosityAuthServiceUserIdentificationRequest:
      description: User identification request payload
      required:
        - email
      type: object
      properties:
        email:
          description: email address of the user
          type: string
      example:
        email: Jon.der@gmail.com
    ScoobercuriosityAuthServiceUserIdentificationResponse:
      description: User identification response. `actionTaken` and `courierId` are only present when the user exists.
      required:
        - exists
      type: object
      properties:
        exists:
          description: if the user exists in the system
          type: boolean
        actionTaken:
          description: action taken during identification
          type: string
          enum:
            - magicLinkSent
        courierId:
          description: The courier's id. Passed back to the login endpoint together with the OTP code.
          type: string
          format: uuid
      example:
        exists: true
        actionTaken: magicLinkSent
        courierId: e354d3bd-57b7-488d-9ade-2e15aac5a790
    ScoobercuriosityAuthServiceUserNotFoundResponse:
      title: Root Type for FailureUserNotFound
      description: Failure with reason "COURIER_NOT_FOUND"
      type: object
      properties:
        reason:
          description: reason of failure
          type: string
      example:
        reason: USER_NOT_FOUND
    ScoobercuriosityAuthServiceUserRegistrationV2:
      description: User object response
      required:
        - firstName
        - lastName
        - locale
        - email
      type: object
      properties:
        connectionCode:
          description: Restaurant code to connect the courier
          type: string
        firstName:
          description: Courier's first name
          type: string
        lastName:
          description: Courier's last name
          type: string
        email:
          description: Courier's email
          type: string
        locale:
          $ref: '#/components/schemas/ScoobercuriosityAuthServiceLocale'
          description: Courier's locale data
      example:
        connectionCode: UK123456789k
        firstName: John
        lastName: Smith
        email: John.Smith@gmail.com
        locale:
          language: en
          country: GB
    ScoobercuriosityAuthServiceUser:
      description: User object response
      required:
        - firstName
        - lastName
        - email
        - password
        - locale
      type: object
      properties:
        firstName:
          description: Courier's first name
          type: string
        lastName:
          description: Courier's last name
          type: string
        email:
          description: Courier's email address
          type: string
        password:
          description: Courier's password
          type: string
        legalAge:
          description: (Deprecated) Tells if the courier is above the legal age to deliver alcoholic beverages or not. Currently we are not using this field to determine if the courier is above the legal age or not.
          type: boolean
          deprecated: true
        locale:
          $ref: '#/components/schemas/ScoobercuriosityAuthServiceLocale'
          description: Courier's locale data
        guestId:
          description: Guest user id if available, to match guest and permanent sessions
          type: string
        appUuid:
          description: Unique app installation ID
          type: string
      example:
        firstName: John
        lastName: Smith
        email: john.smith@gmail.com
        password: Pa$$w0rd
        legalAge: true
        locale:
          language: en
          country: GB
        guestId: e354d3bd-57b7-488d-9ade-2e15aac5a790
        appUuid: 07f099dd-403d-4bb1-aead-070cb9711115
    ScoobercuriosityAuthServiceVerificationResponse:
      title: Root Type for VerifyAccountResponse
      description: Verify account
      type: object
      properties:
        verifiedAt:
          description: The date and time when the account was verified
          type: string
      example:
        verifiedAt: '2021-02-18T12:57:28.714819Z'
    ScoobercuriosityDeliveryServiceAddressRequest:
      title: Root Type for customer address
      description: Customer address model
      required:
        - city
        - postcode
        - streetName
        - streetNumber
      type: object
      properties:
        city:
          description: City name
          type: string
        postcode:
          description: Postal code
          type: string
        streetName:
          description: Street name
          type: string
        streetNumber:
          description: Street number
          type: string
        countryCode:
          description: Country Code
          type: string
      example:
        city: Berlin
        streetName: Am Lustgarten
        streetNumber: '6'
        postcode: '10178'
        countryCode: DE
    ScoobercuriosityDeliveryServiceAssignUnassignJobRequest:
      title: Root Type for JobAssignment and JobUnassignment
      description: Job Assign & Un-assign
      type: object
      properties:
        courierId:
          description: Courier ID
          type: string
      example:
        courierId: 880bfe02-c115-44f0-b34a-35528dabf31d
    ScoobercuriosityDeliveryServiceBuildingInfo:
      title: Root Type for BuildingInfo
      description: Building info includes extra info for address
      type: object
      properties:
        block:
          description: Address Block
          type: string
        residenceType:
          description: Residence Type
          type: string
        houseName:
          description: House Name
          type: string
        flatNumber:
          description: Flat Number
          type: string
        apartmentName:
          description: Apartment Name
          type: string
        intercom:
          description: Apartment Intercom
          type: string
        doorbell:
          description: Apartment Doorbell
          type: string
        entrance:
          description: Apartment Entrance
          type: string
        floor:
          description: Apartment Floor
          type: string
        door:
          description: Apartment Door
          type: string
        accessCode:
          description: Apartment Access Code
          type: string
    ScoobercuriosityDeliveryServiceChat:
      title: Root Type for Chat
      description: Courier customer chat details
      required:
        - id
      type: object
      properties:
        id:
          description: id of the chat
          type: string
      example:
        id: 1734525117VB26TTC6F9606A3BF0756D3F7600EFBF4FBADC
    ScoobercuriosityDeliveryServiceClientErrorJobStatusChange:
      title: Root Type for ClientError pre order
      description: Client side error for pre order
      required:
        - reason
      type: object
      properties:
        reason:
          description: Failure reason
          type: string
        claimHoursBeforeDelivery:
          description: Courier can claim pre orders up to this many hours before delivery time
          type: integer
    ScoobercuriosityDeliveryServiceClientError:
      title: Root Type for ClientError
      description: Client side error
      type: object
      properties:
        reason:
          description: Failure reason
          type: string
    ScoobercuriosityDeliveryServiceConfirmationWithTimestamp:
      title: Root Type for ConfirmationWithTimestamp
      description: Confirmation with instant timestamp
      type: object
      properties:
        confirmationTime:
          description: Order confirmation time
          type: string
    ScoobercuriosityDeliveryServiceConnectedRestaurant:
      title: Root Type for Connected Restaurant
      description: Connected Restaurant object
      required:
        - id
        - name
        - showOrderList
      type: object
      properties:
        id:
          description: Restaurant id
          type: string
        name:
          description: Restaurant name
          type: string
        showOrderList:
          description: Is courier allowed to see the list
          type: boolean
      example:
        id: '123123'
        name: Great Pizza
        showOrderList: true
    ScoobercuriosityDeliveryServiceCourierNotAuthorizedResponse:
      description: courier not authorized response
      required:
        - reason
      type: object
      properties:
        reason:
          description: The reason the courier is unable to perform the action.
          enum:
            - notAuthorized
          type: string
    ScoobercuriosityDeliveryServiceCourierPool:
      title: Root Type for Pool
      description: Order pool
      required:
        - type
        - id
        - status
        - jobs
      type: object
      properties:
        id:
          description: Pool Id
          type: string
        type:
          description: Type of the pool
          type: string
        status:
          description: Status of the pool
          enum:
            - PENDING
            - IN_DELIVERY
            - DONE
          type: string
        jobs:
          description: Jobs in pool
          type: array
          items:
            $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceLegacyOrderDetails'
      example:
        id: 123e4567-e89b-12d3-a456-426614174000
        type: CURRENT
        status: PENDING
        jobs: []
    ScoobercuriosityDeliveryServiceCourierPools:
      title: Root Type for Pools
      description: Pools of courier
      required:
        - current
        - next
      type: object
      properties:
        current:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceCourierPool'
          description: Current Pool
        next:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceCourierPool'
          description: Next Pool
      example:
        current:
          id: 123e4567-e89b-12d3-a456-426614174000
          type: CURRENT
          status: IN_DELIVERY
          jobs:
            - orderHash: X0Y12Z123
              status: UNASSIGNED
              reference: X0Y12Z
              restaurantId: '123123'
              sequence: 0
              payment:
                status: PAID
                totalAmount: 10.2
                currencyCode: USD
              tip:
                amount: 10.2
                currencyCode: USD
              chat:
                id: 1734525117VB26TTC6F9606A3BF0756D3F7600EFBF4FBADC
              platform: TAKEAWAY
              countryCode: DE
              comment: knock 3 times at the door, then sing the song
              expectedDeliveryTime: '2020-11-18T08:29:45Z'
              hasAlcohol: true
              deliveryPinRequired: true
              customer:
                placeId: ChIJN1t_tDeuEmsRUsoyG83frY4
                lastName: Smith
                address:
                  postcode: '7181'
                  city: Berlin
                  streetNumber: '13'
                  streetName: Land str
                  floor: '5'
                  apartmentNumber: '22'
                  companyName: JET
                  buildingInfo:
                    block: A
                    residenceType: building
                    houseName: testHouse
                    flatNumber: '4'
                    apartmentName: testApartment
                    intercom: b220
                    doorbell: b220
                    entrance: front
                    floor: '2'
                    door: '1'
                    accessCode: '123'
                  flightInfo:
                    flightNumber: f123
                    flightDate: 01.01.2023
                    departureFrom: BER
                    arriveAt: MUC
                    seatNumber: b1
                location:
                  latitude: 50.8768293
                  longitude: 6.1512706
                phone: '017111111111'
              restaurant:
                id: '123123'
                location:
                  latitude: 50.8768326
                  longitude: 6.1775459
              items:
                - additions:
                    - id: '793553478'
                      name: Potato
                    - id: '793553508'
                      name: Cheese
                    - id: '900865238'
                      name: Sauce
                  comment: ''
                  id: '287657308'
                  name: Apple
                  quantity: '1'
                - additions:
                    - id: '793555018'
                      name: Potato
                      quantity: '1'
                      containsAlcohol: false
                    - id: '793555078'
                      name: Cheese
                      quantity: '1'
                      containsAlcohol: false
                    - id: '900865308'
                      name: Apple
                      quantity: '1'
                      containsAlcohol: false
                  comment: ''
                  id: '287659158'
                  name: Spareribs hot
                  quantity: '1'
            - orderHash: X0Y12Z121
              status: UNASSIGNED
              reference: X0Y12Z
              restaurantId: '123123'
              sequence: 0
              platform: TAKEAWAY
              countryCode: DE
              payment:
                status: PAID
                totalAmount: 10.2
                currencyCode: USD
              tip:
                amount: 10.2
                currencyCode: USD
              chat:
                id: 1734525117VB26TTC6F9606A3BF0756D3F7600EFBF4FBADC
              comment: Some comment
              expectedDeliveryTime: '2020-11-18T08:29:45Z'
              hasAlcohol: false
              deliveryPinRequired: true
              customer:
                lastName: Jones
                address:
                  postcode: '7181'
                  city: Berlin
                  streetNumber: '1'
                  streetName: Land str
                  buildingInfo:
                    block: A
                    residenceType: building
                    houseName: testHouse
                    flatNumber: '4'
                    apartmentName: testApartment
                    intercom: b220
                    doorbell: b220
                    entrance: front
                    floor: '2'
                    door: '1'
                    accessCode: '123'
                  flightInfo:
                    flightNumber: f123
                    flightDate: 01.01.2023
                    departureFrom: BER
                    arriveAt: MUC
                    seatNumber: b1
                location:
                  latitude: 50.8768293
                  longitude: 6.1512706
                phone: '017111111111'
              restaurant:
                id: '123123'
                location:
                  latitude: 50.8768326
                  longitude: 6.1775459
              items:
                - quantity: '1'
                  name: Pizza Thon Senior
                  id: '346248508'
                  comment: Sans oeuf avec pomme de terre et beaucoup d'olive noir s'il vous plaît
                  additions: []
        next:
          id: 123e4567-e89b-12d3-a456-426614174001
          type: NEXT
          status: PENDING
          jobs: []
    ScoobercuriosityDeliveryServiceCustomerRequest:
      title: Root Type for customer
      description: Customer request model
      required:
        - address
        - location
      type: object
      properties:
        address:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceAddressRequest'
        lastName:
          description: Customer last name
          type: string
        location:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceLocation'
        phone:
          description: Customer phone number
          type: string
        placeId:
          description: Customer place id
          type: string
      example:
        location:
          latitude: 50.8768293
          longitude: 6.1512706
        phone: '+4912345678'
        address:
          city: Berlin
          streetName: Am Lustgarten
          streetNumber: '6'
          postcode: '10178'
          countryCode: DE
        lastName: Smith
        placeId: google-place-id
    ScoobercuriosityDeliveryServiceCustomer:
      title: Root Type for Customer
      description: Customer information
      required:
        - lastName
        - phone
        - location
        - address
      type: object
      properties:
        placeId:
          description: Place id
          type: string
        lastName:
          description: Customer last name
          type: string
        phone:
          description: Phone number
          type: string
        location:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceLocation'
        address:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceDeliveryAddress'
      example:
        placeId: ChIJN1t_tDeuEmsRUsoyG83frY4
        lastName: Smith
        phone: '017621237216'
        address:
          postcode: '7181'
          city: Berlin
          streetNumber: '13'
          streetName: Land str
          buildingInfo:
            block: A
            residenceType: building
            houseName: testHouse
            flatNumber: '4'
            apartmentName: testApartment
            intercom: b220
            doorbell: b220
            entrance: front
            floor: '2'
            door: '1'
            accessCode: '123'
          flightInfo:
            flightNumber: f123
            flightDate: 01.01.2023
            departureFrom: BER
            arriveAt: MUC
            seatNumber: b1
        location:
          latitude: 50.8768293
          longitude: 6.1512706
    ScoobercuriosityDeliveryServiceDeliveryAddress:
      title: Root Type for DeliveryAddress
      description: Delivery address
      type: object
      properties:
        postcode:
          description: Address postcode
          type: string
        city:
          description: Address city
          type: string
        streetNumber:
          description: Address street number
          type: string
        streetName:
          description: Address street name
          type: string
        floor:
          description: Optional, floor number
          type: string
        apartmentNumber:
          description: Optional, apartment number
          type: string
        companyName:
          description: Optional, company name
          type: string
        buildingInfo:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceBuildingInfo'
        flightInfo:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceFlightInfo'
      example:
        postcode: '7181'
        city: Berlin
        streetNumber: '13'
        streetName: Land str
        floor: '5'
        apartmentNumber: '22'
        companyName: JET
        buildingInfo:
          block: A
          residenceType: building
          houseName: testHouse
          flatNumber: '4'
          apartmentName: testApartment
          intercom: b220
          doorbell: b220
          entrance: front
          floor: '2'
          door: '1'
          accessCode: '123'
        flightInfo:
          flightNumber: f123
          flightDate: 01.01.2023
          departureFrom: BER
          arriveAt: MUC
          seatNumber: b1
    ScoobercuriosityDeliveryServiceDeliveryConfirmation:
      title: Root Type for DeliveryConfirmation
      description: |-
        Delivery confirmation payload used to mark an order as delivered.
        - When `skipPin` is `false` (or omitted) the supplied `pin` is validated and, if correct, the order
          is marked as delivered.
        - When `skipPin` is `true` the delivery PIN check is bypassed and the order is marked as delivered
          without validating a `pin`.
      type: object
      properties:
        pin:
          description: Delivery PIN entered by the courier. Required when `skipPin` is `false` and the order requires a delivery PIN.
          type: string
        skipPin:
          description: When `true`, the delivery PIN validation is skipped and the order is marked as delivered.
          type: boolean
          default: false
      example:
        pin: '1234'
        skipPin: false
    ScoobercuriosityDeliveryServiceErrorConflictInStartDelivery:
      type: object
      properties:
        reason:
          description: Failure reason
          type: string
          enum:
            - POOL_IS_EMPTY
            - DELIVERY_ALREADY_STARTED
    ScoobercuriosityDeliveryServiceErrorDeliveryPinRequired:
      description: |-
        (v=2) The order requires a delivery PIN and cannot be marked as `DELIVERED` through the status
        update endpoint. The courier must confirm delivery via the delivery confirmation endpoint instead.
      required:
        - reason
      type: object
      properties:
        reason:
          description: A delivery PIN is required to mark this order as delivered.
          type: string
          enum:
            - deliveryPinRequired
      example:
        reason: deliveryPinRequired
    ScoobercuriosityDeliveryServiceErrorDeliveryPinTooManyAttempts:
      description: Delivery PIN attempt limit exceeded. The courier cannot try again for this delivery flow.
      required:
        - reason
      type: object
      properties:
        reason:
          description: Courier is out of retry attempts for validating the delivery PIN.
          type: string
          enum:
            - deliveryPinAttemptExceeded
      example:
        reason: deliveryPinAttemptExceeded
    ScoobercuriosityDeliveryServiceFlightInfo:
      title: Root Type for FlightInfo
      description: Flight info
      type: object
      properties:
        flightNumber:
          description: Flight number
          type: string
        flightDate:
          description: Flight date
          type: string
        departureFrom:
          description: Departure from
          type: string
        arriveAt:
          description: Arrive at
          type: string
        seatNumber:
          description: Seat number
          type: string
    ScoobercuriosityDeliveryServiceItems:
      type: array
      items:
        type: object
        properties:
          additions:
            type: array
            items:
              type: object
              properties:
                id:
                  description: Item id
                  type: string
                name:
                  description: Item name
                  type: string
                containsAlcohol:
                  description: Shows whether or not order item addition contains alcohol
                  type: boolean
                quantity:
                  description: Item's quantity in form of string
                  type: string
          comment:
            description: Courier's comment
            type: string
          id:
            description: Item id
            type: string
          name:
            description: Item name
            type: string
          quantity:
            description: Item quantity
            type: string
    ScoobercuriosityDeliveryServiceJobCreationRequest:
      title: Root Type for JobCreation
      description: Job creation request
      required:
        - customer
      type: object
      properties:
        restaurant:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceRestaurantRequest'
        comment:
          description: Comment about job
          type: string
        customer:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceCustomerRequest'
      example:
        comment: new customer
        restaurant:
          location:
            latitude: 50.8768293
            longitude: 6.1512706
        customer:
          location:
            latitude: 50.8768293
            longitude: 6.1512706
          phone: '+4912345678'
          address:
            city: Berlin
            streetName: Am Lustgarten
            streetNumber: '6'
            postcode: '10178'
            countryCode: DE
          lastName: Smith
          placeId: google-place-id
    ScoobercuriosityDeliveryServiceJobCreationResponse:
      title: Root Type for job creation
      description: Job creation response
      required:
        - jobId
      type: object
      properties:
        jobId:
          description: Job id
          type: string
      example:
        jobId: f47ac10b58cc4372a5670e02b2c3d479
    ScoobercuriosityDeliveryServiceLegacyOrderDetails:
      title: Root Type for UnassignedOrderDetailes
      description: Details of an MCAP order
      required:
        - comment
        - customer
        - expectedDeliveryTime
        - hasAlcohol
        - payment
        - orderHash
        - restaurantId
        - restaurant
        - reference
        - status
        - sequence
        - platform
        - countryCode
      type: object
      properties:
        comment:
          description: Comment left by customer
          type: string
        expectedDeliveryTime:
          description: Expected delivery time (ISO 8601)
          type: string
        hasAlcohol:
          description: Shows whether or not order contains the alcohol drinks
          type: boolean
        customer:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceCustomer'
          description: Customer details
        payment:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServicePayment'
          description: Payment status
        tip:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceTip'
          description: tip details
        chat:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceChat'
          description: chat details
        restaurantId:
          description: Restaurant id
          type: string
        sequence:
          description: order position in the pool
          type: integer
        deliveredAt:
          description: Order delivery timestamp (ISO 8601)
          type: string
        items:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceItems'
        status:
          description: Order status
          enum:
            - UNASSIGNED
            - ASSIGNED
            - IN_DELIVERY
            - DELIVERED
          type: string
        platform:
          description: Order platform
          enum:
            - TAKEAWAY
            - JET
            - EXTERNAL
          type: string
        orderHash:
          description: Order hash
          type: string
        reference:
          description: Order reference
          type: string
        restaurant:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceRestaurantDetails'
          description: Restaurant details contains geolocation data
        countryCode:
          description: Country code
          type: string
        deliveryPinRequired:
          description: Shows whether or not delivery pin is required for the order
          type: boolean
      example:
        reference: 123X0Y1
        orderHash: X0Y12Z123X0Y12
        restaurantId: '123123'
        sequence: 1
        deliveredAt: '2020-11-18T09:29:45Z'
        status: ASSIGNED
        payment:
          status: PAID
          totalAmount: 10.2
          currencyCode: USD
        tip:
          amount: 10.2
          currencyCode: USD
        chat:
          id: 1734525117VB26TTC6F9606A3BF0756D3F7600EFBF4FBADC
        comment: knock 3 times at the door, then sing the song
        expectedDeliveryTime: '2020-11-18T08:29:45Z'
        hasAlcohol: true
        platform: JET
        countryCode: DE
        deliveryPinRequired: true
        customer:
          placeId: ChIJN1t_tDeuEmsRUsoyG83frY4
          lastName: Smith
          location:
            latitude: 50.8768293
            longitude: 6.1512706
          address:
            postcode: '7181'
            city: Berlin
            streetNumber: '13'
            streetName: Land str
            buildingInfo:
              block: A
              residenceType: building
              houseName: testHouse
              flatNumber: '4'
              apartmentName: testApartment
              intercom: b220
              doorbell: b220
              entrance: front
              floor: '2'
              door: '1'
              accessCode: '123'
            flightInfo:
              flightNumber: f123
              flightDate: 01.01.2023
              departureFrom: BER
              arriveAt: MUC
              seatNumber: b1
          phone: '017111111111'
        restaurant:
          id: '123123'
          location:
            latitude: 50.8768326
            longitude: 6.1775459
        items:
          - additions:
              - id: '793553478'
                name: Potato
                quantity: '1'
                containsAlcohol: false
              - id: '793553508'
                name: Cheese
                quantity: '1'
                containsAlcohol: false
              - id: '900865238'
                name: Sauce
                quantity: '1'
                containsAlcohol: false
            comment: ''
            id: '287657308'
            name: Apple
            quantity: '1'
          - additions:
              - id: '793555018'
                name: Potato
                quantity: '1'
                containsAlcohol: false
              - id: '793555078'
                name: Cheese
                quantity: '1'
                containsAlcohol: false
              - id: '900865308'
                name: Apple
                quantity: '1'
                containsAlcohol: false
            comment: ''
            id: '287659158'
            name: Spareribs hot
            quantity: '1'
    ScoobercuriosityDeliveryServiceLocation:
      title: Root Type for Location
      description: Geolocation object
      type: object
      properties:
        latitude:
          description: Latitude
          format: double
          type: number
        longitude:
          description: Longitude
          format: double
          type: number
      example:
        latitude: 50.8768293
        longitude: 6.1512706
    ScoobercuriosityDeliveryServiceOrderSequence:
      title: Root Type for OrderSequence
      description: Sequence of orders
      type: object
      properties:
        sequence:
          description: Sequence of orders
          type: array
          items:
            description: Order id
            type: string
      example:
        sequence:
          - X0Y12Z123
          - X0Y12Z121
    ScoobercuriosityDeliveryServicePayment:
      title: Root Type for Payment
      description: Payment details
      required:
        - status
        - totalAmount
        - currencyCode
      type: object
      properties:
        status:
          description: Payment status
          enum:
            - PAID
            - UNPAID
            - UNKNOWN
          type: string
        currencyCode:
          description: currency code
          type: string
        totalAmount:
          description: total amount
          type: number
      example:
        status: PAID
        totalAmount: 10.2
        currencyCode: USD
    ScoobercuriosityDeliveryServiceRestaurantDetails:
      title: Root Type for RestaurantDetails
      description: Restaurant details contains geolocation data
      required:
        - location
        - id
      type: object
      properties:
        id:
          description: Restaurant id
          type: string
        location:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceLocation'
      example:
        id: '8938538'
        location:
          latitude: 50.8768326
          longitude: 6.1775459
    ScoobercuriosityDeliveryServiceRestaurantRequest:
      title: Root Type for restaurant
      description: Restaurant request model
      required:
        - location
      type: object
      properties:
        location:
          $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceLocation'
      example:
        location:
          latitude: 50.8768293
          longitude: 6.1512706
    ScoobercuriosityDeliveryServiceStartDelivery:
      title: Root Type for StartDelivery
      description: Start delivery request body
      required:
        - vehicleType
      type: object
      properties:
        vehicleType:
          description: Vehicle type
          type: string
      example:
        vehicleType: BIKE
    ScoobercuriosityDeliveryServiceStatusChange:
      title: Root Type for StatusChange
      description: Status Change
      required:
        - status
      type: object
      properties:
        status:
          description: Job Status
          enum:
            - ASSIGNED
            - DELIVERED
            - UNASSIGNED
          type: string
        claimMethod:
          description: How job is claimed, using qr scanning or through the list. Should be only present if status is ASSIGNED. Analytics purposes.
          enum:
            - QR_SCAN
            - LIST
          type: string
      example:
        status: ASSIGNED
        claimMethod: QR_SCAN
    ScoobercuriosityDeliveryServiceTip:
      title: Root Type for Tip
      description: Courier tipping details
      required:
        - amount
        - currencyCode
      type: object
      properties:
        currencyCode:
          description: currency code
          type: string
        amount:
          description: tip amount
          type: number
      example:
        amount: 10.2
        currencyCode: USD
    ScoobercuriosityDeliveryServiceUnassignedOrdersWithRestaurants:
      title: Root Type for UnassignedOrdersWithRestaurants
      description: Array of unassigned orders + array of restaurants connected to the courier
      required:
        - restaurants
      type: object
      properties:
        orders:
          description: Array of unassigned orders
          type: array
          items:
            $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceLegacyOrderDetails'
        restaurants:
          description: Array of restaurants connected to the courier
          type: array
          items:
            $ref: '#/components/schemas/ScoobercuriosityDeliveryServiceConnectedRestaurant'
      example:
        orders:
          - orderHash: X0Y12Z123
            status: UNASSIGNED
            reference: X0Y12Z
            restaurantId: '123123'
            sequence: 0
            payment:
              status: PAID
              totalAmount: 10.2
              currencyCode: USD
            tip:
              amount: 10.2
              currencyCode: USD
            chat:
              id: 1734525117VB26TTC6F9606A3BF0756D3F7600EFBF4FBADC
            platform: TAKEAWAY
            countryCode: DE
            comment: knock 3 times at the door, then sing the song
            expectedDeliveryTime: '2020-11-18T08:29:45Z'
            hasAlcohol: true
            deliveryPinRequired: true
            customer:
              placeId: ChIJN1t_tDeuEmsRUsoyG83frY4
              lastName: Smith
              address:
                postcode: '7181'
                city: Berlin
                streetNumber: '13'
                streetName: Land str
                floor: '5'
                apartmentNumber: '22'
                companyName: JET
                buildingInfo:
                  block: A
                  residenceType: building
                  houseName: testHouse
                  flatNumber: '4'
                  apartmentName: testApartment
                  intercom: b220
                  doorbell: b220
                  entrance: front
                  floor: '2'
                  door: '1'
                  accessCode: '123'
                flightInfo:
                  flightNumber: f123
                  flightDate: 01.01.2023
                  departureFrom: BER
                  arriveAt: MUC
                  seatNumber: b1
              location:
                latitude: 50.8768293
                longitude: 6.1512706
              phone: '017111111111'
            restaurant:
              id: '123123'
              location:
                latitude: 50.8768326
                longitude: 6.1775459
            items:
              - additions:
                  - id: '793553478'
                    name: Potato
                    quantity: '1'
                    containsAlcohol: false
                  - id: '793553508'
                    name: Cheese
                    quantity: '1'
                    containsAlcohol: false
                  - id: '900865238'
                    name: Sauce
                    quantity: '1'
                    containsAlcohol: false
                comment: ''
                id: '287657308'
                name: Apple
                quantity: '1'
              - additions:
                  - id: '793555018'
                    name: Potato
                    quantity: '1'
                    containsAlcohol: false
                  - id: '793555078'
                    name: Cheese
                    quantity: '1'
                    containsAlcohol: false
                  - id: '900865308'
                    name: Apple
                    quantity: '1'
                    containsAlcohol: false
                comment: ''
                id: '287659158'
                name: Spareribs hot
                quantity: '1'
          - orderHash: X0Y12Z121
            status: UNASSIGNED
            reference: X0Y12Z
            restaurantId: '123123'
            sequence: 0
            platform: TAKEAWAY
            countryCode: DE
            payment:
              status: PAID
              totalAmount: 10.2
              currencyCode: USD
            tip:
              amount: 10.2
              currencyCode: USD
            chat:
              id: 1734525117VB26TTC6F9606A3BF0756D3F7600EFBF4FBADC
            comment: Some comment
            expectedDeliveryTime: '2020-11-18T08:29:45Z'
            hasAlcohol: true
            deliveryPinRequired: false
            customer:
              lastName: Jones
              address:
                postcode: '7181'
                city: Berlin
                streetNumber: '1'
                streetName: Land str
                buildingInfo:
                  block: A
                  residenceType: building
                  houseName: testHouse
                  flatNumber: '4'
                  apartmentName: testApartment
                  intercom: b220
                  doorbell: b220
                  entrance: front
                  floor: '2'
                  door: '1'
                  accessCode: '123'
                flightInfo:
                  flightNumber: f123
                  flightDate: 01.01.2023
                  departureFrom: BER
                  arriveAt: MUC
                  seatNumber: b1
              location:
                latitude: 50.8768293
                longitude: 6.1512706
              phone: '017111111111'
            restaurant:
              id: '123123'
              location:
                latitude: 50.8768326
                longitude: 6.1775459
            items:
              - quantity: '1'
                name: Pizza Thon Senior
                id: '346248508'
                comment: Sans oeuf avec pomme de terre et beaucoup d'olive noir s'il vous plaît
                additions: []
        restaurants:
          - id: '123123'
            name: Pizza pizza
            showOrderList: false
          - id: '123124'
            name: Burger burger
            showOrderList: true
    ScoobercuriosityDeliveryServiceUpdatePoolRequest:
      title: Root Type for poolUpdateRequest
      description: Update pool
      type: object
      properties:
        action:
          description: Pool action
          enum:
            - COMPLETE
          type: string
      example:
        action: COMPLETE
    ScoobercuriosityDeliveryServiceUpdateVehicleType:
      title: Root Type for UpdateVehicleType
      description: Update Vehicle Type
      required:
        - vehicleType
      type: object
      properties:
        vehicleType:
          description: Vehicle Type
          enum:
            - BIKE
            - EBIKE
            - CAR
            - SCOOTER
          type: string
      example:
        vehicleType: BIKE
    ScoobercuriosityDeliveryServiceVehicleResponse:
      title: Root Type for Vehicle type
      description: Vehicle type
      type: object
      properties:
        vehicleType:
          description: Vehicle type
          enum:
            - BIKE
            - EBIKE
            - SCOOTER
            - CAR
          type: string
          nullable: true
    ScoobercuriosityLocationServiceCoordinate:
      title: Root Type for coordinate
      description: Location coordinates object
      required:
        - latitude
        - longitude
      type: object
      properties:
        latitude:
          format: double
          description: Courier's current latitude
          type: number
          minimum: -90
          maximum: 90
        longitude:
          format: double
          description: Courier's current longitude
          type: number
          minimum: -180
          maximum: 180
      example:
        latitude: 49.455544
        longitude: 11.085865
    ScoobercuriosityLocationServicePositionUpdateRequest:
      title: Root Type for positionUpdateRequest
      description: position update request
      required:
        - coordinate
        - horizontalAccuracy
      type: object
      properties:
        coordinate:
          $ref: '#/components/schemas/ScoobercuriosityLocationServiceCoordinate'
        horizontalAccuracy:
          description: Horizontal accuracy of the location
          format: double
          type: number
      example:
        coordinate:
          latitude: 49.455544
          longitude: 11.085865
        horizontalAccuracy: 12312.12
    ScoobercuriosityLocationServicePositionUpdateResponse:
      title: Root Type for PositionUpdateResponse
      description: position update response
      type: object
      properties:
        continueTracking:
          description: Indicates if client should continue sending position update or not.
          type: boolean
      example:
        continueTracking: true
    ScooberoperationsAddCommentToTicketModel:
      required:
        - description
        - externalId
        - responseUrl
        - ticketId
      description: Used when Scoober sends a reply about a support incident, to add to a Just Eat Zendesk ticket
      properties:
        externalId:
          description: Scoober job reference, or similar ID used by Scoober to identify this ticket.
          example: slack:1
          type: string
        ticketId:
          format: int64
          description: The ticket ID to add the comment to.
          example: 1234
          type: integer
        requesterEmail:
          nullable: true
          description: E-Mail address of the ticket requester.
          example: requester@scoober.com
          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
        description:
          description: Comment to add to the ticket.
          example: Happy to help!
          type: string
        status:
          nullable: true
          description: 'What status should we set the ticket to: Open, pending or solved.'
          example: pending
          type: string
      type: object
    ScooberoperationsAddReplyMessageModel:
      required:
        - description
        - externalId
        - reason
        - status
        - subject
        - ticketId
      description: Information sent when a Just Eat agent sends a follow up message about a Scoober support ticket to Scoober
      properties:
        externalId:
          description: External ID for this ticket, e.g. Scoober job ID (assigned by them).
          example: slack:1
          type: string
        ticketId:
          format: int64
          description: Zendesk ticket ID this message is about.
          example: 1234
          type: integer
        subject:
          description: Subject of the message.
          example: Scoober Test
          type: string
        description:
          description: 'Description, i.e.: main body, of the message.'
          example: Happy to help!
          type: string
        restaurantId:
          nullable: true
          description: Restaurant Id of the order.
          example: '1234567'
          type: string
        scooberJobId:
          nullable: true
          description: Scoober job ID for this order.
          example: '1234'
          type: string
        reason:
          description: Scoober contact reason for this ticket.
          example: front_line_reason_food_quality_cold_crushed_spilled
          type: string
        countryCode:
          nullable: true
          description: 2 letter ISO code this ticket is about.
          example: gb
          type: string
        status:
          description: 'Status of the ticket. Can be: New, pending, solved.'
          example: pending
          type: string
        city:
          type: string
          description: City this order is located in.
          deprecated: true
          example: london
          nullable: true
      type: object
    ScooberoperationsCreateMessageModel:
      required:
        - description
        - reason
        - status
        - subject
        - ticketId
      description: Information needed to create a message for the Scoober ops team
      properties:
        status:
          description: Status of the Zendesk ticket.
          example: new
          type: string
        ticketId:
          format: int64
          description: Zendesk ticket ID this message is about.
          example: 1234
          type: integer
        subject:
          description: Subject of the message to send.
          example: Scoober Test
          type: string
        description:
          description: Description, main body, of the message to send.
          example: Scoober Test
          type: string
        restaurantId:
          nullable: true
          description: Restaurant Id of the order.
          example: '1234567'
          type: string
        scooberJobId:
          nullable: true
          description: Scoober job ID, if known.
          example: en
          type: string
        reason:
          description: Scoober contact reason for this ticket.
          example: front_line_reason_food_quality_cold_crushed_spilled
          type: string
        countryCode:
          nullable: true
          description: 2 letter ISO code for the country this ticket is about.
          example: gb
          type: string
        city:
          type: string
          description: City this order is located in.
          deprecated: true
          example: london
          nullable: true
      type: object
    ScooberoperationsCreateTicketModel:
      required:
        - description
        - externalId
        - reason
        - responseUrl
        - subject
      description: Information needed to create a ticket on the Just Eat Zendesk instance for a Scoober delivery support incident
      properties:
        requesterEmail:
          nullable: true
          description: Ticket requester e-mail address.
          example: requester@scoober.com
          type: string
        description:
          description: Description (main body) of the ticket.
          example: Scoober Test
          type: string
        reason:
          description: Scoober reason code for the creation of this ticket.
          example: delivery__spilled_food
          type: string
        requesterName:
          nullable: true
          description: Ticket requester name.
          example: scoober
          type: string
        country:
          nullable: true
          description: 2 letter ISO code of the country this pertains to. Will be inferred from queried API.
          example: gb
          type: string
        status:
          nullable: true
          description: 'Ticket status to set on creation of this ticket. Possible values: New, pending, solved.'
          example: new
          type: string
        city:
          nullable: true
          description: City of the delivery in question of this ticket.
          example: london
          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
        courier:
          nullable: true
          description: Courier who created this query.
          example: scoober
          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
        subject:
          description: Subject of the ticket.
          example: Scoober Test
          type: string
        senderType:
          type: array
          description: Scoober transmits a sender type value.
          example:
            - internal
          items:
            type: string
          nullable: true
        language:
          nullable: true
          description: 2 letter ISO code of the language for the ticket. Will be inferred from queried API.
          example: en
          type: string
        scooberJobId:
          nullable: true
          description: Scoober job ID for this order.
          example: '1234'
          type: string
      type: object
    ScreeningapiMonitoringRequest:
      type: object
      required:
        - event
        - data
      properties:
        event:
          type: string
          description: |
            Event name of webhook request event type
            See https://docs.complyadvantage.com/api-docs/#event-monitored_search_updated
        data:
          type: object
          description: Payload of the webhook request
          required:
            - search_id
            - is_suspended
          properties:
            search_id:
              type: integer
              description: screening request id
            updated:
              type: array
              items:
                type: string
              description: The list of updated entities
            new:
              type: array
              items:
                type: string
              description: The list of new entities
            removed:
              type: array
              items:
                type: string
              description: The list of removed entities
            is_suspended:
              type: boolean
              description: The status of the screening request
      example:
        event: monitored_search_updated
        data:
          search_id: 10117833
          updated:
            - 8NMXF7QX4QV8LFD
            - X4525MEAZKKPX0T
            - 73HBD537LCX5JT6
          new:
            - Q3OX4KS0KEMCVDH
            - UCC60H79WVU94Z0
          removed:
            - 9D1ETD0ADTT4HDH
            - I38XC0R6Y1EQ083
          is_suspended: true
    SearchAutoCompleteSearchResponse:
      type: object
      properties:
        terms:
          uniqueItems: false
          maxItems: 10
          type: array
          description: Ordered list of suggested term completions
          items:
            $ref: '#/components/schemas/SearchAutoCompleteSearchResponseItem'
      example:
        terms:
          - term: Pizza Palace
            classification: Restaurant
            partnerId: '123456'
          - term: Pizza
            classification: Cuisine
          - term: Large Hawaiian
            classification: Dish
    SearchAutoCompleteSearchResponseItem:
      type: object
      description: Contains data for an item in the autocomplete results.
      required:
        - term
        - classification
      properties:
        term:
          description: Auto-completed search term
          type: string
        classification:
          description: Grouping to which term belongs
          enum:
            - Restaurant
            - Cuisine
            - Dish
          type: string
        partnerId:
          description: The id of the partner this suggestion relates to. Only set if the `classification` is `Restaurant`.
          type: string
          nullable: true
        additional:
          description: Contains additional data related to and intended for displaying autocomplete suggestions.
          type: object
          nullable: true
          properties:
            seoName:
              description: The unique name of the partner, used to build the menu URL.
              type: string
              nullable: true
            imageUrl:
              description: URL of the partner's logo.
              type: string
              nullable: true
            subTitle:
              description: Additional text to display alongside the `term`.
              type: string
              nullable: true
        sponsored:
          description: Contains data related to a promoted result.
          type: object
          nullable: true
          required:
            - campaignId
            - auctionId
          properties:
            campaignId:
              description: The campaign id associated with the promoted result. If this value is not present, the result is not sponsored.
              type: string
            auctionId:
              description: The top sort auction id associated with the promoted result.
              type: string
      example:
        term: Pizza Palace
        classification: Restaurant
        partnerId: '123456'
        additional:
          seoName: pizza-palace
          imageUrl: http://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/112549.gif
          subTitle: pizza, italian
        sponsored:
          campaignId: 4175118e-50df-4f11-96d2-bf4720b47d6d
          auctionId: 160dd91e-872b-4350-a1d0-5f153cf2a23d
    SearchEnergyContent:
      type: object
      description: Energy content details of product
      properties:
        unit:
          description: The unit of measurement for energy
          type: string
        min:
          description: The minimum energy value
          type: number
        max:
          description: The maximum energy value
          type: number
      example:
        unit: kcal
        min: 1000
        max: 1500
    SearchMenuAutocompleteResponse:
      type: object
      required:
        - products
      properties:
        products:
          uniqueItems: true
          type: array
          description: A list of product suggestions matching a given search term
          items:
            $ref: '#/components/schemas/SearchMenuAutocompleteResponseItem'
      example:
        products:
          - term: Chicken Korma
          - term: Chicken Madras
    SearchMenuAutocompleteResponseItem:
      type: object
      required:
        - term
      properties:
        term:
          description: The suggested search term
          type: string
      example:
        term: Chicken Korma
    SearchMenuSearchResponse:
      type: object
      properties:
        products:
          uniqueItems: false
          type: array
          description: A list of menu products matching a given search term
          items:
            $ref: '#/components/schemas/SearchMenuSearchResponseItem'
      example:
        products:
          - id: '1'
          - id: '2'
    SearchMenuSearchResponseItem:
      type: object
      properties:
        id:
          description: A product ID
          type: string
      example:
        term: null
        id: '1'
    SearchNetQuantity:
      type: object
      description: If the item is sold by net quantity, properties which describe this are placed in here
      properties:
        unit:
          description: The unit of measurement used to sell the weighed item
          type: string
        value:
          description: The value of the net quantity by the unit from the attached unit property
          type: number
      example:
        netQuantity:
          unit: g
          value: 10
    SearchNumberOfServings:
      type: object
      description: The number of servings in the product
      properties:
        min:
          description: The minimum number of servings
          type: number
        max:
          description: The maximum number of servings
          type: number
      example:
        min: 5
        max: 10
    SearchRestaurantSearchProduct:
      type: object
      description: Product details for a restaurant search result
      properties:
        price:
          description: The price of the product
          type: number
          deprecated: true
        productPrice:
          properties:
            basePrice:
              format: long
              description: The value of this product's base price in the minor unit of the currency.
              type: number
            depositAmount:
              format: long
              description: The amount that can be received by a customer for depositing the item's packaging, in the minor unit of the currency.
              type: number
              nullable: true
            depositType:
              description: The type of deposit price to indicate if it's inclusive or exclusive of the base price.
              type: string
              enum:
                - inclusive
                - exclusive
              nullable: true
          description: The detailed price of the product
          type: object
        fullName:
          description: The full name of the product
          type: string
        productId:
          description: The id of the product
          type: string
        numberOfServings:
          $ref: '#/components/schemas/SearchNumberOfServings'
          nullable: true
        energyContent:
          items:
            $ref: '#/components/schemas/SearchEnergyContent'
          description: List of energy content details of product
          type: array
          nullable: true
        imageUrl:
          description: The image URL of the product
          type: string
        isSoldByNetQuantity:
          description: If the item is sold by net quantity
          type: boolean
          nullable: true
        netQuantity:
          $ref: '#/components/schemas/SearchNetQuantity'
          nullable: true
      example:
        price: 799
        productPrice:
          basePrice: 700
          depositAmount: 99
          depositType: exclusive
        fullName: Chicken Korma
        productId: '289347'
        numberOfServings:
          min: 5
          max: 10
        energyContent:
          - unit: kcal
            min: 1000
            max: 1500
          - unit: kJ
            min: 4184
            max: 6276
        isSoldByNetQuantity: true
        netQuantity:
          unit: g
          value: 10
    SearchRestaurantSearchResponse:
      type: object
      description: Restaurant details for a restaurant search result
      properties:
        restaurants:
          uniqueItems: false
          items:
            $ref: '#/components/schemas/SearchRestaurantSearchResponseItem'
          description: Ordered list of restaurants
          type: array
        currencyCode:
          description: The currency, in ISO 4217 format, used for all prices in the response.
          type: string
      example:
        restaurants:
          - restaurantId: '110230'
            sponsoredCampaignId: 4175118e-50df-4f11-96d2-bf4720b47d6d
            products:
              - productId: '289347'
                fullName: Chicken Korma
                price: 799
                imageUrl: https://test.test/image01.jpg
              - productId: '563454'
                fullName: Chicken Madras
                price: 699
                imageUrl: https://test.test/image02.jpg
          - restaurantId: '229390'
            products:
              - productId: '67832'
                fullName: BBQ Chicken Pizza
                price: 1099
                productPrice:
                  basePrice: 1000
                  depositAmount: 99
                  depositType: exclusive
                numberOfServings:
                  min: 5
                  max: 10
                energyContent:
                  - unit: kcal
                    min: 1000
                    max: 1500
                  - unit: kJ
                    min: 4184
                    max: 6276
                imageUrl: https://test.test/image03.jpg
              - productId: '23567'
                fullName: Chicken Burger
                price: 899
                productPrice:
                  basePrice: 899
                  depositAmount: 0
                  depositType: exclusive
                imageUrl: https://test.test/image04.jpg
        currencyCode: GBP
    SearchRestaurantSearchResponseItem:
      type: object
      description: The main response from a restaurant search request.
      properties:
        restaurantId:
          description: The id of the restaurant.
          type: string
        isPromoted:
          description: Flag to indicate if the position of the restaurant has been promoted, through a sponsored campaign. Only used for legacy promoted placement.
          type: boolean
          deprecated: true
          nullable: true
        isBestMatch:
          description: Flag to indicate if the restaurant is considered both the highest quality match and of high enough relevance to be highlighted in the response.
          type: boolean
          nullable: true
        sponsoredCampaignId:
          description: The campaign id associated with the promoted restaurant. If this value is not present, the restaurant is not sponsored.
          type: string
          nullable: true
          deprecated: true
        sponsored:
          description: Contains data related to a promoted result.
          type: object
          nullable: true
          required:
            - campaignId
            - auctionId
          properties:
            campaignId:
              description: The campaign id associated with the promoted result. If this value is not present, the result is not sponsored.
              type: string
            auctionId:
              description: The top sort auction id associated with the promoted result.
              type: string
        products:
          uniqueItems: false
          items:
            $ref: '#/components/schemas/SearchRestaurantSearchProduct'
          description: Ordered list of products available from the restaurant which matched the search term.
          type: array
      example:
        restaurantId: '110230'
        isBestMatch: true
        sponsoredCampaignId: 4175118e-50df-4f11-96d2-bf4720b47d6d
        sponsored:
          campaignId: 4175118e-50df-4f11-96d2-bf4720b47d6d
          auctionId: 160dd91e-872b-4350-a1d0-5f153cf2a23d
        products:
          - price: 799
            productPrice:
              basePrice: 700
              depositAmount: 99
              depositType: exclusive
            fullName: Chicken Korma
            productId: '289347'
            numberOfServings:
              min: 5
              max: 10
            energyContent:
              - unit: kcal
                min: 1000
                max: 1500
              - unit: kJ
                min: 4184
                max: 6276
            imageUrl: https://test.test/image01.jpg
          - price: 699
            productPrice:
              basePrice: 699
              depositAmount: 0
              depositType: exclusive
            fullName: Chicken Madras
            productId: '563454'
            imageUrl: https://test.test/image02.jpg
    SharedDayOfWeek:
      description: The day of week.
      enum:
        - sunday
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday
      type: string
    SharedIso8601Time:
      description: The time of day in 24-hour format, compliant with the ISO 8601 standard (hh:mm:ss)
      type: string
      minLength: 8
      maxLength: 8
      nullable: false
      pattern: ^([0-1]\d|2[0-3]):[0-5]\d:[0-5]\d$
    SharedTimeFormat:
      enum:
        - 12h
        - 24h
      type: string
    SharedAddressAndGeopositionLowercase:
      allOf:
        - description: Represents an address with latitude and longitude
          properties:
            postcode:
              type: string
              description: the postcode
            name:
              type: string
              description: the name
            firstLine:
              type: string
              description: The first line of the address
            city:
              type: string
              description: The city
          type: object
        - $ref: '#/components/schemas/SharedGeoposition'
    SharedCurrency:
      description: The currency used for prices, represented as an ISO 4217 currency code.
      type: string
      pattern: ^[A-Z]{3}$
    SharedGeoJsonPoint:
      description: The coordinates of a geographical location.
      required:
        - coordinates
        - type
      properties:
        coordinates:
          maxItems: 2
          minItems: 2
          type: array
          items:
            format: decimal
            type: number
          description: The only two elements are latitude and longitude precisely in that order and using decimal numbers.
        type:
          description: The type of geospatial data this represents. The only supported value is 'Point' in GeoJSON format as defined in [RFC 7946](https://tools.ietf.org/html/rfc7946).
          enum:
            - point
          type: string
      type: object
      example:
        coordinates:
          - 51.501285
          - -0.142442
        type: point
    SharedGeoposition:
      description: A geoposition.
      properties:
        latitude:
          description: The latitude.
          format: double
          type: number
        longitude:
          description: The longitude.
          format: double
          type: number
      x-api-version-from: 2017-10
      type: object
    SharedLocale:
      description: A locale code consisting of an ISO 639 language code and an ISO 3166 country code.
      type: string
      minLength: 5
      maxLength: 5
      pattern: ^[a-z]{2}-[A-Z]{2}$
      example: en-GB
    SharedTenant:
      description: The tenant.
      type: string
      pattern: ^[a-z]{2}$
      example: uk
    SharedordersSharedOrderOrder:
      description: An order.
      properties:
        id:
          description: The Id of the order.
          type: string
      x-api-version-from: 2017-10
      type: object
    SharedordersSharedOrderPresignedUrl:
      type: object
      description: Response body containing a secure, time-limited URL for the order.  This URL includes a token that provides both authentication and authorization.
      properties:
        url:
          description: A time-limited, presigned URL for the order.  This URL includes a token that provides both authentication and is used as part of the authorization.
          type: string
          format: uri
    ShiftoverviewBody:
      description: Body containing the list of jobs for the courier.
      required:
        - distancesEnabled
        - jobs
      type: object
      properties:
        distancesEnabled:
          description: Indicates whether distance tracking is enabled for the jobs.
          type: boolean
          example: true
        jobs:
          description: A list of jobs related to the courier.
          type: array
          items:
            $ref: '#/components/schemas/ShiftoverviewJob'
    ShiftoverviewBonusDto:
      required:
        - jobId
        - jobDeliveryDate
        - amount
        - currency
      type: object
      properties:
        jobId:
          description: job identifier associated with the bonus
          type: string
          example: '2345123'
          nullable: true
        jobDeliveryDate:
          description: the date of the job delivery associated with the bonus
          type: string
          example: '2025-01-06'
          nullable: true
        amount:
          format: double
          description: amount of the bonus
          type: number
          example: 42.21
          nullable: true
        currency:
          description: the currency of the bonus
          type: string
          example: EUR
          nullable: true
    ShiftoverviewBonusResponse:
      required:
        - bonuses
        - total
        - currency
      type: object
      properties:
        bonuses:
          description: A list of bonuses to the courier.
          type: array
          items:
            $ref: '#/components/schemas/ShiftoverviewBonusDto'
        total:
          format: double
          description: sum of the bonus amounts
          type: number
          example: 42.21
        currency:
          description: default currency for the bonus amounts
          type: string
          example: EUR
    ShiftoverviewButtonAction:
      enum:
        - clock-on
        - navigation
      type: string
    ShiftoverviewButtonState:
      enum:
        - enabled
        - disabled
      type: string
    ShiftoverviewCallToActionButton:
      description: Provides button to perform an action.
      required:
        - text
        - state
        - action
      type: object
      properties:
        text:
          description: The text displayed on the call-to-action button.
          type: string
        state:
          description: The state of the button.
          type: string
          allOf:
            - $ref: '#/components/schemas/ShiftoverviewButtonState'
          example: enabled
        icon:
          description: The icon associated with the action, if any.
          type: string
          example: geolocation
          anyOf:
            - $ref: '#/components/schemas/ShiftoverviewIcon'
            - enum:
                - null
          nullable: true
        action:
          description: The action triggered when the button is clicked.
          type: string
          allOf:
            - $ref: '#/components/schemas/ShiftoverviewButtonAction'
          example: navigation
        infoMessage:
          description: An optional informational message displayed alongside the button.
          type: string
          example: Click the button to begin automatically at the scheduled time.
          nullable: true
    ShiftoverviewCourierImmediateShiftResponse:
      description: Immediate shift information for a courier.
      required:
        - shiftType
      type: object
      properties:
        shiftType:
          description: Type of the shift the courier can immediately start (e.g. Delivery, Non-delivery, No-shift).
          type: string
          allOf:
            - $ref: '#/components/schemas/ShiftoverviewShiftType'
        isLocationTrackingEnabled:
          description: True if real-time location tracking is enabled for the courier during this shift; false otherwise.
          type: boolean
    ShiftoverviewCourierState:
      enum:
        - PRE_SHIFT
        - ON_SHIFT
        - POST_SHIFT
        - NO_SHIFT
      type: string
    ShiftoverviewCourierStatusRequest:
      required:
        - status
      type: object
      properties:
        status:
          description: The current working status of the courier
          type: string
          allOf:
            - $ref: '#/components/schemas/ShiftoverviewCourierWorkingStatus'
          example: on-shift
        latitude:
          format: double
          description: The latitude of the courier's current location
          type: number
          example: 52.52
          nullable: true
        longitude:
          format: double
          description: The longitude of the courier's current location
          type: number
          example: 13.405
          nullable: true
        horizontalAccuracy:
          format: double
          description: The horizontal accuracy of the courier's current location in meters
          type: number
          example: 2.7
          nullable: true
    ShiftoverviewCourierStatusResponse:
      description: Current status information for a courier.
      required:
        - shiftType
      type: object
      properties:
        isWorking:
          description: True if the courier is currently working a shift; false otherwise.
          type: boolean
        isLocationTrackingEnabled:
          description: True if real-time location tracking is enabled for the courier; false otherwise.
          type: boolean
        shiftType:
          description: Type of the active shift (e.g. Delivery, Non-delivery, No-shift).
          type: string
          allOf:
            - $ref: '#/components/schemas/ShiftoverviewShiftType'
    ShiftoverviewCourierWorkingStatus:
      enum:
        - on-shift
        - off-shift
      type: string
    ShiftoverviewErrorDetail:
      description: Details of the error
      required:
        - description
      type: object
      properties:
        errorCode:
          description: Code of the error
          type: string
          example: internal-server-error
          nullable: true
        description:
          description: Description of the error
          type: string
          example: 500 Internal Server Error.
    ShiftoverviewErrorResponse:
      description: Response body for error details
      required:
        - fault
      type: object
      properties:
        fault:
          description: Fault details of the error response
          type: object
          allOf:
            - $ref: '#/components/schemas/ShiftoverviewFault'
    ShiftoverviewFault:
      required:
        - faultId
        - traceId
        - errors
      type: object
      properties:
        faultId:
          description: Unique fault identifier
          type: string
          example: 72d7036d-990a-4f84-9efa-ef5f40f6044b
        traceId:
          description: Unique trace identifier
          type: string
          example: a6d2a82a-a1e8-4cfc-88a5-676fbe42369a
        errors:
          description: List of errors occurred
          type: array
          items:
            $ref: '#/components/schemas/ShiftoverviewErrorDetail'
    ShiftoverviewHeader:
      description: Represents the header section of the shift overview.
      required:
        - titleLeft
        - titleRight
        - text
      type: object
      properties:
        titleLeft:
          description: Displays the regionalized the day of the week and date for upcoming shifts or 'Today's schedule' for the current day.
          type: string
          example: WED 03/01/2024
        titleRight:
          description: Displays the length of the courier's shifts for the upcoming shift day. The format is 'HH:mm h'.
          type: string
          example: 02:00 h
        text:
          description: The start of the first shift to the end of the last shift.
          type: string
          example: 09:30 - 00:30
        icon:
          description: Icon associated with the header, if any.
          type: string
          example: clock
          anyOf:
            - $ref: '#/components/schemas/ShiftoverviewIcon'
            - enum:
                - null
          nullable: true
    ShiftoverviewHeader1:
      description: Header details for the history response.
      required:
        - success
        - dateTime
        - errorCodes
      type: object
      properties:
        success:
          description: Indicates whether the request was successful.
          type: boolean
          example: true
        dateTime:
          format: date-time
          description: the current date-time using the system clock and default time-zone
          type: string
          example: '2024-07-25T16:28:44.017908'
        errorCodes:
          description: A list of error codes, if any.
          type: array
          items:
            type: string
    ShiftoverviewHistoryResponse:
      description: Represents the response for a courier's job history.
      required:
        - header
        - body
      type: object
      properties:
        header:
          description: Header details for the history response.
          type: object
          allOf:
            - $ref: '#/components/schemas/ShiftoverviewHeader1'
        body:
          description: Body containing the list of jobs for the courier.
          type: object
          allOf:
            - $ref: '#/components/schemas/ShiftoverviewBody'
    ShiftoverviewIcon:
      enum:
        - clock
        - clockAlert
        - restaurant
        - moon
        - geolocation
      type: string
    ShiftoverviewJob:
      description: Details of a courier's job.
      required:
        - jobId
        - pickupStreet
        - deliveryStreet
        - creationTime
        - pickupTime
        - deliveryTime
        - distance
      type: object
      properties:
        jobId:
          format: int64
          description: Unique identifier for the job.
          type: integer
          example: 1234
        pickupStreet:
          description: The pickup street address for the job.
          type: string
          example: Main Street 123
        deliveryStreet:
          description: The delivery street address for the job.
          type: string
          example: Elm Street 456
        creationTime:
          format: int64
          description: The job creation time in milliseconds since epoch.
          type: integer
          example: 1708002755000
        pickupTime:
          format: int64
          description: The pickup time for the job in milliseconds since epoch.
          type: integer
          example: 1808002755000
        deliveryTime:
          format: int64
          description: The delivery time for the job in milliseconds since epoch.
          type: integer
          example: 1709402400000
        distance:
          format: int64
          description: The total distance covered for the job, in meters.
          type: integer
          example: 50
    ShiftoverviewLocalDate:
      format: date
      type: string
      example: '2022-03-10'
    ShiftoverviewOverview:
      description: Represents the overview of a courier's shifts
      type: object
      properties:
        header:
          description: Represents the header section of the shift overview
          type: object
          anyOf:
            - $ref: '#/components/schemas/ShiftoverviewHeader'
            - enum:
                - null
        group:
          description: Represents a group of related shifts within the overview.
          type: array
          items:
            $ref: '#/components/schemas/ShiftoverviewShiftGroup'
          nullable: true
        state:
          description: Represents the courier's current state
          type: string
          example: PRE_SHIFT
          anyOf:
            - $ref: '#/components/schemas/ShiftoverviewCourierState'
            - enum:
                - null
          nullable: true
        date:
          format: date
          description: The date of the shift overview, formatted according to the locale.
          type: string
          example: '2024-01-03'
          nullable: true
        callToActionButton:
          description: Provides button to perform an action.
          type: object
          anyOf:
            - $ref: '#/components/schemas/ShiftoverviewCallToActionButton'
            - enum:
                - null
    ShiftoverviewShift:
      description: Lists shift sections, grouping shifts with less than an hour's break and separating those with longer breaks.
      required:
        - text
      type: object
      properties:
        text:
          description: The time range of the shift section, typically in the format of 'HH:mm - HH:mm'.
          type: string
        progressStatus:
          description: The current progress status of the shift
          type: string
          example: ready
          anyOf:
            - $ref: '#/components/schemas/ShiftoverviewShiftProgressStatus'
            - enum:
                - null
          nullable: true
        deviationTag:
          description: A tag indicating any deviations in the shift, deprecated as of version 2 and unsupported.
          type: object
          anyOf:
            - $ref: '#/components/schemas/ShiftoverviewTag'
            - enum:
                - null
          nullable: true
          deprecated: true
        tags:
          description: A list of tags associated with the shift.
          type: array
          items:
            $ref: '#/components/schemas/ShiftoverviewTag'
          nullable: true
        startingZone:
          description: The starting zone location for the shift.
          type: object
          anyOf:
            - $ref: '#/components/schemas/ShiftoverviewStartingZone'
            - enum:
                - null
    ShiftoverviewShiftGroup:
      required:
        - sections
      type: object
      properties:
        sections:
          type: array
          items:
            $ref: '#/components/schemas/ShiftoverviewShift'
    ShiftoverviewShiftProgressStatus:
      enum:
        - not_started
        - ready
        - started
        - completed
        - late
        - no_show
      type: string
    ShiftoverviewShiftType:
      enum:
        - Delivery
        - Non-delivery
        - No-shift
      type: string
    ShiftoverviewStartingZone:
      description: The starting zone location for the shift.
      required:
        - name
      type: object
      properties:
        name:
          description: The name of the starting zone, which could represent a location or a specific area.
          type: string
          example: Alexanderplatz
        latitude:
          format: double
          description: The latitude coordinate of the starting zone.
          type: number
          example: 52.519045
          nullable: true
        longitude:
          format: double
          description: The longitude coordinate of the starting zone.
          type: number
          example: 13.399238
          nullable: true
        button:
          description: Provides button to perform navigation action.
          type: object
          anyOf:
            - $ref: '#/components/schemas/ShiftoverviewCallToActionButton'
            - enum:
                - null
          nullable: true
    ShiftoverviewTag:
      description: Represents a tag associated with a shift.
      required:
        - type
      type: object
      properties:
        type:
          description: The category or type of the tag.
          type: string
          allOf:
            - $ref: '#/components/schemas/ShiftoverviewTagTheme'
          example: warning
        text:
          description: The descriptive text associated with the tag.
          type: string
          example: no-show
          nullable: true
        icon:
          description: An optional icon representing the tag visually, typically used for UI display.
          type: string
          example: clock
          anyOf:
            - $ref: '#/components/schemas/ShiftoverviewIcon'
            - enum:
                - null
          nullable: true
    ShiftoverviewTagTheme:
      enum:
        - warning
        - information
        - positive
        - error
        - ''
        - neutral
        - brand
      type: string
    ShiftoverviewTimeFormat:
      enum:
        - 12h
        - 24h
      type: string
    ShiftoverviewTipDto:
      required:
        - jobId
        - orderId
        - amount
        - currency
        - tippedOn
      type: object
      properties:
        jobId:
          description: job identifier associated with the tip
          type: string
          example: '2345123'
          nullable: true
        orderId:
          description: order identifier associated with the tip
          type: string
          example: '2345123'
          nullable: true
        amount:
          format: double
          description: amount of the tip
          type: number
          example: 42.21
        currency:
          description: the currency of the tip
          type: string
          example: EUR
          nullable: true
        tippedOn:
          description: the date of the tip placed on
          type: string
          example: '2025-01-06'
          nullable: true
    ShiftoverviewTipResponse:
      required:
        - driverTips
        - total
        - currency
      type: object
      properties:
        driverTips:
          description: A list of tips to the courier.
          type: array
          items:
            $ref: '#/components/schemas/ShiftoverviewTipDto'
        total:
          format: double
          description: sum of the tips amounts
          type: number
          example: 42.21
        currency:
          description: default currency for the tip amounts
          type: string
          example: EUR
    SkipmenueditorgatewaySkipMenuEditorGatewayRequest:
      description: GraphQL request
      properties:
        variables:
          description: variables used in query
          type: object
        query:
          description: GraphQL statement
          type: string
      type: object
    SkipmenueditorgatewaySkipMenuEditorGatewayResponse:
      description: GraphQL response
      properties:
        data:
          description: GraphQL data response
          type: object
        errors:
          items:
            type: object
          description: GraphQL errors response
          type: array
      type: object
    SolvimonWebhookRequest:
      type: object
      additionalProperties: true
      properties:
        created_at:
          type: string
          format: date-time
          description: The time stamp of update
          example: '2025-03-19T17:41:28Z'
        type:
          type: string
          description: The resource type and the associated action
          example: INVOICE.CREATED
        environment:
          type: string
          description: The environment name
          example: test
        data:
          type: object
          description: The current state of the resource
          additionalProperties: true
        previous_data:
          type: object
          description: The previous state of the resource
          nullable: true
          additionalProperties: true
    StorefrontAdditive:
      type: object
      description: A single additive data point, including its type, source, verification status, and any associated warnings.
      nullable: true
      required:
        - type
        - verified
      properties:
        type:
          type: string
          description: The type of additive.
          example: caffeine
        dataSource:
          description: The source of the allergen data.
          $ref: '#/components/schemas/StorefrontDataSource'
        verified:
          type: boolean
          description: Whether the additive data has been verified.
        warnings:
          type: array
          description: An array of warnings associated with this additive.
          items:
            $ref: '#/components/schemas/StorefrontDescriptor'
    StorefrontAdditiveAttribute:
      type: object
      description: Adds additive-specific data to the base attribute.
      required:
        - additive
      properties:
        additive:
          $ref: '#/components/schemas/StorefrontAdditive'
    StorefrontAgeData:
      type: object
      description: The age-specific restriction data.
      required:
        - minAge
      properties:
        minAge:
          type: number
          format: integer
          description: The minimum purchase age value.
    StorefrontAgeRestriction:
      type: object
      description: Adds age-specific data to the base restriction.
      required:
        - age
      properties:
        age:
          $ref: '#/components/schemas/StorefrontAgeData'
    StorefrontAllergen:
      type: object
      nullable: true
      description: A single allergen data point.
      required:
        - level
        - type
        - verified
      properties:
        dataSource:
          description: The source of the allergen data.
          $ref: '#/components/schemas/StorefrontDataSource'
        verified:
          type: boolean
          description: Whether the allergen data has been verified
        level:
          type: string
          description: The containment level; contains or mayContain.
          example: contains
          enum:
            - contains
            - mayContain
        type:
          type: string
          description: The type of allergen.
          example: peanut
        subTypes:
          type: array
          description: An array of allergen sub types, may be empty.
          items:
            $ref: '#/components/schemas/StorefrontDescriptor'
    StorefrontAllergenAttribute:
      type: object
      description: Adds allergen-specific data to the base attribute.
      required:
        - allergen
      properties:
        allergen:
          $ref: '#/components/schemas/StorefrontAllergen'
    StorefrontAttribute:
      type: object
      description: A single, structured product attribute.
      required:
        - key
        - dataType
        - display
      properties:
        key:
          type: string
          description: A stable, machine-readable key for the attribute.
          example: energy
        dataType:
          type: string
          description: The discriminator, defining the structure of the data payload.
          example: measurement
        display:
          $ref: '#/components/schemas/StorefrontDisplay'
      oneOf:
        - $ref: '#/components/schemas/StorefrontMeasurementAttribute'
        - $ref: '#/components/schemas/StorefrontAllergenAttribute'
        - $ref: '#/components/schemas/StorefrontAdditiveAttribute'
        - $ref: '#/components/schemas/StorefrontFinancialAttribute'
      discriminator:
        propertyName: dataType
        mapping:
          measurement: '#/components/schemas/StorefrontMeasurementAttribute'
          allergen: '#/components/schemas/StorefrontAllergenAttribute'
          additive: '#/components/schemas/StorefrontAdditiveAttribute'
          financial: '#/components/schemas/StorefrontFinancialAttribute'
    StorefrontCatalogCategory:
      type: object
      additionalProperties: false
      required:
        - id
        - name
        - serviceType
      properties:
        id:
          description: A unique identifier for category.
          type: string
        name:
          description: The name of the category.
          type: string
        description:
          description: The description of the category.
          type: string
          nullable: true
        serviceType:
          enum:
            - delivery
            - collection
          description: Type of service (collection or delivery)
        images:
          description: Array of category image references.
          type: array
          items:
            $ref: '#/components/schemas/StorefrontImage'
        _links:
          $ref: '#/components/schemas/StorefrontCatalogCategoryLinks'
    StorefrontCatalogCategoryLinks:
      type: object
      description: Hypermedia links related to the catalog node. This will be null for a top-level category.
      additionalProperties: false
      required:
        - self
      properties:
        parent:
          type: object
          nullable: true
          description: The link for the parent category resource.
          additionalProperties: false
          required:
            - url
          properties:
            url:
              description: The URL for the parent category.
              type: string
              format: uri-reference
        categories:
          type: object
          nullable: true
          additionalProperties: false
          required:
            - url
          description: A link to a resource that will return a collection of child categories. This will be null if there are no child categories.
          properties:
            url:
              description: The URL for to the child categories.
              type: string
              format: uri-reference
        products:
          type: object
          nullable: true
          additionalProperties: false
          required:
            - url
          description: A link to a resource that will return a collection of child products. This will be null if there are no child products.
          properties:
            url:
              description: The URL for to the child categories.
              type: string
              format: uri-reference
        self:
          type: object
          description: The canonical link to the catalog resource.
          additionalProperties: false
          required:
            - url
          properties:
            url:
              description: The URL for the specific catalog resource.
              type: string
              format: uri-reference
    StorefrontCatalogCategoryProduct:
      type: object
      description: A definition of the individual product that belongs to a category.
      required:
        - id
        - name
        - status
        - pricing
        - purchaseOptions
        - images
        - _links
      properties:
        id:
          description: A unique identifier for the product within the catalog.
          type: string
        name:
          description: The name of the product.
          type: string
          nullable: true
        description:
          description: The description of the product.
          type: string
        status:
          $ref: '#/components/schemas/StorefrontStatus'
        pricing:
          $ref: '#/components/schemas/StorefrontPricing'
        purchaseOptions:
          $ref: '#/components/schemas/StorefrontPurchaseOptions'
        excludableTypes:
          type: array
          nullable: true
          description: Specifies product types that should be excluded based on user-specific self-exclusion settings.
          items:
            type: string
        attributes:
          type: array
          description: A flexible list of structured attributes for the product.
          items:
            $ref: '#/components/schemas/StorefrontAttribute'
        images:
          description: Array of image objects, where each image source contains an image url.
          type: array
          items:
            $ref: '#/components/schemas/StorefrontImage'
        _links:
          $ref: '#/components/schemas/StorefrontCatalogProductLinks'
    StorefrontCatalogCategoryProducts:
      type: object
      description: A definition of the products that belong to a category.
      additionalProperties: false
      required:
        - serviceType
        - currency
        - categories
        - _links
      properties:
        serviceType:
          enum:
            - delivery
            - collection
          description: Type of service (collection or delivery)
        currency:
          type: string
          description: Name of currency in ISO 4217 format e.g. USD, EUR, GBP.
        products:
          additionalProperties: false
          type: array
          description: A collection of products for the store front
          items:
            $ref: '#/components/schemas/StorefrontCatalogCategoryProduct'
        paging:
          $ref: '#/components/schemas/PagingPagedCursorResponse'
        _links:
          $ref: '#/components/schemas/StorefrontCatalogPagingLinks'
    StorefrontCatalogPagingLinks:
      type: object
      description: Hypermedia links related to the catalog node.
      additionalProperties: false
      required:
        - self
      properties:
        previous:
          type: object
          nullable: true
          additionalProperties: false
          description: A link to the previous page. This will be null if there is only 1 page or the current page is the first page.
          properties:
            url:
              description: The URL for previous page.
              type: string
              format: uri-reference
        next:
          type: object
          nullable: true
          additionalProperties: false
          description: A link to the next page. This will be null if there is only 1 page or the current page is the last page.
          properties:
            url:
              description: The URL for the next page.
              type: string
              format: uri-reference
        self:
          type: object
          description: The canonical link to the catalog resource
          additionalProperties: false
          properties:
            url:
              description: The URL for the specific catalog resource.
              type: string
              format: uri-reference
    StorefrontCatalogProduct:
      type: object
      description: A definition of an individual product within the catalog.
      required:
        - id
        - name
        - status
        - pricing
        - purchaseOptions
        - images
        - _links
      properties:
        id:
          description: A unique identifier for the product within the catalog.
          type: string
        name:
          description: The name of the product.
          type: string
          nullable: true
        description:
          description: The description of the product.
          type: string
        category:
          $ref: '#/components/schemas/StorefrontCatalogProductCategory'
        status:
          $ref: '#/components/schemas/StorefrontStatus'
        pricing:
          $ref: '#/components/schemas/StorefrontPricing'
        purchaseOptions:
          $ref: '#/components/schemas/StorefrontPurchaseOptions'
        excludableTypes:
          type: array
          nullable: true
          description: Specifies product types that should be excluded based on user-specific self-exclusion settings.
          items:
            type: string
        attributes:
          type: array
          description: A flexible list of structured attributes for the product.
          items:
            $ref: '#/components/schemas/StorefrontAttribute'
        images:
          description: Array of image objects, where each image source contains an image url.
          type: array
          items:
            $ref: '#/components/schemas/StorefrontImage'
        _links:
          $ref: '#/components/schemas/StorefrontCatalogProductLinks'
    StorefrontCatalogProductCategory:
      type: object
      description: The direct associated category for the product
      properties:
        id:
          type: string
          description: The unique id of the category
    StorefrontCatalogProductLinks:
      type: object
      description: Hypermedia links related to the catalog node.
      additionalProperties: false
      required:
        - self
      properties:
        parent:
          type: object
          description: The canonical link to the parent category resource.
          additionalProperties: false
          required:
            - url
          properties:
            url:
              description: The URL for a parent category resource.
              type: string
              format: uri-reference
        self:
          type: object
          description: The canonical link to the product resource.
          additionalProperties: false
          properties:
            url:
              description: The URL for the specific catalog resource.
              type: string
              format: uri-reference
    StorefrontCatalogProducts:
      type: object
      description: A definition of the products within a catalog.
      additionalProperties: false
      required:
        - serviceType
        - currency
        - categories
        - _links
      properties:
        serviceType:
          enum:
            - delivery
            - collection
          description: Type of service (collection or delivery)
        currency:
          type: string
          description: Name of currency in ISO 4217 format e.g. USD, EUR, GBP.
        products:
          additionalProperties: false
          type: array
          description: A collection of products for the store front
          items:
            $ref: '#/components/schemas/StorefrontCatalogProduct'
        paging:
          $ref: '#/components/schemas/PagingPagedCursorResponse'
        _links:
          $ref: '#/components/schemas/StorefrontCatalogPagingLinks'
    StorefrontCategories:
      type: object
      description: A definition for the collection categories within a store front catalogue.
      additionalProperties: false
      required:
        - categories
        - _links
      properties:
        categories:
          additionalProperties: false
          type: array
          description: A collection of categories for the store front
          items:
            $ref: '#/components/schemas/StorefrontCatalogCategory'
        paging:
          $ref: '#/components/schemas/PagingPagedCursorResponse'
        _links:
          $ref: '#/components/schemas/StorefrontCatalogPagingLinks'
    StorefrontChoiceRules:
      type: object
      description: Defines the rules for how many times an item can be selected.
      required:
        - min
        - max
        - default
      properties:
        min:
          type: integer
          description: The minimum number of selections required. For a group, this defines the total number of different items that must be chosen. For a single item, this defines its minimum required quantity.
          example: 0
        max:
          type: integer
          description: The maximum number of selections allowed. For a group, this defines the total number of different items that can be chosen. For a single item, this defines its maximum allowed quantity.
          example: 1
        default:
          type: integer
          description: The quantity of a single item that is selected by default. This is primarily used on individual modifiers.
          example: 0
    StorefrontConsent:
      type: object
      nullable: true
      description: The Consent details for a product
      required:
        - type
        - requiresUserConsent
        - displayText
      properties:
        type:
          type: string
          description: The type of consent required (e.g., General, AgeVerification). This field is extensible.
          example: General
        requiresUserConsent:
          type: boolean
          description: Whether the consent requires to be agreed by the user
        displayText:
          type: string
          description: The text to display for the consent
    StorefrontDataSource:
      type: object
      description: The source of the data, including a machine-readable key and a display label.
      required:
        - value
        - displayText
      properties:
        value:
          type: string
          description: The machine-readable source key.
          enum:
            - databank
            - partner
            - prediction
        displayText:
          type: string
          description: The human-readable, translated label.
          example: Partner
    StorefrontDealGroup:
      type: object
      description: A group of deal variation ids that can be applied to a variation.
      required:
        - id
        - name
        - choiceRules
        - variations
      properties:
        id:
          type: string
          description: The identifier of the deal group
        name:
          type: string
          description: The name of the deal group
        choiceRules:
          $ref: '#/components/schemas/StorefrontChoiceRules'
        variations:
          type: array
          description: The list of deal item variations in this group.
          items:
            $ref: '#/components/schemas/StorefrontDealVariation'
    StorefrontDealVariation:
      type: object
      description: A variation that can be added as part of a deal
      required:
        - variation
        - priceAdjustment
        - choiceRules
      properties:
        variation:
          $ref: '#/components/schemas/StorefrontVariation'
          description: The variation for the deal
        priceAdjustment:
          type: number
          format: integer
          description: The amount to add (positive value) or subtract (negative value) from the deal variation's price. This should be specified using minor units (pence/cents) of the currency.
        choiceRules:
          $ref: '#/components/schemas/StorefrontChoiceRules'
    StorefrontDescriptor:
      type: object
      description: A simple, reusable descriptor with a type, a machine-readable value, and a display label.
      required:
        - type
        - value
        - displayText
      properties:
        type:
          type: string
          description: The classification or category of the descriptor.
          example: deposit
        value:
          type: string
          description: The stable, machine-readable value or key.
          example: inclusive
        displayText:
          type: string
          description: The human-readable, translated label.
          example: Inclusive
    StorefrontDisplay:
      type: object
      description: Provides display-ready text for the client.
      required:
        - displayText
      properties:
        name:
          type: string
          nullable: true
          description: The human-readable name or label for the attribute (e.g., "Net Weight").
        displayText:
          type: string
          description: The fully formatted, presentation-ready string to be displayed to the user.
    StorefrontFinancial:
      type: object
      nullable: true
      description: A single financial data point (e.g., price, deposit). It MUST have either `value` or `range`.
      properties:
        value:
          type: number
          nullable: true
          format: double
          description: The financial value (in the root currency).
        range:
          $ref: '#/components/schemas/StorefrontMinMaxRange'
          nullable: true
        descriptor:
          $ref: '#/components/schemas/StorefrontDescriptor'
          nullable: true
          description: An optional, generic descriptor for the value (e.g., "inclusive").
      oneOf:
        - required:
            - value
        - required:
            - range
    StorefrontFinancialAttribute:
      type: object
      description: Adds financial-specific data to the base attribute.
      required:
        - financial
      properties:
        financial:
          $ref: '#/components/schemas/StorefrontFinancial'
    StorefrontImage:
      type: object
      required:
        - url
      properties:
        url:
          description: The url or the image.
          type: string
          format: uri
        altText:
          nullable: true
          description: The alternative text for the image url.
          type: string
    StorefrontMeasurement:
      type: object
      nullable: true
      description: A single, raw measurement data point, with optional alternates.
      required:
        - unit
      properties:
        unit:
          type: string
          description: The physical unit of this measurement (e.g. 'kJ', 'kCal', 'g').
        value:
          type: number
          format: decimal
          nullable: true
          description: The raw numerical value for a fixed measurement (e.g. 500).
        range:
          $ref: '#/components/schemas/StorefrontMinMaxRange'
          nullable: true
          description: The optional range (min/max) for a variable measurement.
        referenceMeasure:
          nullable: true
          $ref: '#/components/schemas/StorefrontReferenceMeasure'
          description: The optional context for this measurement (e.g. "per 100g" or "per serving").
        alternate:
          type: array
          description: A list of alternate, equivalent measurements (e.g. kJ for kCal).
          items:
            $ref: '#/components/schemas/StorefrontMeasurement'
      oneOf:
        - required:
            - value
        - required:
            - range
    StorefrontMeasurementAttribute:
      type: object
      description: Adds measurement-specific data to the base attribute.
      required:
        - measurement
      properties:
        measurement:
          $ref: '#/components/schemas/StorefrontMeasurement'
    StorefrontMinMaxRange:
      type: object
      nullable: true
      description: The optional range (min/max) for a variable measurement. If present, this object MUST contain at least one of 'min' or 'max'.
      properties:
        min:
          type: number
          nullable: true
          description: The minimum value of the range.
        max:
          type: number
          nullable: true
          description: The maximum value of the range.
      minProperties: 1
    StorefrontModifier:
      type: object
      description: A specific modification that can be applied, often with a price change.
      required:
        - id
        - name
        - priceAdjustment
        - choiceRules
        - status
      properties:
        id:
          type: string
          description: The identifier of the modifier
        name:
          type: string
          description: The name of the modifier
        priceAdjustment:
          type: number
          format: integer
          description: The amount to add (positive value) or subtract (negative value) when this modifier is selected. This should be specified using minor units (pence/cents) of the currency.
        choiceRules:
          $ref: '#/components/schemas/StorefrontChoiceRules'
        status:
          $ref: '#/components/schemas/StorefrontStatus'
        attributes:
          type: array
          description: A flexible list of structured attributes for the product.
          items:
            $ref: '#/components/schemas/StorefrontAttribute'
    StorefrontModifierGroup:
      type: object
      description: A group of related modifiers that can be applied to an item.
      required:
        - id
        - name
        - choiceRules
        - modifiers
      properties:
        id:
          type: string
          description: The identifier of the modifier group
        name:
          type: string
          description: The name of the modifier group
        choiceRules:
          $ref: '#/components/schemas/StorefrontChoiceRules'
        modifiers:
          type: array
          description: The list of available modifiers in this group.
          items:
            $ref: '#/components/schemas/StorefrontModifier'
    StorefrontPricing:
      type: object
      description: A container for pricing-related information for a product, scoped to a service type (e.g. delivery or collection).
      required:
        - price
      properties:
        isVariable:
          type: boolean
          default: false
          nullable: true
          description: A boolean flag indicating that the final price is not fixed and can change based on customer selections or other factors. If omitted, consumers should treat this as `false`.
        price:
          type: number
          format: integer
          nullable: false
          minimum: 0
          description: |
            The price the customer will pay for the product, factoring in any offer discount. Expressed in the minor unit of the currency (e.g. Euro cents).
        unitPrice:
          type: object
          nullable: true
          description: |
            The price the customer will pay for the product relative to the net quantity for sale, factoring in any offer discount.
          allOf:
            - $ref: '#/components/schemas/StorefrontUnitPrice'
        additionalCharges:
          type: object
          nullable: true
          description: A container for any additional changes that apply to the product.
          properties:
            singleUsePlasticFee:
              type: number
              format: integer
              nullable: true
              minimum: 0
              description: |
                A mandatory fee for plastic included with the product, as required by single-use plastic (SUP) legislation in the market. Expressed in the minor unit of the currency (e.g. Euro cents).
            depositReturnScheme:
              type: number
              format: integer
              nullable: true
              minimum: 0
              description: |
                A mandatory charge for packaging included with the product, which can be recovered by the customer in line with deposit return scheme (DRS) legislation in the market. Expressed in the minor unit of the currency (e.g. Euro cents).
          oneOf:
            - required:
                - singleUsePlasticFee
            - required:
                - depositReturnScheme
        customerFacingDiscount:
          type: object
          nullable: true
          description: |
            Details of any offer discount to advertise to the customer. If more than one offer has been configured for this product, the object refers to the one with the highest discount. In markets where Omnibus II legislation applies, this object is only returned if the discount relative to the prior lowest price in the last 30 days is greater than zero.
          required:
            - previousPrice
          properties:
            previousPrice:
              type: number
              format: integer
              nullable: false
              minimum: 0
              description: |
                The price of the product before the discount, expressed in the minor unit of the currency (e.g. Euro cents). In markets where Omnibus II legislation applies, this is the lowest price in the last 30 days. In other markets, this is the price as stated in the catalogue.
            discountAmount:
              type: number
              format: integer
              nullable: false
              minimum: 1
              description: |
                The fixed-value discount applied to the product, expressed in the minor unit of the currency (e.g. Euro cents). In markets where Omnibus II legislation applies, this is adjusted relative to the product's prior lowest price in the last 30 days.
            discountPercentage:
              type: number
              format: decimal
              nullable: false
              minimum: 0
              exclusiveMinimum: true
              description: |
                The percentage discount applied to the product. In markets where Omnibus II legislation applies, this is adjusted relative to the product's prior lowest price in the last 30 days.
            lowestPrice:
              type: number
              format: integer
              nullable: true
              minimum: 0
              description: |
                Where applicable, the lowest price (including discount) of the product in the last 30 days, expressed in the minor unit of the currency (e.g. Euro cents). Returned only in markets where Omnibus II legislation applies.
          oneOf:
            - required:
                - percentage
              not:
                required:
                  - amount
            - required:
                - amount
              not:
                required:
                  - percentage
        partnerConfiguredDiscount:
          type: object
          nullable: true
          description: |
            Details of any offer discount configured by the partner. If more than one offer has been configured for this product, the object refers to the one with the highest discount. In markets where Omnibus II legislation applies, this object is returned even if the offer providing the discount is not compliant - i.e. it is still returned when the actual discount relative to the lowest price in the last 30 days is zero or negative.
          required:
            - offerId
            - description
            - previousPrice
          properties:
            offerId:
              type: string
              nullable: false
              minLength: 1
              description: The unique identifier for the offer.
            description:
              type: string
              nullable: false
              minLength: 1
              description: |
                A human-readable name or description for the offer. In markets where Omnibus II legislation applies, the description may be adjusted relative to the lowest prior price of any products in the offer over the last 30 days. For example, "20% off selected items" may become "Up to 16% off selected items".
            previousPrice:
              type: number
              format: integer
              nullable: false
              minimum: 0
              description: |
                The price of the product before the discount, expressed in the minor unit of the currency (e.g. Euro cents). This is the price of the item as stated in the catalogue, and is never adjusted.
            discountAmount:
              type: number
              format: integer
              nullable: false
              minimum: 1
              description: |
                The fixed-value discount applied to the product, expressed in the minor unit of the currency (e.g. Euro cents). This is the value the partner configured for the offer, and is never adjusted.
            discountPercentage:
              type: number
              format: decimal
              nullable: false
              minimum: 0
              exclusiveMinimum: true
              description: |
                The percentage discount applied to the product. This is the value the partner configured for the offer, and is never adjusted.
          oneOf:
            - required:
                - percentage
              not:
                required:
                  - amount
            - required:
                - amount
              not:
                required:
                  - percentage
    StorefrontProduct:
      type: object
      required:
        - id
        - name
        - categories
        - serviceType
        - currency
        - pricing
        - type
        - purchaseOptions
        - status
        - variations
      properties:
        id:
          description: The product identifier.
          type: string
        name:
          description: The name of the product.
          type: string
        description:
          type: string
          description: A detailed description of the menu item.
          nullable: true
        categories:
          type: array
          description: List of categories this product is in
          items:
            $ref: '#/components/schemas/StorefrontCatalogCategory'
        serviceType:
          enum:
            - delivery
            - collection
          description: Type of service (collection or delivery)
        currency:
          type: string
          description: Name of currency in ISO 4217 format e.g. USD, EUR, GBP.
        pricing:
          $ref: '#/components/schemas/StorefrontPricing'
        type:
          type: string
          description: The type of product
          enum:
            - product
            - deal
        images:
          description: Array of product image references.
          type: array
          items:
            $ref: '#/components/schemas/StorefrontImage'
        labels:
          type: array
          description: List of factual product labels that can be used by clients to render UI indicators such as vegan, vegetarian, or spicy.
          items:
            type: string
            description: A factual product label value intended for UI logic or iconography rather than customer-facing text.
        purchaseOptions:
          $ref: '#/components/schemas/StorefrontPurchaseOptions'
        excludableTypes:
          type: array
          nullable: true
          description: Specifies product types that should be excluded based on user-specific self-exclusion settings.
          items:
            type: string
        consent:
          $ref: '#/components/schemas/StorefrontConsent'
        status:
          $ref: '#/components/schemas/StorefrontStatus'
        variations:
          type: array
          description: A list of all available variations for this product.
          items:
            $ref: '#/components/schemas/StorefrontVariation'
        attributes:
          type: array
          description: A flexible list of structured attributes for the product.
          items:
            $ref: '#/components/schemas/StorefrontAttribute'
    StorefrontPurchaseOptions:
      type: object
      description: Describes the purchase options for the product
      required:
        - requiresCustomisation
        - restrictions
      properties:
        requiresCustomisation:
          type: boolean
          description: If 'true', the product requires customisation (e.g., selecting size) before it can be added to the basket. If 'false', it can be added directly.
        restrictions:
          type: array
          description: A list of all restrictions that apply to this product.
          items:
            $ref: '#/components/schemas/StorefrontRestriction'
    StorefrontReferenceMeasure:
      type: object
      nullable: true
      description: A structured reference for a measurement, defining its context (e.g., "100g" or "1 can").
      required:
        - unit
        - value
      properties:
        unit:
          type: string
          description: The unit of the context.
          example: g
        value:
          type: number
          description: The value of the context.
          example: 100
    StorefrontRestriction:
      type: object
      description: A single, structured product restriction.
      required:
        - type
        - dataType
        - display
      properties:
        type:
          type: string
          description: A stable, machine-readable key for the restriction.
          example: age_restriction
        dataType:
          type: string
          description: The discriminator, defining the structure of the data payload.
          example: age
        display:
          $ref: '#/components/schemas/StorefrontDisplay'
      oneOf:
        - $ref: '#/components/schemas/StorefrontAgeRestriction'
      discriminator:
        propertyName: dataType
        mapping:
          age: '#/components/schemas/StorefrontAgeRestriction'
    StorefrontStatus:
      type: object
      description: Represents the status of an item.
      additionalProperties: false
      required:
        - isOffline
        - hasLowStock
      properties:
        isOffline:
          type: boolean
          description: Describes whether the item is offline or all required modifiers for the item are offline.
        hasLowStock:
          type: boolean
          description: Describes whether the item has low stock or all required modifiers for the item have low stock.
    StorefrontUnitPrice:
      description: Unit-based pricing details for a discounted item
      type: object
      additionalProperties: false
      properties:
        price:
          description: |
            Price per unit in the minor unit of the currency (e.g. Euro cents), with up to one decimal place of precision. Although a departure from JET's usual API design principle of money expressed as integers in the currency's minor unit, the extra precision is required to comply with unit pricing legislation.
          type: number
          format: decimal
          minimum: 0.1
          multipleOf: 0.1
          nullable: false
        quantity:
          description: The number of units to which the price relates. For example, 10 when the unit price is "£50 per 10kg".
          type: number
          minimum: 1
          nullable: false
        unit:
          description: The unit of measurement
          type: string
          enum:
            - cl
            - cm
            - g
            - kg
            - l
            - m
            - ml
            - sheet
            - sqm
            - unit
          nullable: false
      required:
        - price
        - quantity
        - unit
      example:
        price: 427.3
        quantity: 1
        unit: kg
    StorefrontVariation:
      type: object
      description: Represents a specific variation of a product, including its customisation options.
      required:
        - id
        - name
        - pricing
        - status
      properties:
        id:
          type: string
          description: The unique identifier of the variation.
        name:
          type: string
          description: The display name of the variation.
        description:
          type: string
          description: A detailed description for this specific variation.
          nullable: true
        pricing:
          $ref: '#/components/schemas/StorefrontPricing'
        gtin:
          type: string
          description: The GS1 GTIN code to uniquely identify a given product. This may be an EAN, APN, ISBN or UPC.
          nullable: true
        status:
          $ref: '#/components/schemas/StorefrontStatus'
        labels:
          nullable: true
          type: array
          description: List of factual variation labels that can be used by clients to render UI indicators such as vegan, vegetarian, or spicy.
          items:
            type: string
            description: A factual variation label value intended for UI logic or iconography rather than customer-facing text.
        modifierGroups:
          type: array
          nullable: true
          description: A list of modifier groups available for this variation.
          items:
            $ref: '#/components/schemas/StorefrontModifierGroup'
        dealGroups:
          type: array
          nullable: true
          description: A list of deal groups available for this variation.
          items:
            $ref: '#/components/schemas/StorefrontDealGroup'
        consent:
          $ref: '#/components/schemas/StorefrontConsent'
        attributes:
          type: array
          description: A flexible list of structured attributes for the product.
          items:
            $ref: '#/components/schemas/StorefrontAttribute'
    StorefrontBatchCatalogCategory:
      type: object
      additionalProperties: false
      required:
        - id
        - name
        - serviceTypes
      properties:
        id:
          description: A unique identifier for category.
          type: string
        name:
          description: The name of the category.
          type: string
        description:
          description: The description of the category.
          type: string
          nullable: true
        serviceTypes:
          type: array
          description: The service types this category belongs to (e.g. delivery, collection).
          minItems: 1
          uniqueItems: true
          items:
            type: string
            enum:
              - delivery
              - collection
        images:
          description: Array of category image references.
          type: array
          items:
            $ref: '#/components/schemas/StorefrontImage'
    StorefrontBatchDealGroup:
      type: object
      description: A group of deal products that can be applied to a product.
      required:
        - id
        - name
        - choiceRules
        - products
      properties:
        id:
          type: string
          description: The identifier of the deal group.
        name:
          type: string
          description: The name of the deal group.
        choiceRules:
          $ref: '#/components/schemas/StorefrontChoiceRules'
        products:
          type: array
          description: The list of deal products in this group.
          items:
            $ref: '#/components/schemas/StorefrontBatchDealProduct'
    StorefrontBatchDealProduct:
      type: object
      description: A product that can be added as part of a deal.
      required:
        - product
        - price
        - choiceRules
      properties:
        product:
          $ref: '#/components/schemas/StorefrontBatchProduct'
          description: The product for the deal.
        price:
          description: The price adjustment keyed by service type. Amounts are relative deltas and may be positive or negative.
          $ref: '#/components/schemas/StorefrontBatchPricingPerServiceType'
        choiceRules:
          $ref: '#/components/schemas/StorefrontChoiceRules'
    StorefrontBatchModifier:
      type: object
      description: A specific modification that can be applied, often with a price change.
      required:
        - id
        - name
        - price
        - choiceRules
        - status
      properties:
        id:
          type: string
          description: The identifier of the modifier.
        name:
          type: string
          description: The name of the modifier.
        price:
          description: The price adjustment keyed by service type. Amounts are relative deltas and may be positive or negative.
          $ref: '#/components/schemas/StorefrontBatchPricingPerServiceType'
        choiceRules:
          $ref: '#/components/schemas/StorefrontChoiceRules'
        status:
          $ref: '#/components/schemas/StorefrontStatus'
        attributes:
          type: array
          description: A flexible list of structured attributes for the product.
          items:
            $ref: '#/components/schemas/StorefrontAttribute'
    StorefrontBatchModifierGroup:
      type: object
      description: A group of related modifiers that can be applied to a product.
      required:
        - id
        - name
        - choiceRules
        - modifiers
      properties:
        id:
          type: string
          description: The identifier of the modifier group.
        name:
          type: string
          description: The name of the modifier group.
        choiceRules:
          $ref: '#/components/schemas/StorefrontChoiceRules'
        modifiers:
          type: array
          description: The list of available modifiers in this group.
          items:
            $ref: '#/components/schemas/StorefrontBatchModifier'
    StorefrontBatchPricingPerServiceType:
      type: object
      description: Price information keyed by service type.
      properties:
        delivery:
          type: object
          description: Pricing details for the product when ordered for delivery.
          allOf:
            - $ref: '#/components/schemas/StorefrontPricing'
        collection:
          type: object
          description: Pricing details for the product when ordered for collection.
          allOf:
            - $ref: '#/components/schemas/StorefrontPricing'
      anyOf:
        - required:
            - delivery
        - required:
            - collection
    StorefrontBatchProduct:
      type: object
      description: A product in a batch product details response. Contains purchasable product facts enriched with selected product group fields sourced from the grouping entity, along with optional modifier groups and deal groups.
      required:
        - partnerId
        - id
        - name
        - type
        - productGroup
        - categories
        - images
        - labels
        - serviceTypes
        - currency
        - price
        - status
      properties:
        partnerId:
          type: string
          description: The partner (restaurant) this product belongs to.
        id:
          type: string
          description: The product identifier.
        name:
          type: string
          description: The native child product name.
        type:
          type: string
          description: The type of product.
          enum:
            - product
            - deal
        productGroup:
          $ref: '#/components/schemas/StorefrontBatchProductGroup'
        categories:
          type: array
          description: Product group-derived categories for the product.
          items:
            $ref: '#/components/schemas/StorefrontBatchCatalogCategory'
        description:
          type: string
          description: A description using the child product description when present, otherwise the product group description.
          nullable: true
        images:
          type: array
          description: Product group-derived image references for the product.
          items:
            $ref: '#/components/schemas/StorefrontImage'
        serviceTypes:
          type: array
          description: The service types this product belongs to (e.g. delivery, collection).
          items:
            type: string
            enum:
              - delivery
              - collection
        currency:
          type: string
          description: Name of currency in ISO 4217 format e.g. USD, EUR, GBP.
        price:
          description: The product price keyed by service type.
          $ref: '#/components/schemas/StorefrontBatchPricingPerServiceType'
        gtin:
          type: string
          description: The GS1 GTIN code to uniquely identify a given product. This may be an EAN, APN, ISBN or UPC.
          nullable: true
        status:
          $ref: '#/components/schemas/StorefrontStatus'
        labels:
          type: array
          nullable: true
          description: Product group-derived labels for the product.
          items:
            type: string
            description: A factual product label value intended for UI logic or iconography rather than customer-facing text.
        modifierGroups:
          type: array
          nullable: true
          description: |
            A list of modifier groups available for this product. This field is only present when `responseOptions.include` contains `customisations`.
          items:
            $ref: '#/components/schemas/StorefrontBatchModifierGroup'
        dealGroups:
          type: array
          nullable: true
          description: |
            A list of deal groups available for this product. This field is only present when `responseOptions.include` contains `customisations`.
          items:
            $ref: '#/components/schemas/StorefrontBatchDealGroup'
        consent:
          $ref: '#/components/schemas/StorefrontConsent'
        attributes:
          type: array
          description: A flexible list of structured attributes for the product.
          items:
            $ref: '#/components/schemas/StorefrontAttribute'
    StorefrontBatchProductGroup:
      type: object
      description: The product group that the buyable product belongs to.
      required:
        - id
        - name
      properties:
        id:
          type: string
          description: The product group identifier.
        name:
          type: string
          description: The product group name.
    StorefrontBatchProductsRequest:
      type: object
      description: Request body for the batch product details endpoint. Contains a list of products to retrieve along with optional lookup filters and response shaping parameters.
      required:
        - products
      properties:
        products:
          type: array
          description: List of products to fetch. At least one product is required and no more than 25 products are allowed per request.
          minItems: 1
          maxItems: 25
          items:
            $ref: '#/components/schemas/StorefrontBatchProductsRequestItem'
        responseOptions:
          type: object
          description: |
            Controls which optional response fields are returned by the batch product details endpoint. When omitted, this behaves as if `include` were empty.
          properties:
            include:
              type: array
              description: |
                Global list of optional nested collections to include in the response. Only listed collections are returned; unlisted heavy collections are omitted entirely (not returned as empty arrays). Scalar fields (name, description, pricing, etc.) are always returned regardless. When `customisations` is included, both `modifierGroups` and `dealGroups` are returned where relevant. When omitted or empty, no optional nested collections are included.
              items:
                type: string
                enum:
                  - customisations
        serviceTypes:
          type: array
          description: |
            When provided, filters results to only return products that belong to at least one of the specified service types. Products that do not match any requested service type are omitted from the response and echoed back in the unresolved products array. When omitted, no filtering is applied.
          minItems: 1
          uniqueItems: true
          items:
            type: string
            enum:
              - delivery
              - collection
        lookupTime:
          type: string
          format: date-time
          description: The date/time for catalogue lookup in UTC (ISO 8601 format, for example `2026-06-16T18:30:00Z`). Defaults to the current UTC date/time if not provided.
    StorefrontBatchProductsRequestItem:
      type: object
      description: A product in a batch product details request, identifying a single product to retrieve.
      required:
        - partnerId
        - productId
      properties:
        partnerId:
          type: string
          description: The partner (restaurant) identifier.
        productId:
          type: string
          description: The product identifier.
    StorefrontBatchProductsResponse:
      type: object
      description: |
        Response from the batch product details endpoint. Contains a flat array of product results and an array of requested products that could not be resolved.
      required:
        - products
        - missingProducts
      properties:
        products:
          type: array
          description: |
            Flat array of product results. Items that were not found or filtered out are omitted. Clients should match results by the partner identifier and product identifier, not by array index.
          items:
            $ref: '#/components/schemas/StorefrontBatchProduct'
        missingProducts:
          type: array
          description: |
            Requested products that could not be resolved. Always present; empty array `[]` when all requested products were resolved. Each entry echoes back the original requested product identifiers that did not produce a result — whether because the partner does not exist, the product was not found, or it was filtered out by the service type filter.
          items:
            $ref: '#/components/schemas/StorefrontBatchProductsRequestItem'
    SumsubActionBaseEvent:
      type: object
      description: |
        Base schema for Sumsub applicant action events.  Contains all fields common to most events and allows additional properties for forward compatibility.
      allOf:
        - type: object
          required:
            - type
            - applicantId
            - applicantActionId
            - inspectionId
            - levelName
            - externalUserId
            - reviewStatus
          properties:
            type:
              type: string
              description: |
                The event type. Known values include: - applicantActionPending - applicantActionOnHold - applicantActionReviewed
            applicantId:
              type: string
              description: Sumsub internal applicant ID
            applicantActionId:
              type: string
              description: Unique identifier for this specific action/task
            correlationId:
              type: string
              description: A unique identifier for the request, useful for log tracing between your system and Sumsub.
              example: req-63f92830-4d68-4eee-98d5-875d53a12258
            createdAtMs:
              type: string
              description: The millisecond-precision timestamp. This is usually easier to parse into Date objects.
              example: '2024-02-11 10:00:00.238'
            externalUserId:
              type: string
              description: JET internal identifier for the user
            inspectionId:
              type: string
              description: ID of the inspection session
            levelName:
              type: string
              description: Verification level assigned to the action
            reviewStatus:
              $ref: '#/components/schemas/SumsubReviewStatus'
          additionalProperties: true
    SumsubActionResultEvent:
      description: |
        Applicant action review result event.  Extends the base event and adds the review result.
      allOf:
        - $ref: '#/components/schemas/SumsubActionBaseEvent'
        - type: object
          required:
            - reviewResult
          properties:
            type:
              type: string
              enum:
                - applicantActionReviewed
            reviewResult:
              type: object
              required:
                - reviewAnswer
              properties:
                reviewAnswer:
                  $ref: '#/components/schemas/SumsubReviewAnswer'
          additionalProperties: true
    SumsubAmlCaseEvent:
      type: object
      description: |
        Schema for AML case events.
      required:
        - type
        - correlationId
        - sandboxMode
        - reviewStatus
        - reviewResult
        - createdAtMs
        - amlCaseId
      properties:
        type:
          type: string
          description: Event type identifier
        correlationId:
          type: string
          description: Unique identifier for the request
          example: 26e4b45a9a0e3e8715de1b8dba0851fa
        sandboxMode:
          type: boolean
          description: Indicates if the event was triggered in sandbox mode
          example: false
        reviewStatus:
          $ref: '#/components/schemas/SumsubReviewStatus'
        reviewResult:
          type: object
          required:
            - reviewAnswer
          properties:
            reviewAnswer:
              $ref: '#/components/schemas/SumsubReviewAnswer'
          additionalProperties: true
        createdAtMs:
          type: string
          description: Millisecond-precision timestamp
          example: '2023-08-30 10:03:20.907'
        amlCaseId:
          type: string
          description: AML case identifier
          example: 64baa015ebc52e736d147e8c
      additionalProperties: true
    SumsubApplicantBaseEvent:
      type: object
      description: |
        Base schema for Applicant Lifecycle webhook events.
      required:
        - type
        - applicantId
        - inspectionId
        - correlationId
        - levelName
        - externalUserId
        - sandboxMode
        - reviewStatus
        - createdAtMs
        - clientId
      properties:
        type:
          type: string
          description: Event type for applicant creation
        applicantId:
          type: string
          description: Sumsub internal applicant ID
          example: 5ede51230a975a19a19ba5c1
        inspectionId:
          type: string
          description: ID of the inspection session
          example: 5ede51230a975a19a19ba5c2
        correlationId:
          type: string
          description: A unique identifier for the request, useful for log tracing between your system and Sumsub
          example: req-60103dee-79f1-43f4-bdcc-eb2554556afa
        levelName:
          type: string
          description: Verification level assigned to the applicant
          example: id+liveness
        externalUserId:
          type: string
          description: JET internal identifier for the user
          example: '12672'
        sandboxMode:
          type: boolean
          description: Indicates if the event was triggered in sandbox mode
          example: false
        reviewStatus:
          $ref: '#/components/schemas/SumsubReviewStatus'
        createdAtMs:
          type: string
          description: The millisecond-precision timestamp
          example: '2020-06-08 19:39:29.002'
        clientId:
          type: string
          description: Client identifier
          example: coolClientId
      additionalProperties: true
    SumsubApplicantReviewResultEvent:
      type: object
      description: |
        Schema for Sumsub applicant events that include review result.
      allOf:
        - $ref: '#/components/schemas/SumsubApplicantTypedEvent'
        - type: object
          required:
            - reviewResult
          properties:
            type:
              type: string
            reviewResult:
              type: object
              required:
                - reviewAnswer
              properties:
                reviewAnswer:
                  $ref: '#/components/schemas/SumsubReviewAnswer'
          additionalProperties: true
    SumsubApplicantReviewedEvent:
      type: object
      required:
        - type
        - applicantId
        - inspectionId
        - correlationId
        - externalUserId
        - levelName
        - reviewStatus
        - reviewResult
        - createdAtMs
      properties:
        type:
          type: string
          enum:
            - applicantReviewed
        applicantId:
          type: string
        inspectionId:
          type: string
        correlationId:
          type: string
        externalUserId:
          type: string
        levelName:
          type: string
        reviewStatus:
          $ref: '#/components/schemas/SumsubReviewStatus'
        createdAtMs:
          type: string
        reviewResult:
          oneOf:
            - $ref: '#/components/schemas/SumsubReviewResultSuccess'
            - $ref: '#/components/schemas/SumsubReviewResultRetry'
            - $ref: '#/components/schemas/SumsubReviewResultFinal'
      additionalProperties: true
    SumsubApplicantType:
      type: string
      description: Defines the applicant entity type.
      enum:
        - individual
        - company
    SumsubApplicantTypedEvent:
      type: object
      description: |
        Common schema for Sumsub applicant Lifecycle events that include the applicant type. Note: review mode is optional and only present in applicantPending and applicantPrechecked events.
      allOf:
        - $ref: '#/components/schemas/SumsubApplicantBaseEvent'
        - type: object
          required:
            - type
            - applicantType
          properties:
            type:
              type: string
              description: Event type identifier
            applicantType:
              $ref: '#/components/schemas/SumsubApplicantType'
          additionalProperties: true
    SumsubApplicantWorkflowEvent:
      type: object
      description: |
        Schema for Sumsub applicant workflow events that include extended review result. These events represent the completion or failure of verification workflows.
      allOf:
        - $ref: '#/components/schemas/SumsubApplicantTypedEvent'
        - type: object
          required:
            - reviewResult
          properties:
            type:
              type: string
              description: Workflow event type identifier
            reviewResult:
              type: object
              required:
                - reviewAnswer
              properties:
                reviewAnswer:
                  $ref: '#/components/schemas/SumsubReviewAnswer'
                rejectLabels:
                  type: array
                  description: List of rejection reasons/labels
                  items:
                    type: string
                  example:
                    - AGE_REQUIREMENT_MISMATCH
                reviewRejectType:
                  type: string
                  $ref: '#/components/schemas/SumsubReviewRejectType'
                buttonIds:
                  type: array
                  description: Array of button IDs related to the workflow
                  items:
                    type: string
                  example: []
            createdAt:
              type: string
              description: Alternative timestamp format
              example: 2023-03-14 12:50:27+0000
          additionalProperties: true
    SumsubFraudNetworkBaseEvent:
      type: object
      description: |
        Base schema for Sumsub fraud network events.
      required:
        - type
        - correlationId
        - sandboxMode
        - networkId
        - createdAtMs
      properties:
        type:
          type: string
          description: Event type identifier
        correlationId:
          type: string
          description: Unique identifier for the request
          example: da9564f4437c9fcd059f99e0b94fa04d
        sandboxMode:
          type: boolean
          description: Indicates if the event was triggered in sandbox mode
          example: false
        networkId:
          type: string
          description: Identifier for the fraud network that was detected
          example: 6447b124728bf40939aa664f
        createdAtMs:
          type: string
          description: Millisecond-precision timestamp
          example: '2023-08-30 09:59:52.864'
      additionalProperties: true
    SumsubFraudNetworkModifiedEvent:
      type: object
      description: |
        Schema for applicantFraudNetworkModified event. This event is triggered when an applicant is added or modified in a fraud network.
      allOf:
        - $ref: '#/components/schemas/SumsubFraudNetworkBaseEvent'
        - type: object
          required:
            - applicantId
            - applicantType
            - externalUserId
          properties:
            type:
              type: string
              description: Event type identifier
            applicantId:
              type: string
              description: Sumsub internal applicant ID
              example: 6527f43421031b3dec978570
            applicantType:
              $ref: '#/components/schemas/SumsubApplicantType'
            externalUserId:
              type: string
              description: JET internal identifier for the user
              example: level-7781849b-229a-4a62-a3f6-7880d5b627ac
          additionalProperties: true
    SumsubKytCaseBaseEvent:
      type: object
      description: |
        Base schema for Sumsub Know Your Transaction (KYT) case events. KYT cases represent transaction monitoring instances for compliance and fraud detection.
      required:
        - type
        - applicantId
        - correlationId
        - sandboxMode
        - reviewStatus
        - createdAt
        - createdAtMs
        - kytCaseId
      properties:
        type:
          type: string
          description: Event type identifier
        applicantId:
          type: string
          description: Sumsub internal applicant ID
          example: 670f85df0578a72bf1131856
        correlationId:
          type: string
          description: Unique identifier for the request
          example: da9564f4437c9fcd059f99e0b94fa04d
        sandboxMode:
          type: boolean
          description: Indicates if the event was triggered in sandbox mode
          example: true
        reviewStatus:
          $ref: '#/components/schemas/SumsubReviewStatus'
        createdAt:
          type: string
          description: Timestamp with timezone
          example: 2024-11-18 10:49:47+0000
        createdAtMs:
          type: string
          description: Millisecond-precision timestamp
          example: '2024-11-18 10:49:47.918'
        kytCaseId:
          type: string
          description: KYT case identifier
          example: 670f85e00578a72bf113189d
      additionalProperties: true
    SumsubKytCaseReviewResultEvent:
      type: object
      description: |
        Schema for Know Your Transaction (KYT) case events with review results.
      allOf:
        - $ref: '#/components/schemas/SumsubKytCaseBaseEvent'
        - type: object
          required:
            - reviewResult
          properties:
            type:
              type: string
              description: Event type identifier
            reviewResult:
              type: object
              required:
                - reviewAnswer
              properties:
                reviewAnswer:
                  $ref: '#/components/schemas/SumsubReviewAnswer'
                reviewRejectType:
                  $ref: '#/components/schemas/SumsubReviewRejectType'
              additionalProperties: true
          additionalProperties: true
    SumsubKytTxnBaseEvent:
      type: object
      description: |
        Base schema for KYT transaction events.
      required:
        - type
        - applicantType
        - sandboxMode
        - externalUserId
        - reviewStatus
        - createdAt
        - createdAtMs
        - clientId
        - kytTxnId
        - kytDataTxnId
        - kytTxnType
      properties:
        type:
          type: string
          description: Event type identifier
        applicantType:
          $ref: '#/components/schemas/SumsubApplicantType'
        sandboxMode:
          type: boolean
          description: Indicates if the event was triggered in sandbox mode
          example: false
        externalUserId:
          type: string
          description: JET internal identifier for the user
          example: customExternalUserId
        reviewStatus:
          $ref: '#/components/schemas/SumsubReviewStatus'
        createdAt:
          type: string
          description: Timestamp with timezone
          example: 2025-11-17 17:26:49+0000
        createdAtMs:
          type: string
          description: Millisecond-precision timestamp
          example: '2025-11-17 17:26:49.676'
        clientId:
          type: string
          description: Client identifier
          example: coolClientId
        kytTxnId:
          type: string
          description: KYT transaction identifier
          example: 691b5ad93f7d5f23100611ca
        kytDataTxnId:
          type: string
          description: KYT data transaction identifier
          example: 9682adb6-b2cc-429c-acae-f36312c34a95
        kytTxnType:
          type: string
          description: Type of KYT transaction
          example: travelRule
      additionalProperties: true
    SumsubKytTxnFullEvent:
      type: object
      description: |
        Schema for full KYT transaction events with applicant information.
      allOf:
        - $ref: '#/components/schemas/SumsubKytTxnBaseEvent'
        - type: object
          required:
            - applicantId
            - correlationId
          properties:
            type:
              type: string
              description: Event type identifier
            applicantId:
              type: string
              description: Sumsub internal applicant ID
              example: 634829375766b80001a40152
            correlationId:
              type: string
              description: Unique identifier for the request
              example: 0f5a7c828bab750775564534fc0470a8
          additionalProperties: true
    SumsubKytTxnReviewResultEvent:
      type: object
      description: |
        Schema for full KYT transaction events with review results.
      allOf:
        - $ref: '#/components/schemas/SumsubKytTxnBaseEvent'
        - type: object
          required:
            - applicantId
            - correlationId
            - reviewResult
          properties:
            type:
              type: string
              description: Event type identifier
            applicantId:
              type: string
              description: Sumsub internal applicant ID
              example: 634829375766b80001a40152
            correlationId:
              type: string
              description: Unique identifier for the request
              example: f24f6616020245053139a6537303a251
            reviewResult:
              type: object
              required:
                - reviewAnswer
              properties:
                reviewAnswer:
                  $ref: '#/components/schemas/SumsubReviewAnswer'
                reviewRejectType:
                  $ref: '#/components/schemas/SumsubReviewRejectType'
              additionalProperties: true
          additionalProperties: true
    SumsubReviewAnswer:
      type: string
      enum:
        - GREEN
        - RED
        - YELLOW
        - ERROR
        - IGNORED
    SumsubReviewRejectType:
      type: string
      enum:
        - FINAL
        - RETRYABLE
        - RETRY
    SumsubReviewResultFinal:
      type: object
      required:
        - reviewAnswer
        - reviewRejectType
        - moderationComment
      properties:
        reviewAnswer:
          type: string
          enum:
            - RED
        reviewRejectType:
          type: string
          enum:
            - FINAL
        moderationComment:
          type: string
        clientComment:
          type: string
        rejectLabels:
          type: array
          items:
            type: string
        buttonIds:
          type: array
          items:
            type: string
      additionalProperties: false
    SumsubReviewResultRetry:
      type: object
      required:
        - reviewAnswer
        - reviewRejectType
        - moderationComment
        - rejectLabels
      properties:
        reviewAnswer:
          type: string
          enum:
            - RED
        reviewRejectType:
          type: string
          enum:
            - RETRY
        moderationComment:
          type: string
        clientComment:
          type: string
        rejectLabels:
          type: array
          items:
            type: string
        buttonIds:
          type: array
          items:
            type: string
      additionalProperties: false
    SumsubReviewResultSuccess:
      type: object
      required:
        - reviewAnswer
      properties:
        reviewAnswer:
          type: string
          enum:
            - GREEN
    SumsubReviewStatus:
      type: string
      description: The high-level status of the review.
      enum:
        - init
        - pending
        - prechecked
        - queued
        - completed
        - onHold
        - awaitingUser
        - awaitingService
    SumsubSumsubBaseWebhookRequest:
      type: object
      description: |
        Universal Sumsub Webhook Schema for all event types.

        Known Event Types:
        - Applicant Lifecycle, Results, Actions
        - Video Identification
        - KYT/AML
        - Fraud Network
      discriminator:
        propertyName: type
        mapping:
          applicantReviewed: '#/components/schemas/SumsubApplicantReviewedEvent'
          applicantCreated: '#/components/schemas/SumsubApplicantBaseEvent'
          applicantPending: '#/components/schemas/SumsubApplicantTypedEvent'
          applicantActivated: '#/components/schemas/SumsubApplicantTypedEvent'
          applicantDeactivated: '#/components/schemas/SumsubApplicantTypedEvent'
          applicantDeleted: '#/components/schemas/SumsubApplicantTypedEvent'
          applicantLevelChanged: '#/components/schemas/SumsubApplicantTypedEvent'
          applicantPrechecked: '#/components/schemas/SumsubApplicantTypedEvent'
          applicantPersonalInfoChanged: '#/components/schemas/SumsubApplicantReviewResultEvent'
          applicantTagsChanged: '#/components/schemas/SumsubApplicantReviewResultEvent'
          applicantReset: '#/components/schemas/SumsubApplicantReviewResultEvent'
          applicantOnHold: '#/components/schemas/SumsubApplicantReviewResultEvent'
          applicantAwaitingUser: '#/components/schemas/SumsubApplicantReviewResultEvent'
          applicantAwaitingService: '#/components/schemas/SumsubApplicantReviewResultEvent'
          applicantWorkflowCompleted: '#/components/schemas/SumsubApplicantWorkflowEvent'
          applicantWorkflowFailed: '#/components/schemas/SumsubApplicantWorkflowEvent'
          applicantActionPending: '#/components/schemas/SumsubActionBaseEvent'
          applicantActionOnHold: '#/components/schemas/SumsubActionBaseEvent'
          applicantActionReviewed: '#/components/schemas/SumsubActionResultEvent'
          videoIdentStatusChanged: '#/components/schemas/SumsubVideoIdentStatusChangedEvent'
          videoIdentCompositionCompleted: '#/components/schemas/SumsubVideoIdentCompositionCompletedEvent'
          applicantFraudNetworkCreated: '#/components/schemas/SumsubFraudNetworkBaseEvent'
          applicantFraudNetworkModified: '#/components/schemas/SumsubFraudNetworkModifiedEvent'
          kytCaseCreated: '#/components/schemas/SumsubKytCaseBaseEvent'
          kytCaseStatusChanged: '#/components/schemas/SumsubKytCaseReviewResultEvent'
          kytCaseReviewed: '#/components/schemas/SumsubKytCaseReviewResultEvent'
          amlCaseApproved: '#/components/schemas/SumsubAmlCaseEvent'
          amlCaseRejected: '#/components/schemas/SumsubAmlCaseEvent'
          amlCaseOnHold: '#/components/schemas/SumsubAmlCaseEvent'
          applicantKytTxnCreated: '#/components/schemas/SumsubKytTxnBaseEvent'
          applicantKytTxnDeleted: '#/components/schemas/SumsubKytTxnFullEvent'
          applicantKytOnHold: '#/components/schemas/SumsubKytTxnFullEvent'
          applicantKytTxnAwaitingUser: '#/components/schemas/SumsubKytTxnFullEvent'
          applicantKytTxnApproved: '#/components/schemas/SumsubKytTxnReviewResultEvent'
          applicantKytTxnRejected: '#/components/schemas/SumsubKytTxnReviewResultEvent'
          applicantKytTxnReviewed: '#/components/schemas/SumsubKytTxnReviewResultEvent'
          applicantKytTxnDataChanged: '#/components/schemas/SumsubKytTxnReviewResultEvent'
      oneOf:
        - $ref: '#/components/schemas/SumsubApplicantReviewedEvent'
        - $ref: '#/components/schemas/SumsubApplicantBaseEvent'
        - $ref: '#/components/schemas/SumsubApplicantTypedEvent'
        - $ref: '#/components/schemas/SumsubApplicantReviewResultEvent'
        - $ref: '#/components/schemas/SumsubApplicantWorkflowEvent'
        - $ref: '#/components/schemas/SumsubActionBaseEvent'
        - $ref: '#/components/schemas/SumsubActionResultEvent'
        - $ref: '#/components/schemas/SumsubFraudNetworkBaseEvent'
        - $ref: '#/components/schemas/SumsubFraudNetworkModifiedEvent'
        - $ref: '#/components/schemas/SumsubVideoIdentStatusChangedEvent'
        - $ref: '#/components/schemas/SumsubVideoIdentCompositionCompletedEvent'
        - $ref: '#/components/schemas/SumsubKytCaseBaseEvent'
        - $ref: '#/components/schemas/SumsubKytCaseReviewResultEvent'
        - $ref: '#/components/schemas/SumsubAmlCaseEvent'
        - $ref: '#/components/schemas/SumsubKytTxnBaseEvent'
        - $ref: '#/components/schemas/SumsubKytTxnFullEvent'
        - $ref: '#/components/schemas/SumsubKytTxnReviewResultEvent'
    SumsubVideoIdentCompositionCompletedEvent:
      description: Webhook payload for video identification composition completion
      allOf:
        - $ref: '#/components/schemas/SumsubVideoIdentEvent'
        - type: object
          required:
            - compositionMediaId
          properties:
            compositionMediaId:
              type: string
              description: The media ID of the completed video composition/recording
              example: 596928690a975a137
            reviewResult:
              type: object
              required:
                - reviewAnswer
              properties:
                reviewAnswer:
                  $ref: '#/components/schemas/SumsubReviewAnswer'
          additionalProperties: true
    SumsubVideoIdentEvent:
      description: Webhook payload for video identification events (video call verification).
      allOf:
        - type: object
          required:
            - type
            - applicantId
            - inspectionId
            - correlationId
            - levelName
            - reviewStatus
            - createdAtMs
            - clientId
          properties:
            type:
              type: string
              description: The video identification event type.
              example: videoIdentStatusChanged
            applicantId:
              type: string
              description: The ID of the applicant.
              example: 5f8993f93324610009e5885e
            inspectionId:
              type: string
              description: The inspection ID.
              example: 5f8993f93324610009e5885f
            correlationId:
              type: string
              description: A unique identifier for the request, useful for log tracing between your system and Sumsub.
              example: req-63f92830-4d68-4eee-98d5-875d53a12258
            levelName:
              type: string
              description: The verification level.
              example: kyc_video
            reviewStatus:
              $ref: '#/components/schemas/SumsubReviewStatus'
            clientId:
              type: string
              description: JET Sumsub client identifier.
              example: jetClientId
            createdAtMs:
              type: string
              description: The millisecond-precision timestamp. This is usually easier to parse into Date objects.
              example: '2024-02-11 10:00:00.238'
          additionalProperties: true
    SumsubVideoIdentStatusChangedEvent:
      description: Webhook payload for video identification status changes
      allOf:
        - $ref: '#/components/schemas/SumsubVideoIdentEvent'
        - type: object
          properties:
            videoIdentReviewStatus:
              type: string
              description: The status of the video identification review
              example: pending
            applicantType:
              type: string
              description: The type of applicant
              example: individual
            externalUserId:
              type: string
              description: External user identifier
              example: flow-feb1f7ad-b2e2-479a-a4d5-bca5486f7b85
          additionalProperties: true
    TagsRequestAssociatePartnerWithTag:
      additionalProperties: false
      properties:
        tags:
          nullable: false
          description: A collection representing the tags that should be assigned to the partner.
          type: array
          items:
            type: string
            description: A globally unique identifier for a tag.
      type: object
      description: Associate a partner with a set of tags
      example:
        tags:
          - 01HAM1GP8BNATV66TQRTK3B582
          - 01H9P4YQ203FT729N406QFP5TS
    TagsRequestCreateTag:
      properties:
        type:
          nullable: false
          description: The taxonomy that the tag belongs to.
          type: string
          enum:
            - cuisine
            - vertical
        name:
          nullable: false
          description: A human readable name of the tag.
          type: string
        tenants:
          nullable: true
          description: The tenants that the tag will be available in. Represented as a list of IE 2-letter lowercase codes each representing a market.
          type: array
          items:
            $ref: '#/components/schemas/SharedTenant'
      type: object
      description: A request to add tag.
      required:
        - type
        - name
      additionalProperties: false
      example:
        type: cuisine
        name: Pizza
        tenants:
          - uk
          - nl
    TagsResponsePartnerAssociatedTags:
      additionalProperties: false
      properties:
        tags:
          items:
            $ref: '#/components/schemas/TagsResponsePartnerTagDefinitionItem'
          type: array
          description: Get tag definition list
      type: object
      description: Get tag definition list
      example:
        tags:
          - id: 01HAM1GP8BNATV66TQRTK3B582
            name: Pizza
            type: cuisine
            slug: pizza
    TagsResponsePartnerTagDefinitionItem:
      additionalProperties: false
      properties:
        id:
          nullable: false
          description: A globally unique identifier for the tag.
          type: string
        type:
          nullable: false
          description: The taxonomy that the tag belongs to.
          type: string
          enum:
            - cuisine
            - vertical
        name:
          nullable: false
          description: A human readable name of the tag.
          type: string
        slug:
          nullable: false
          description: A URL safe version of the tag name.
          type: string
      type: object
      description: Response body of tag definition
      example:
        id: 01HAM1GP8BNATV66TQRTK3B582
        type: cuisine
        name: Pizza
        slug: pizza
    TagsResponseTagDefinitionItem:
      additionalProperties: false
      properties:
        id:
          nullable: false
          description: A globally unique identifier for the tag.
          type: string
        type:
          nullable: false
          description: The taxonomy that the tag belongs to.
          type: string
          enum:
            - cuisine
            - vertical
        name:
          nullable: false
          description: A human readable name of the tag.
          type: string
        supportedTenants:
          nullable: false
          description: The markets where the tag can be used. Represented as a list of IE 2-letter lowercase codes each representing a market.
          type: array
          items:
            $ref: '#/components/schemas/SharedTenant'
        slug:
          nullable: false
          type: string
          description: A URL safe version of the tag name.
      type: object
      description: Response body of tag definition
      example:
        id: 01HAM1GP8BNATV66TQRTK3B582
        type: cuisine
        name: Pizza
        supportedTenants:
          - de
          - nl
        slug: pizza
    TagsResponseTagDefinitions:
      additionalProperties: false
      properties:
        tags:
          items:
            $ref: '#/components/schemas/TagsResponseTagDefinitionItem'
          type: array
          description: Tag definition list
        paging:
          description: Consists of pagination information
          type: object
          properties:
            count:
              description: The total number of results
              format: int64
              type: integer
      type: object
      description: Tag definition list
      example:
        tags:
          - id: 01HAM1GP8BNATV66TQRTK3B582
            name: Pizza
            type: cuisine
            supportedTenants:
              - de
              - nl
            slug: pizza
        paging:
          count: 50
    TakeawayErrorTakeaway400ErrorResponse:
      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:
          description: Validation error messages for each field.
          additionalProperties:
            description: Field name that contains error.
            properties:
              errors:
                items:
                  type: string
                description: Error explanation.
                type: array
            type: object
          type: object
      type: object
    TakeawayErrorTakeaway4XxErrorResponse:
      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
    TakeawayErrorTakeaway500ErrorResponse:
      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
    TakeawaypayEmployees:
      properties:
        id:
          description: User id
          type: string
        firstName:
          description: User first name
          type: string
        lastName:
          description: User last name
          type: string
        email:
          description: User email
          type: string
        phone:
          description: User phone number
          type: string
        countryCode:
          description: User country code
          type: string
        paymentToken:
          description: Token for action
          type: string
        lastUpdated:
          description: Datetime of the last operation
          format: date-time
          type: string
      type: object
    TakeawaypayTakeawayPayAccountLinkingUpdateRequest:
      description: Request to link Takeaway Pay employee with JE account.
      properties:
        consumer:
          nullable: true
          description: Details of the consumer account to be linked with Takeaway Pay employee account.
          properties:
            id:
              type: string
              description: Id of the consumer.
              nullable: true
          type: object
      type: object
    TakeawaypayTakeawayPayEmployeeResponse:
      description: Details of a Takeaway Pay employee.
      properties:
        available:
          description: Account linking available.
          type: boolean
      type: object
    TakeawaypayTakeawayPayNotificationModel:
      description: Information about Takeaway Pay users activation.
      properties:
        actionTime:
          description: Datetime of action.
          format: date-time
          type: string
        employees:
          description: List of employees for applying action.
          items:
            $ref: '#/components/schemas/TakeawaypayEmployees'
          type: array
        employeeIds:
          description: List of employee ids for applying action.
          items:
            type: string
          type: array
      type: object
    TakeawaypayTakeawayPayNotificationTypes:
      enum:
        - upsert
        - activation
        - deactivation
      type: string
    TimeoffapiAbsence:
      description: A courier absence record
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the absence
          example: 507f1f77bcf86cd799439011
        region:
          type: string
          description: The region this absence belongs to
          example: de:berlin
        courierId:
          type: string
          description: The Scoober ID of the courier
        status:
          type: string
          description: Current status of the absence request
          enum:
            - approved
            - pending
            - declined
        from:
          type: string
          format: date-time
          description: Start date and time of the absence
        to:
          type: string
          format: date-time
          description: End date and time of the absence
        category:
          type: string
          nullable: true
          description: The category of absence `vacation`, `sick`, `free`, `otherHourlyLeaves`, or `otherDailyLeaves`
        reason:
          type: string
          nullable: true
          description: Optional reason provided for the absence
        courierComments:
          type: array
          nullable: true
          description: List of courier comments on this absence
          items:
            $ref: '#/components/schemas/TimeoffapiAbsenceComment'
        processedAt:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the absence was processed
        createdAt:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the absence was created
        updatedAt:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the absence was last updated
        courier:
          $ref: '#/components/schemas/TimeoffapiAbsenceCourier'
      required:
        - id
        - region
        - courierId
        - status
        - from
        - to
    TimeoffapiAbsenceComment:
      description: A comment on an absence left by a courier
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the comment
          example: 507f1f77bcf86cd799439012
        message:
          type: string
          description: The content of the comment
        createdAt:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the comment was created
        updatedAt:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the comment was last updated
        createdBy:
          type: string
          nullable: true
          description: Identifier of the user who created the comment
        updatedBy:
          type: string
          nullable: true
          description: Identifier of the user who last updated the comment
      required:
        - id
        - message
    TimeoffapiAbsenceCourier:
      description: Courier information associated with an absence
      type: object
      properties:
        id:
          type: string
          description: The courier's Scoober ID
        firstName:
          type: string
          description: The courier's first name
        lastName:
          type: string
          description: The courier's last name
        region:
          type: string
          description: The region the courier belongs to
        timeZone:
          type: string
          nullable: true
          description: The courier's timezone (IANA format)
          example: Europe/Berlin
        language:
          type: string
          description: The courier's preferred language
      required:
        - id
        - firstName
        - lastName
        - region
        - language
    TimeoffapiCourierExternal:
      description: Courier profile information returned for the authenticated courier
      type: object
      properties:
        id:
          type: string
          description: The courier's Scoober ID
        firstName:
          type: string
          description: The courier's first name
        lastName:
          type: string
          description: The courier's last name
        region:
          type: string
          description: The region the courier belongs to
        timeZone:
          type: string
          nullable: true
          description: The courier's timezone (IANA format)
          example: Europe/Berlin
        language:
          type: string
          description: The courier's preferred language
      required:
        - id
        - firstName
        - lastName
        - region
        - language
    TimeoffapiCreateAbsenceRequest:
      description: Request body for creating a courier absence
      type: object
      properties:
        from:
          type: string
          format: date-time
          description: Start date and time of the absence (ISO 8601)
          example: '2024-07-01T08:00:00Z'
        to:
          type: string
          format: date-time
          description: End date and time of the absence (ISO 8601)
          example: '2024-07-05T17:00:00Z'
        category:
          type: string
          description: The category of absence being requested `vacation`, `sick`, `free`, `otherHourlyLeaves`, or `otherDailyLeaves`
          example: vacation
        courierComment:
          type: string
          description: Optional comment to attach when creating the absence
          example: Looking forward to my vacation!
      required:
        - from
        - to
        - category
    TimeoffapiPagedAbsencesResponse:
      description: Paginated list of courier absences
      type: object
      properties:
        records:
          type: array
          description: List of absence records for the current page
          items:
            $ref: '#/components/schemas/TimeoffapiAbsence'
        totalRecords:
          type: integer
          format: int32
          description: Total number of absence records matching the query
        totalPages:
          type: integer
          format: int32
          description: Total number of pages available
        currentPage:
          type: integer
          format: int32
          description: The current page number
      required:
        - records
        - totalRecords
        - totalPages
        - currentPage
    TimeoffapiUpdateAbsenceRequest:
      description: Request body for updating a courier absence
      type: object
      properties:
        from:
          type: string
          format: date-time
          description: Updated start date and time of the absence (ISO 8601)
          example: '2024-07-01T08:00:00Z'
        to:
          type: string
          format: date-time
          description: Updated end date and time of the absence (ISO 8601)
          example: '2024-07-05T17:00:00Z'
        category:
          type: string
          description: Updated category of absence being requested `vacation`, `sick`, `free`, `otherHourlyLeaves`, or `otherDailyLeaves`
          example: vacation
      required:
        - from
        - to
        - category
    TimeoffapiUpdateCourierCommentRequest:
      description: Request body for updating a courier comment on an absence
      type: object
      properties:
        message:
          type: string
          description: The updated comment message
      required:
        - message
    TkwycouriernotificationserviceAppIdEnum:
      description: Enumeration of application identifiers.
      type: string
      enum:
        - SCOOBER
        - TAKEAWAY_COURIER
        - MCA
        - MCP
    TkwycouriernotificationserviceLocale:
      type: object
      properties:
        language:
          type: string
        script:
          type: string
        country:
          type: string
        variant:
          type: string
        extensionKeys:
          type: array
          uniqueItems: true
          items:
            type: string
            format: char
        unicodeLocaleAttributes:
          type: array
          uniqueItems: true
          items:
            type: string
        unicodeLocaleKeys:
          type: array
          uniqueItems: true
          items:
            type: string
        iSO3Language:
          type: string
        iSO3Country:
          type: string
        displayLanguage:
          type: string
        displayScript:
          type: string
        displayCountry:
          type: string
        displayVariant:
          type: string
        displayName:
          type: string
    TkwycouriernotificationserviceMobileOsEnum:
      description: Enumeration of supported mobile operating systems.
      type: string
      enum:
        - IOS
        - ANDROID
        - WEB
        - TEST
    TkwycouriernotificationserviceSubscriptionRequest:
      type: object
      required:
        - deviceToken
        - mobileOS
        - appIdentifier
        - acceptingNotifications
      properties:
        deviceToken:
          type: string
          description: Firebase client token.
        mobileOS:
          description: Notification client type.
          type: string
          $ref: '#/components/schemas/TkwycouriernotificationserviceMobileOsEnum'
        appIdentifier:
          description: Notification client identifier.
          type: string
          $ref: '#/components/schemas/TkwycouriernotificationserviceAppIdEnum'
        acceptingNotifications:
          type: array
          items:
            type: string
          description: List of accepted notification types.
    TopRankAuctionPartnerInput:
      type: object
      title: AuctionPartnerInput
      description: |-
        Represents a partner input for an auction requests.
        Quality score directly affects auction ranking.
      required:
        - partnerId
      properties:
        partnerId:
          type: string
          description: |-
            The partner ID.
            Must be unique within the slot auction.
          minLength: 1
          maxLength: 255
          example: '12345'
        chain:
          type: string
          description: |-
            Optional. The chain identifier for this partner.
            Used to associate the partner with a specific restaurant chain.
          maxLength: 255
          example: mcdonalds
        qualityScore:
          type: number
          format: double
          description: |-
            Optional. Quality score for this partner (0.1 - 1.0).
            Directly affects the auction rank - higher scores increase win probability.
            If any partner has a quality score, all partners in the auction must have one.
            Requires values greater than or equal to 0.1 and less than or equal to 1.0.
          minimum: 0.1
          maximum: 1
          example: 0.8
    TopRankAuctionPartnerResult:
      type: object
      title: AuctionPartnerResult
      description: |-
        Represents a partner result from the auction.
        Winners are sorted by rank (1 = highest).
      required:
        - partnerId
        - auctionId
        - rank
        - externalCampaignId
      properties:
        partnerId:
          type: string
          description: The partner ID.
          example: '12345'
        auctionId:
          type: string
          description: |-
            TopSort auction ID (resolvedBidId).
            Used for tracking and analytics.
          example: bid_abc123xyz
        rank:
          type: integer
          format: int32
          description: |-
            Rank/position from the auction.
            Lower numbers indicate higher ranking (1 is the winner).
          minimum: 1
          example: 1
        externalCampaignId:
          type: string
          description: |-
            External campaign ID that won the auction.
            Can be used to look up campaign details.
          example: c40e0951-0f4f-4f86-b0a0-fd65e581c844
    TopRankAudienceType:
      type: string
      title: AudienceType
      description: The type of campaign audience
      enum:
        - all
        - newToPartner
    TopRankAutoCompleteAuctionRequest:
      type: object
      title: AutoCompleteAuctionRequest
      description: |-
        Request model for triggering an auction for autocomplete results.
        Timeout: 50ms (returns empty results if exceeded).
      required:
        - partners
      properties:
        partners:
          type: array
          description: |-
            List of partners to include in the autocomplete auction.
            Partners without quality scores will be excluded if ANY partner has a quality score.
            Quality scores are optional. 
            Maximum 3000 partners - excess will be trimmed.
          minItems: 1
          maxItems: 3000
          items:
            $ref: '#/components/schemas/TopRankAuctionPartnerInput'
          example:
            - partnerId: '12345'
              qualityScore: 0.8
            - partnerId: '67890'
              qualityScore: 0.9
        postcode:
          type: string
          description: |-
            Customer's postcode without spaces (e.g., "BS1" or "SW1A1AA").
            Used for location-based campaign filtering.
            Optional - can be omitted if location targeting is not needed.
          example: SW1A1AA
        categories:
          type: array
          description: |-
            List of category keywords for autocomplete matching.
            Used for keyword-based campaign matching.
            Optional - can be omitted if category targeting is not needed.
          items:
            type: string
          example:
            - fish
            - burger
    TopRankAutoCompleteAuctionResponse:
      type: object
      title: AutoCompleteAuctionResponse
      description: |-
        Response from triggering an autocomplete auction.
        Returns the auction winners with their rankings.
      required:
        - boostedPartners
      properties:
        boostedPartners:
          type: array
          description: |-
            List of auction winners sorted by rank.
            Maximum 1 winner (configured for TextSearchAutoComplete slot type).
          items:
            $ref: '#/components/schemas/TopRankAuctionPartnerResult'
          example:
            - partnerId: '67890'
              auctionId: bid_abc123
              rank: 1
              externalCampaignId: c40e0951-0f4f-4f86-b0a0-fd65e581c844
    TopRankBidStrategy:
      type: string
      title: BidStrategy
      description: The type of campaign bidding strategy
      enum:
        - autoBid
        - manualBid
    TopRankBoostedPartner:
      required:
        - partnerId
        - boost
        - campaignId
      properties:
        partnerId:
          type: string
          description: Id of the partner.
        boost:
          type: number
          format: decimal
          description: |-
            Normalised boost associated to the partner.
            Will be 0 if there is no active campaign.
          minimum: 0
          maximum: 1
        campaignId:
          type: string
          description: The campaign id associated to the boost.
          nullable: true
      example:
        partnerId: '123123'
        boost: 0.7
        campaignId: 4175118e-50df-4f11-96d2-bf4720b47d6d
      type: object
    TopRankBudgetType:
      type: string
      title: BudgetType
      description: The type of campaign budget
      enum:
        - daily
        - weekly
        - monthly
        - total
    TopRankBulkCreateTopRankCampaignsRequest:
      type: object
      title: BulkCreateTopRankCampaignsRequest
      description: A bulk operation request to create new top-rank campaigns provided in CSV file.
      required:
        - file
      properties:
        hqDealId:
          type: string
          nullable: true
          description: Optional HQ Deal ID applied to every campaign in this upload. Batch-level — one value for the whole request, not a per-row CSV column. Opaque (a GUID). When supplied, every row must belong to the deal's chain (HQ08); a mismatch rejects the whole upload with a 400 and no partial job is written.
        file:
          type: string
          format: binary
          description: The CSV file to be uploaded for processing.
          example: |-
            partnerId,deliveryAreas,costPerOrder,timeSlots,daysOfWeek,skipEmail,discountPercentage,discountStartTime,discountEndTime,discountReason
            1234,"Area1,Area2",50,"breakfast,dinner","monday,tuesday,wednesday",true,20.0,2025-05-16T12:30:00.0000000Z,2025-05-16T20:00:00.0000000Z,fixedTotalAmount
            5678,"Area3,Area4",60,"lunch,early-hours","sunday",false,42.0,2025-05-16T12:30:00.0000000Z,2025-05-16T20:00:00.0000000Z,specialPromotion
            9012,"Area5",70,"all-day","friday",,113.0,2025-05-16T12:30:00.0000000Z,2025-05-16T20:00:00.0000000Z,freeOfCostCampaign
    TopRankBulkRemoveTopRankCampaignsRequest:
      type: object
      title: BulkRemoveTopRankCampaignsRequest
      description: A bulk operation request to remove the top-ranked campaigns provided in CSV file.
      required:
        - file
      properties:
        file:
          type: string
          format: binary
          description: The CSV file to be uploaded for processing.
          example: |-
            partnerId,deliveryArea,campaignIds,skipEmail,
            1234,Area1,9876,false
            5678,Area3,"5432,1098",true
            9012,Area5,1098,
    TopRankCampaignState:
      type: string
      title: CampaignState
      description: The lifecycle state of a campaign, derived from its scheduling dates at read time.
      enum:
        - scheduled
        - active
        - ended
    TopRankCreateTopRankCampaignsRequest:
      type: object
      title: CreateTopRankCampaignsRequest
      description: The request to create new campaigns for a given partner.
      required:
        - costPerOrder
        - deliveryAreas
        - timeSlots
        - daysOfWeek
        - userId
        - userType
      properties:
        costPerOrder:
          format: int32
          description: The cost per order in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        deliveryAreas:
          description: The delivery areas that the campaign applies to.
          type: array
          items:
            type: string
          uniqueItems: true
        timeSlots:
          description: The campaign's running time of the day
          type: array
          items:
            $ref: '#/components/schemas/TopRankTimeSlot'
          uniqueItems: true
        daysOfWeek:
          description: The campaign's running days of the week
          type: array
          items:
            $ref: '#/components/schemas/SharedDayOfWeek'
          uniqueItems: true
        userId:
          type: string
          description: The ID related to the user who created this campaign.
        userType:
          $ref: '#/components/schemas/TopRankUserType'
      example:
        costPerOrder: 400
        deliveryAreas:
          - Area 1
        timeSlots:
          - key: lunch
            start: '11:00:00'
            end: '16:00:00'
        daysOfWeek:
          - sunday
        userId: agent1@justeattakeaway.com
        userType: agent
    TopRankCreateTopRankCampaignsV2Request:
      type: object
      title: CreateTopRankCampaignsV2Request
      description: The request to create a new V2 campaign for a given partner.
      required:
        - audienceType
        - budget
        - budgetType
        - bidStrategy
        - deliveryAreas
      properties:
        audienceType:
          $ref: '#/components/schemas/TopRankAudienceType'
        budget:
          format: int32
          description: The total budget for the campaign in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        budgetType:
          $ref: '#/components/schemas/TopRankBudgetType'
        bidStrategy:
          $ref: '#/components/schemas/TopRankBidStrategy'
        bidPrice:
          format: int32
          description: The bid price for the campaign in the smallest unit of local currency (e.g., pence). Required if bidStrategy is manualBid.
          type: integer
          minimum: 0
        v1CampaignId:
          type: string
          description: The ID of the original V1 campaign. Required if this campaign is being created from an existing V1 campaign.
        hqDealId:
          type: string
          nullable: true
          description: Optional HQ Deal ID persisted on the created campaign. Opaque (a GUID). Only supported on v=2 campaigns.
        deliveryAreas:
          description: The delivery areas that the campaign applies to.
          type: array
          items:
            type: string
          uniqueItems: true
        startDate:
          type: string
          format: date
          description: The date on which the campaign is scheduled to start, in YYYY-MM-DD format. Must be a future date. If omitted, the campaign starts immediately. Only supported on v=2 campaigns.
        endDate:
          type: string
          format: date
          description: The date on which the campaign is scheduled to end, in YYYY-MM-DD format. Must be a future date. If omitted, the campaign runs indefinitely. Only supported on v=2 campaigns.
        timezone:
          type: string
          description: IANA timezone identifier used to interpret startDate and endDate (e.g. "Europe/London"). If omitted, defaults to the timezone of the tenant. Only supported on v=2 campaigns.
      example:
        audienceType: all
        budget: 10000
        budgetType: total
        bidStrategy: manualBid
        bidPrice: 100
        deliveryAreas:
          - Area 1
        startDate: '2026-07-01'
        endDate: '2026-07-31'
        timezone: Europe/London
    TopRankPartnerBoostRequest:
      type: object
      required:
        - partnerIds
        - postalCode
      properties:
        partnerIds:
          items:
            type: string
          description: List of partner ids to be boosted.
          minItems: 1
          type: array
        postalCode:
          type: string
          description: Country agnostic postal code of the request location.
      example:
        partnerIds:
          - '123123'
          - '456456'
          - '789789'
        postalCode: BALLYGALL
    TopRankPartnerBoostResponse:
      type: object
      required:
        - boostedPartners
      properties:
        boostedPartners:
          type: array
          description: A list of partners with their campaigns and normalised boost.
          items:
            $ref: '#/components/schemas/TopRankBoostedPartner'
      example:
        boostedPartners:
          - partnerId: '123123'
            boost: 0.7
            campaignId: 4175118e-50df-4f11-96d2-bf4720b47d6d
          - partnerId: '678910'
            boost: 0.5
            campaignId: 6d9a2599-c542-461e-9e14-82f6eb8088e6
          - partnerId: '111111'
            boost: 0
            campaignId: null
    TopRankPartnerCampaignsPaginationResponse:
      type: object
      title: PartnerCampaignsPaginationResponse
      description: Response of partner top rank campaigns
      additionalProperties: false
      required:
        - data
      properties:
        paging:
          nullable: true
          $ref: '#/components/schemas/PagingAfterCursor'
        data:
          nullable: false
          description: Collection of partner's running top rank campaigns
          type: array
          items:
            $ref: '#/components/schemas/TopRankTopRankCampaign'
    TopRankProcessChargeRequest:
      type: object
      title: ProcessChargeRequest
      description: Request sent by the billing service to stop a vendor's active credit-only campaigns after the credit wallet balance reaches zero. The balance decrement is performed by the caller before invoking this endpoint.
      required:
        - walletId
      properties:
        walletId:
          type: string
          minLength: 1
          description: The TopSort wallet ID that was charged, sourced from the wallet ID field in the charge event metadata.
          example: 8a2d9ca9-2280-4e32-97d5-ff682cab214c
      example:
        walletId: 8a2d9ca9-2280-4e32-97d5-ff682cab214c
    TopRankSlotAuctionRequest:
      type: object
      title: SlotAuctionRequest
      description: |-
        Represents a single slot auction with its partners.
        Each auction runs independently and returns results under the specified auctionKey.
      required:
        - auctionKey
        - partners
      properties:
        auctionKey:
          type: string
          description: |-
            Unique key to identify this auction in the response.
            Can be any string (e.g., carousel name like "TopPicks_Localised").
            Must be unique within the request.
          minLength: 1
          maxLength: 500
          example: TopPicks_Localised
        slotType:
          type: string
          enum:
            - TextSearchResults
            - SERP
            - TextSearchAutoComplete
            - Carousel
            - Vertical
          description: |-
            The slot type for this auction.
            Maps to number of auction winners via internal configuration.
            Defaults to "Carousel" if not provided.
          example: Carousel
        searchQuery:
          type: string
          description: |-
            The user's search query text, used for keyword-based campaign matching.
            Applicable to any slot type where search context is relevant.
            Optional - omit for non-search contexts such as carousels.
          example: pizza
        categories:
          type: array
          items:
            type: string
          description: |-
            List of category tags for category-based campaign matching.
            Only applicable when slotType is TextSearchAutoComplete.
            Each category is a free-form string, typically in "namespace:value" format (e.g., "cuisine:pizza", "category:fast-food").
            Optional - omit if category targeting is not needed.
          example:
            - cuisine:pizza
            - category:fast-food
        partners:
          type: array
          description: |-
            List of partners to include in the auction for this slot.
            Partners without quality scores will be excluded if ANY partner has a quality score.
            Quality scores are optional.
            Maximum 3000 partners per slot - excess will be trimmed.
            Partner IDs must be unique within the slot.
          minItems: 1
          maxItems: 3000
          items:
            $ref: '#/components/schemas/TopRankAuctionPartnerInput'
    TopRankTenantAddon:
      type: object
      title: TenantAddon
      description: An optional boost that can be applied to campaigns in the tenant.
      required:
        - type
        - additionalFee
      properties:
        type:
          description: The boost type.
          type: string
          enum:
            - none
            - premiumBoost
        additionalFee:
          description: The additional fee for the boost in the smallest unit of local currency (e.g. pence).
          type: integer
          format: int32
        adjustmentAmount:
          description: The adjustment applied to the boost fee, when present.
          type: integer
          format: int32
          nullable: true
        adjustmentReason:
          description: The reason for the fee adjustment, when present.
          type: string
          nullable: true
          enum:
            - none
            - maxBidPrice
            - discounted
            - clickSourceNotCarousel
    TopRankTenantAuctionSettings:
      type: object
      title: TenantAuctionSettings
      description: The auction configuration available when creating campaigns in the tenant.
      required:
        - budgetMinimum
        - budgetMaximum
        - budgetDefault
        - bidStrategies
        - audienceTypes
      properties:
        budgetMinimum:
          description: The minimum campaign budget in the smallest unit of local currency (e.g. pence).
          type: integer
          format: int32
          minimum: 0
        budgetMaximum:
          description: The maximum campaign budget in the smallest unit of local currency (e.g. pence).
          type: integer
          format: int32
          minimum: 0
        budgetDefault:
          description: The default campaign budget in the smallest unit of local currency (e.g. pence).
          type: integer
          format: int32
          minimum: 0
        bidStrategies:
          description: The bid strategies available for the tenant.
          type: array
          items:
            $ref: '#/components/schemas/TopRankBidStrategy'
          uniqueItems: true
        audienceTypes:
          description: The audience types available for the tenant.
          type: array
          items:
            $ref: '#/components/schemas/TopRankAudienceType'
          uniqueItems: true
    TopRankTenantCampaignSettings:
      type: object
      title: TenantCampaignSettings
      description: Campaign configuration available when creating campaigns in the tenant.
      required:
        - prices
        - schedule
        - addons
      properties:
        prices:
          $ref: '#/components/schemas/TopRankTenantPrices'
        schedule:
          $ref: '#/components/schemas/TopRankTenantSchedule'
        addons:
          description: The optional boosts available for the tenant.
          type: array
          items:
            $ref: '#/components/schemas/TopRankTenantAddon'
    TopRankTenantPrices:
      type: object
      title: TenantPrices
      description: The configured campaign prices for the tenant.
      required:
        - minimumAllowableFee
        - suggestedDefaultFee
        - maximumAllowableFee
        - suggestedDailyBudget
        - currency
      properties:
        minimumAllowableFee:
          description: The minimum allowable fee per order in the smallest unit of local currency (e.g. pence).
          type: number
          format: decimal
          minimum: 0
        suggestedDefaultFee:
          description: The suggested default fee per order in the smallest unit of local currency (e.g. pence).
          type: number
          format: decimal
          minimum: 0
        maximumAllowableFee:
          description: The maximum allowable fee per order in the smallest unit of local currency (e.g. pence).
          type: number
          format: decimal
          minimum: 0
        suggestedDailyBudget:
          description: The suggested daily budget in the smallest unit of local currency (e.g. pence).
          type: number
          format: decimal
          minimum: 0
        currency:
          description: The ISO currency code for the tenant (e.g. GBP).
          type: string
    TopRankTenantSchedule:
      type: object
      title: TenantSchedule
      description: The available scheduling configuration for the tenant.
      required:
        - startOfWeek
        - daysOfWeek
        - timeslots
      properties:
        startOfWeek:
          description: The first day of the week configured for the tenant.
          type: string
        daysOfWeek:
          description: The days of the week a campaign can run on.
          type: array
          items:
            type: object
            required:
              - key
              - translationKey
            properties:
              key:
                description: The stable identifier for the day.
                type: string
              translationKey:
                description: The translation key used to render the day label.
                type: string
        timeslots:
          description: The time slots a campaign can run within.
          type: array
          items:
            type: object
            required:
              - key
              - translationKey
              - start
              - end
            properties:
              key:
                description: The stable identifier for the time slot.
                type: string
              translationKey:
                description: The translation key used to render the time slot label.
                type: string
              start:
                description: The start time of the slot (e.g. 11:00:00).
                type: string
                example: '11:00:00'
              end:
                description: The end time of the slot (e.g. 16:00:00).
                type: string
                example: '16:00:00'
    TopRankTenantSettingsResponse:
      type: object
      title: TenantSettingsResponse
      description: Tenant-wide top-rank settings that apply across the tenant without a partner context.
      required:
        - campaignSettings
        - campaignStopReasonConstants
        - auctionSettings
        - walletSettings
        - campaignSchedulingEnabled
        - hqDealIdEnabled
      properties:
        campaignSettings:
          $ref: '#/components/schemas/TopRankTenantCampaignSettings'
        campaignStopReasonConstants:
          description: The campaign stop reasons available for the tenant.
          type: array
          items:
            $ref: '#/components/schemas/TopRankTopRankCampaignStopReason'
          uniqueItems: true
        auctionSettings:
          $ref: '#/components/schemas/TopRankTenantAuctionSettings'
        walletSettings:
          $ref: '#/components/schemas/TopRankTenantWalletSettings'
        campaignSchedulingEnabled:
          description: Per-tenant flag telling the frontend whether campaign scheduling is available.
          type: boolean
        hqDealIdEnabled:
          description: Per-tenant flag telling the frontend whether to render the HQ Deal ID feature (the Chain ID section and the batch-level deal selection on the bulk upload page).
          type: boolean
      example:
        campaignSettings:
          prices:
            minimumAllowableFee: 100
            suggestedDefaultFee: 400
            maximumAllowableFee: 1000
            suggestedDailyBudget: 500
            currency: GBP
          schedule:
            startOfWeek: sunday
            daysOfWeek:
              - key: sunday
                translationKey: days.sunday
            timeslots:
              - key: lunch
                translationKey: timeslots.lunch
                start: '11:00:00'
                end: '16:00:00'
          addons:
            - type: premiumBoost
              additionalFee: 50
        campaignStopReasonConstants:
          - notWorthMoney
          - notEnoughOrders
        auctionSettings:
          budgetMinimum: 100
          budgetMaximum: 100000
          budgetDefault: 500
          bidStrategies:
            - autoBid
            - manualBid
          audienceTypes:
            - all
            - newToPartner
        walletSettings:
          creditMinimum: 100
          creditMaximum: 100000
          creditReasons:
            - goodwill
          burnReasons:
            - correction
          walletExpiryEnabled: true
        campaignSchedulingEnabled: true
        hqDealIdEnabled: false
    TopRankTenantWalletSettings:
      type: object
      title: TenantWalletSettings
      description: The wallet configuration available for the tenant.
      required:
        - creditMinimum
        - creditMaximum
        - creditReasons
        - burnReasons
        - walletExpiryEnabled
      properties:
        creditMinimum:
          description: The minimum wallet credit in the smallest unit of local currency (e.g. pence).
          type: integer
          format: int32
          minimum: 0
        creditMaximum:
          description: The maximum wallet credit in the smallest unit of local currency (e.g. pence).
          type: integer
          format: int32
          minimum: 0
        creditReasons:
          description: The reasons available when adding wallet credit.
          type: array
          items:
            type: string
        burnReasons:
          description: The reasons available when removing wallet credit.
          type: array
          items:
            type: string
        walletExpiryEnabled:
          description: Per-tenant flag telling the frontend whether wallet expiry is enabled.
          type: boolean
    TopRankTimeSlot:
      description: The time slot of the day when campaign is running
      additionalProperties: false
      title: TimeSlot
      properties:
        key:
          $ref: '#/components/schemas/TopRankTimeSlotKey'
        start:
          type: string
          format: time
          description: Timestamp when campaign starts during the day
        end:
          type: string
          format: time
          description: Timestamp when campaign ends during the day
      example:
        key: lunch
        start: '11:00:00'
        end: '16:00:00'
    TopRankTimeSlotKey:
      title: TimeSlotKey
      description: |
        The named pre-defined daily slot. The period within a day:
          * `earlyHours` - 00:00 - 7:00
          * `breakfast` - 7:00 - 11:00
          * `lunch` - 11:00 - 16:00
          * `dinner` - 16:00 - 00:00
      type: string
      format: enum
      enum:
        - earlyHours
        - breakfast
        - lunch
        - dinner
    TopRankTopRankCampaign:
      type: object
      additionalProperties: false
      description: An active campaign for a given partner.
      required:
        - campaignId
        - costPerOrder
        - deliveryArea
        - timeSlots
        - daysOfWeek
        - createdAt
      properties:
        campaignId:
          description: The unique identifier of the campaign.
          type: string
        costPerOrder:
          format: int32
          description: The cost per order in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        deliveryArea:
          description: The location that the campaign applies to.
          type: string
        timeSlots:
          description: The campaign's running time of the day
          type: array
          items:
            $ref: '#/components/schemas/TopRankTimeSlot'
          uniqueItems: true
        daysOfWeek:
          description: The campaign's running days of the week
          type: array
          items:
            $ref: '#/components/schemas/SharedDayOfWeek'
          uniqueItems: true
        createdAt:
          format: date-time
          description: The UTC date and time at which the campaign was purchased/activated.
          type: string
      example:
        campaignId: 5d333100-2d05-4690-a2da-6d0c465c5c4c
        costPerOrder: 400
        deliveryArea: Area 1
        timeSlots:
          - key: lunch
            start: '11:00:00'
            end: '16:00:00'
        daysOfWeek:
          - sunday
        createdAt: '2024-08-29T10:35:03.0000000+00:00'
    TopRankTopRankCampaignInsight:
      type: object
      additionalProperties: false
      description: Top Rank Campaign Insights
      required:
        - totalRevenue
        - totalCost
        - noOfOrders
        - noOfViews
        - lastUpdatedTimestamp
      properties:
        totalRevenue:
          description: Total Revenue generated.
          type: number
          format: decimal
        totalCost:
          description: Total cost incurred.
          type: number
          format: decimal
        returnOnInvestment:
          description: Return on investment from totals.
          type: number
          format: decimal
        noOfOrders:
          description: Number of orders received.
          type: integer
          format: int32
          minimum: 0
        noOfViews:
          description: Number of views.
          type: integer
          format: int32
          minimum: 0
        lastUpdatedTimestamp:
          description: The UTC date and time when the insight was last updated.
          format: date-time
          type: string
        totalCredits:
          description: Total amount of credit used.
          type: number
          format: decimal
          nullable: true
      example:
        totalRevenue: 125050
        totalCost: 50025
        returnOnInvestment: 2.49
        noOfOrders: 25
        noOfViews: 1000
        lastUpdatedTimestamp: '2024-08-29T10:35:03.0000000+00:00'
        totalCredits: 10000
    TopRankTopRankCampaignPrices:
      type: object
      title: TopRankCampaignPrices
      description: The configured campaign's prices for the given tenant
      additionalProperties: false
      required:
        - minimumAllowableFee
        - maximumAllowableFee
        - suggestedDefaultFee
      properties:
        minimumAllowableFee:
          type: integer
          format: int32
          minimum: 0
          exclusiveMinimum: true
          description: The minimum allowable fee per order in the smallest unit of local currency (e.g., pence). It will not be possible to set a fee lower than this amount.
        maximumAllowableFee:
          type: integer
          format: int32
          minimum: 0
          exclusiveMinimum: true
          description: The maximum allowable fee per order in the smallest unit of local currency (e.g., pence). It will not be possible to set a fee that exceeds this amount.
        suggestedDefaultFee:
          type: integer
          format: int32
          minimum: 0
          exclusiveMinimum: true
          description: The suggested default fee per order in the smallest unit of local currency (e.g., pence).
      example:
        minimumAllowableFee: 100
        maximumAllowableFee: 1000
        suggestedDefaultFee: 400
    TopRankTopRankCampaignReport:
      type: object
      title: TopRankCampaignReport
      description: The top-rank campaign report which describes the performance of a campaign for partner for a given period.
      required:
        - campaignId
        - deliveryArea
        - startDate
        - costPerOrder
        - totalCost
        - totalRevenue
        - totalOrders
        - roas
        - status
      properties:
        campaignId:
          description: The unique identifier of the campaign.
          type: string
        deliveryArea:
          description: The location that the campaign applies to.
          type: string
        startDate:
          description: The UTC date and time at which the campaign was started.
          type: string
          format: date-time
        endDate:
          description: The UTC date and time at which the campaign was ended. Can be null if campaign is still running.
          type: string
          format: date-time
          nullable: true
        costPerOrder:
          description: The cost per order in the smallest unit of local currency (e.g., pence).
          type: integer
          format: int32
          minimum: 0
        totalCost:
          description: The total campaign cost for partner per report period in the smallest unit of local currency (e.g., pence).
          type: integer
          format: int32
          minimum: 0
        totalRevenue:
          description: The total revenue partner earned per report period within the campaign in the smallest unit of local currency (e.g., pence).
          type: integer
          format: int32
          minimum: 0
        totalOrders:
          description: The total number of orders partner got per report period within the campaign in the smallest unit of local currency (e.g., pence).
          type: integer
          format: int32
          minimum: 0
        roas:
          description: The amount of revenue earned for every unit spent on a campaign per report period within the campaign.
          type: number
          format: decimal
        status:
          description: The status of the campaign.
          type: string
          enum:
            - active
            - ended
        deletedByUserId:
          description: The identifier of the user who deleted the campaign. Null if the campaign has not been deleted.
          type: string
          nullable: true
        deletedByUserType:
          description: The type of user who deleted the campaign (e.g. partner, agent). Null if the campaign has not been deleted.
          nullable: true
          $ref: '#/components/schemas/TopRankUserType'
      example:
        campaignId: 5d333100-2d05-4690-a2da-6d0c465c5c4c
        deliveryArea: Area 1
        startDate: '2024-08-05T10:35:03.0000000+00:00'
        endDate: '2024-08-20T11:45:55.0000000+00:00'
        costPerOrder: 399
        totalCost: 1596
        totalRevenue: 23940
        totalOrders: 4
        roas: 15
        status: ended
    TopRankTopRankCampaignSettings:
      type: object
      title: TopRankCampaignSettings
      description: The top-rank settings which is used to create new campaigns for a given partner.
      required:
        - prices
        - schedule
      properties:
        prices:
          $ref: '#/components/schemas/TopRankTopRankCampaignPrices'
        schedule:
          $ref: '#/components/schemas/TopRankTopRankSchedule'
      example:
        prices:
          minimumAllowableFee: 100
          maximumAllowableFee: 1000
          suggestedDefaultFee: 400
        schedule:
          startOfWeek: sunday
          daysOfWeek:
            - sunday
            - monday
          timeSlots:
            - key: lunch
              start: '11:00:00'
              end: '16:00:00'
    TopRankTopRankCampaignStatus:
      type: string
      title: TopRankCampaignStatus
      description: Filter campaigns by their current activation status.
      enum:
        - active
    TopRankTopRankCampaignStopReason:
      type: string
      title: TopRankCampaignStopReason
      description: The campaign stop reason
      enum:
        - notWorthMoney
        - notEnoughOrders
        - notEnoughInformation
        - notSureHowItWorks
        - temporarilyStopping
        - creditExhausted
    TopRankTopRankCampaignV2:
      type: object
      title: TopRankCampaignV2
      additionalProperties: false
      description: A campaign for a given partner.
      required:
        - campaignId
        - audienceType
        - budget
        - budgetType
        - bidStrategy
        - deliveryArea
        - currency
        - createdAt
        - tenant
        - partnerId
        - isDeleted
        - timezone
      properties:
        campaignId:
          description: The unique identifier of the campaign.
          type: string
        v1CampaignId:
          description: The unique identifier of the corresponding V1 campaign if the campaign was created through migration; otherwise, null.
          type: string
        hqDealId:
          description: The HQ Deal ID the campaign belongs to. Immutable — copied forward from the existing campaign on update; it cannot be set, changed, or cleared via PUT (re-pointing to a different deal is stop + recreate). Opaque (a GUID).
          type: string
          nullable: true
          readOnly: true
        audienceType:
          $ref: '#/components/schemas/TopRankAudienceType'
        budget:
          format: int32
          description: The total budget for the campaign in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        budgetType:
          $ref: '#/components/schemas/TopRankBudgetType'
        bidStrategy:
          $ref: '#/components/schemas/TopRankBidStrategy'
        bidPrice:
          format: int32
          type: integer
          minimum: 0
        roasTarget:
          description: The Return on Ad Spend (ROAS) target for the campaign. e.g. 5.0, 10.0, 15.0, or 20.0.
          type: number
          format: decimal
          nullable: true
        deliveryArea:
          type: string
          description: The delivery area that the campaign applies to.
        currency:
          description: The ISO currency code for the campaign (e.g., "GBP").
          type: string
        createdAt:
          format: date-time
          description: The UTC date and time at which the campaign was purchased/activated.
          type: string
        tenant:
          description: The tenant that the campaign belongs to.
          type: string
        partnerId:
          description: The ID of the partner that the campaign belongs to.
          type: string
        isDeleted:
          description: Indicates whether the campaign has been deleted.
          type: boolean
        startDateTime:
          type: string
          format: date-time
          description: The local date and time at which the campaign is scheduled to start, with UTC offset preserved. Absent if no start date was set.
        endDateTime:
          type: string
          format: date-time
          description: The local date and time at which the campaign is scheduled to end, with UTC offset preserved. Absent if no end date was set.
        timezone:
          type: string
          description: The IANA timezone identifier for the campaign (e.g., "Europe/London", "America/New_York").
        campaignState:
          $ref: '#/components/schemas/TopRankCampaignState'
      example:
        campaignId: 8a2d9ca9-2280-4e32-97d5-ff682cab214c
        audienceType: all
        budget: 10000
        budgetType: total
        bidStrategy: manualBid
        bidPrice: 100
        deliveryArea: Area 1
        currency: GBP
        createdAt: '2026-02-02T12:32:20.0089678Z'
        tenant: UK
        partnerId: '1234'
        isDeleted: false
        startDateTime: '2026-07-01T00:00:00+01:00'
        endDateTime: '2026-07-31T23:59:59+01:00'
        timezone: Europe/London
        campaignState: scheduled
    TopRankTopRankPartnerSettings:
      type: object
      title: TopRankPartnerSettings
      description: The top-rank partner settings which provide information about the given partner.
      required:
        - deliveryAreas
        - performanceScore
      properties:
        deliveryAreas:
          description: All delivery areas that are assigned to the given partner.
          type: array
          items:
            type: string
          uniqueItems: true
        performanceScore:
          description: The partner's performance score.
          type: number
          format: decimal
          minimum: 0
          nullable: true
      example:
        deliveryAreas:
          - Area 1
          - Area 2
        performanceScore: 40.5
    TopRankTopRankReportResponse:
      type: object
      title: TopRankReportResponse
      description: The top-rank report response which describes the performance of campaigns for partner for a given period.
      required:
        - campaigns
        - total
        - lastUpdated
        - reportType
        - startOfThePeriod
        - endOfThePeriod
      properties:
        total:
          description: The total campaigns cost for partner per report period in the smallest unit of local currency (e.g., pence).
          type: integer
          format: int32
          minimum: 0
        campaigns:
          description: The list of campaign report
          type: array
          items:
            $ref: '#/components/schemas/TopRankTopRankCampaignReport'
        reportType:
          description: The report type.
          type: string
          enum:
            - weekly
            - monthly
        startOfThePeriod:
          description: The start of the period of report.
          type: string
          format: date
        endOfThePeriod:
          description: The end of the period of report.
          type: string
          format: date
        lastUpdated:
          description: The UTC date and time at which the report was generated.
          type: string
          format: date-time
      example:
        total: 90573
        campaigns:
          - campaignId: 5d333100-2d05-4690-a2da-6d0c465c5c4c
            deliveryArea: Area 1
            startDate: '2024-08-05T10:35:03.0000000+00:00'
            endDate: '2024-08-20T11:45:55.0000000+00:00'
            costPerOrder: 399
            totalCost: 1596
            totalRevenue: 23940
            totalOrders: 4
            roas: 15
            status: ended
          - campaignId: a2e58611-19d7-4ff3-9acd-b5f6d0640276
            deliveryArea: '*'
            startDate: '2024-08-20T11:47:35.0000000+00:00'
            endDate: null
            costPerOrder: 399
            totalCost: 88977
            totalRevenue: 2936241
            totalOrders: 223
            roas: 33
            status: active
        reportType: monthly
        startOfThePeriod: '2024-08-01'
        endOfThePeriod: '2024-08-31'
        lastUpdated: '2024-08-24T06:00:03.0000000+00:00'
    TopRankTopRankSchedule:
      type: object
      title: TopRankSchedule
      description: The available top-rank schedule configuration which is used to create new campaigns for a given partner.
      required:
        - startOfWeek
        - daysOfWeek
        - timeSlots
      properties:
        startOfWeek:
          description: The start of week day configured for the given tenant
          type: string
          nullable: false
        daysOfWeek:
          description: The campaign's running days of the week
          type: array
          items:
            $ref: '#/components/schemas/SharedDayOfWeek'
          uniqueItems: true
        timeSlots:
          description: The campaign's running time of the day
          type: array
          items:
            $ref: '#/components/schemas/TopRankTimeSlot'
          uniqueItems: true
      example:
        startOfWeek: sunday
        daysOfWeek:
          - sunday
          - monday
        timeSlots:
          - key: lunch
            start: '11:00:00'
            end: '16:00:00'
    TopRankTopRankSettingsResponse:
      type: object
      title: TopRankSettingsResponse
      description: The top-rank settings which is used to create new campaigns for a given partner.
      required:
        - campaignSettings
        - partnerSettings
        - campaignStopReasonConstants
        - showWelcomeBanner
        - auctionSettings
        - walletSettings
        - manualInvoiceEnabled
        - partnerPermissionsEnabled
        - creditOnlyEnabled
        - campaignSchedulingEnabled
      properties:
        campaignSettings:
          $ref: '#/components/schemas/TopRankTopRankCampaignSettings'
        partnerSettings:
          $ref: '#/components/schemas/TopRankTopRankPartnerSettings'
        campaignStopReasonConstants:
          description: The list of campaign stop reason
          type: array
          items:
            $ref: '#/components/schemas/TopRankTopRankCampaignStopReason'
          uniqueItems: true
        experienceVersion:
          description: The TR experience version for this partner (1 = TR1, 2 = TR2, 3 = TR3). Null when the version cannot be determined.
          type: integer
          nullable: true
        showWelcomeBanner:
          description: Whether to show the welcome banner to this partner.
          type: boolean
        auctionSettings:
          $ref: '#/components/schemas/TopRankTenantAuctionSettings'
        walletSettings:
          $ref: '#/components/schemas/TopRankTenantWalletSettings'
        manualInvoiceEnabled:
          description: Whether manual invoice is enabled for this partner's market.
          type: boolean
        partnerPermissionsEnabled:
          description: Whether granular partner permissions are enabled for this partner's market.
          type: boolean
        creditOnlyEnabled:
          description: Whether credit-only campaign mode is enabled for this partner.
          type: boolean
        campaignSchedulingEnabled:
          description: Whether campaign scheduling is available for this partner's market.
          type: boolean
        surveyAudience:
          description: The TR3 survey audience segment this partner is eligible for, or null if not yet eligible. Eligibility requires 168 uninterrupted hours of active TR3 campaign activity. Null when the market survey flag is off, the partner is not on TR3, or the 168 hour threshold has not been reached.
          type: string
          nullable: true
          enum:
            - tr3CommonEligible
            - tr3SmbEligible
            - tr3EnterpriseEligible
      example:
        campaignSettings:
          prices:
            minimumAllowableFee: 100
            maximumAllowableFee: 1000
            suggestedDefaultFee: 400
          schedule:
            startOfWeek: sunday
            daysOfWeek:
              - sunday
              - monday
            timeSlots:
              - key: lunch
                start: '11:00:00'
                end: '16:00:00'
        partnerSettings:
          deliveryAreas:
            - Area 1
            - Area 2
          performanceScore: 40.5
        campaignStopReasonConstants:
          - notWorthMoney
          - notEnoughOrders
          - notEnoughInformation
          - notSureHowItWorks
          - temporarilyStopping
        experienceVersion: 3
        showWelcomeBanner: false
        auctionSettings:
          budgetMinimum: 100
          budgetMaximum: 100000
          budgetDefault: 500
          bidStrategies:
            - autoBid
            - manualBid
          audienceTypes:
            - all
            - newToPartner
        walletSettings:
          creditMinimum: 100
          creditMaximum: 100000
          creditReasons:
            - goodwill
          burnReasons:
            - correction
          walletExpiryEnabled: true
        manualInvoiceEnabled: false
        partnerPermissionsEnabled: false
        creditOnlyEnabled: false
        campaignSchedulingEnabled: true
        surveyAudience: tr3CommonEligible
    TopRankTopRankStopAllCampaignsRequest:
      type: object
      title: TopRankStopAllCampaignsRequest
      description: The stop all campaigns request for a given partner.
      required:
        - stopReason
      properties:
        stopReason:
          $ref: '#/components/schemas/TopRankTopRankCampaignStopReason'
        userId:
          type: string
          description: The ID related to the user who created this campaign.
        userType:
          $ref: '#/components/schemas/TopRankUserType'
      example:
        stopReason: notSureHowItWorks
        userId: agent1@justeattakeaway.com
        userType: agent
    TopRankTopRankStopCampaignRequest:
      type: object
      title: TopRankStopCampaignRequest
      description: The stop campaign request for a given campaign.
      required:
        - stopReason
      properties:
        stopReason:
          $ref: '#/components/schemas/TopRankTopRankCampaignStopReason'
        userId:
          type: string
          description: The ID related to the user who created this campaign.
        userType:
          $ref: '#/components/schemas/TopRankUserType'
      example:
        stopReason: notSureHowItWorks
        userId: agent1@justeattakeaway.com
        userType: agent
    TopRankTriggerAuctionRequest:
      type: object
      title: TriggerAuctionRequest
      description: |-
        Request model for triggering TopSort auctions across multiple slots.
        Supports running multiple auctions in a single request, each with different slot types and partner lists.
        TopSort requests are automatically batched if more than 5 auctions are provided.
      required:
        - auctions
      properties:
        auctions:
          type: array
          description: |-
            List of auctions to run, one per slot type.
            Each auction can have a different set of partners and will return its results under the specified auctionKey.
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/TopRankSlotAuctionRequest'
          example:
            - auctionKey: TextSearchTier1_ExactMatch
              slotType: TextSearchResults
              searchQuery: pizza
              partners:
                - partnerId: '123'
                  chain: dominoes
                  qualityScore: 0.92
                - partnerId: '456'
                  qualityScore: 0.78
            - auctionKey: TopPicks_Localised
              slotType: Carousel
              partners:
                - partnerId: '111'
                  qualityScore: 0.8
                - partnerId: '222'
                  qualityScore: 0.95
        postcode:
          type: string
          description: |-
            Customer's postcode without spaces (e.g., "BS1" or "SW1A1AA").
            Passed to TopSort for location-based campaign filtering.
            Optional - can be omitted if location targeting is not needed.
          example: SW1A1AA
    TopRankTriggerAuctionResponse:
      type: array
      title: TriggerAuctionResponse
      description: |-
        Array of auction results, one per requested auction.
        Results are returned in the same order as the request, with each result identified by its auctionKey.
      items:
        type: object
        required:
          - key
          - boostedPartners
        properties:
          key:
            type: string
            description: |-
              The auction key provided in the request.
              Identifies which auction these results correspond to (e.g., carousel name).
            example: TopPicks_Localised
          slotPositions:
            type: array
            items:
              type: integer
              format: int32
            description: |-
              Ordered list of slot positions assigned to the auction winners.
              Each position corresponds to where a boosted partner should appear in the results.
              Only returned in v2 responses.
            example:
              - 0
              - 1
              - 3
          boostedPartners:
            type: array
            description: |-
              List of auction winners sorted by rank.
              Maximum winners determined by slotType configuration.
            items:
              $ref: '#/components/schemas/TopRankAuctionPartnerResult'
      example:
        - key: TextSearchTier1_ExactMatch
          slotPositions:
            - 0
            - 1
          boostedPartners:
            - partnerId: '123'
              auctionId: abc-123
              rank: 1
              externalCampaignId: camp-1
            - partnerId: '456'
              auctionId: abc-456
              rank: 2
              externalCampaignId: camp-2
        - key: TextSearchTier2_GoodMatch
          slotPositions:
            - 5
          boostedPartners:
            - partnerId: '789'
              auctionId: def-789
              rank: 1
              externalCampaignId: camp-3
        - key: TopPicks_Localised
          slotPositions:
            - 1
            - 3
            - 7
          boostedPartners:
            - partnerId: '111'
              auctionId: ghi-111
              rank: 1
              externalCampaignId: camp-4
            - partnerId: '222'
              auctionId: ghi-222
              rank: 2
              externalCampaignId: camp-5
    TopRankUpdateTopRankCampaignRequest:
      type: object
      title: UpdateTopRankCampaignRequest
      description: Update campaign request for partner by delivery area.
      required:
        - costPerOrder
        - deliveryArea
        - timeSlots
        - daysOfWeek
        - userId
        - userType
      properties:
        costPerOrder:
          format: int32
          description: The cost per order in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        deliveryArea:
          description: The delivery area that the campaign applies to.
          type: string
        timeSlots:
          description: The campaign's running time of the day
          type: array
          items:
            $ref: '#/components/schemas/TopRankTimeSlot'
          uniqueItems: true
        daysOfWeek:
          description: The campaign's running days of the week
          type: array
          items:
            $ref: '#/components/schemas/SharedDayOfWeek'
          uniqueItems: true
        userId:
          type: string
          description: The ID related to the user who created this campaign.
        userType:
          $ref: '#/components/schemas/TopRankUserType'
      example:
        costPerOrder: 400
        deliveryArea: Area 1
        timeSlots:
          - key: lunch
            start: '11:00:00'
            end: '16:00:00'
        daysOfWeek:
          - sunday
        userId: agent1@justeattakeaway.com
        userType: agent
    TopRankUpdateTopRankCampaignV2Request:
      type: object
      title: UpdateTopRankCampaignV2Request
      description: The request to update a V2 campaign.
      required:
        - audienceType
        - budget
        - budgetType
        - bidStrategy
        - deliveryArea
      properties:
        audienceType:
          $ref: '#/components/schemas/TopRankAudienceType'
        budget:
          format: int32
          description: The total budget for the campaign in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        budgetType:
          $ref: '#/components/schemas/TopRankBudgetType'
        bidStrategy:
          $ref: '#/components/schemas/TopRankBidStrategy'
        bidPrice:
          format: int32
          description: The bid price for the campaign in the smallest unit of local currency (e.g., pence). Required if bidStrategy is manualBid.
          type: integer
          minimum: 0
        roasTarget:
          description: The Return on Ad Spend (ROAS) target for the campaign, e.g. 5.0, 10.0, 15.0, or 20.0.
          type: number
          format: decimal
          nullable: true
        v1CampaignId:
          type: string
          description: The ID of the original V1 campaign. Required if this campaign is being created from an existing V1 campaign.
        deliveryArea:
          description: The delivery area that the campaign applies to.
          type: string
        startDate:
          type: string
          format: date
          nullable: true
          description: The date on which the campaign is scheduled to start, in YYYY-MM-DD format. Omit or set to null to clear the start date. Only supported on v=2 campaigns.
        endDate:
          type: string
          format: date
          nullable: true
          description: The date on which the campaign is scheduled to end, in YYYY-MM-DD format. Omit or set to null to clear the end date. If provided, must be a future date. Only supported on v=2 campaigns.
        timezone:
          type: string
          nullable: true
          description: IANA timezone identifier used to interpret startDate and endDate (e.g. "Europe/London"). Omit or set to null to use the tenant default. Only supported on v=2 campaigns.
      example:
        audienceType: all
        budget: 10000
        budgetType: total
        bidStrategy: manualBid
        bidPrice: 100
        deliveryArea: Area 1
        startDate: '2026-07-01'
        endDate: '2026-07-31'
        timezone: Europe/London
    TopRankUserType:
      type: string
      title: UserType
      description: The type of user updating a campaign
      enum:
        - partner
        - agent
    TopRankWalletAdjustRequest:
      type: object
      title: WalletAdjustRequest
      description: The request to adjust funds in a wallet.
      required:
        - amount
        - walletOperation
      properties:
        amount:
          format: int32
          description: The amount to adjust in the wallet in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        walletOperation:
          $ref: '#/components/schemas/TopRankWalletOperation'
        reason:
          type: string
          description: The reason for the wallet adjustment.
        email:
          type: string
          description: The email address to use for notification regarding wallet adjustment.
        expiryDate:
          type: string
          format: date
          description: Optional date on which the credit expires (ISO 8601 full-date, e.g. 2026-09-30), interpreted at end-of-day in the provided timezone. Cannot be in the past.
        timezone:
          type: string
          description: Optional IANA timezone (e.g. Europe/Berlin) used to interpret expiry date. Defaults to the tenant's configured timezone when omitted.
      example:
        amount: 10000
        walletOperation: credit
        reason: Manual adjustment
        email: user@example.com
        expiryDate: '2026-09-30'
        timezone: Europe/Berlin
    TopRankWalletBalanceResponse:
      type: object
      title: WalletBalanceResponse
      description: The response containing the wallet balance.
      required:
        - walletId
        - balance
        - currency
      properties:
        walletId:
          type: string
          format: guid
          description: The ID of the wallet.
        balance:
          format: int32
          description: The current balance of the wallet in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        currency:
          type: string
          description: The currency of the wallet balance, in ISO 4217 format (e.g., GBP).
      example:
        walletId: 8a2d9ca9-2280-4e32-97d5-ff682cab214c
        balance: 10000
        currency: GBP
    TopRankWalletBulkOperationRequest:
      type: object
      title: WalletBulkOperationRequest
      description: The request to update a partner's wallet in bulk.
      required:
        - partnerId
        - amount
        - operation
      properties:
        partnerId:
          type: string
          description: The unique identifier of the partner whose wallet is being updated.
        amount:
          format: int32
          description: The amount to burn from the wallet in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        operation:
          $ref: '#/components/schemas/TopRankWalletOperation'
        reason:
          type: string
          description: The reason for the wallet operation.
        email:
          type: string
          description: The email address to use for notification regarding wallet adjustment.
        expiryDate:
          type: string
          format: date
          description: Optional date on which the credit expires (ISO 8601 full-date, e.g. 2026-09-30), interpreted at end-of-day in the provided timezone. Cannot be in the past. Informational only - the system takes no action; an agent manually burns the credit.
        timezone:
          type: string
          description: Optional IANA timezone (e.g. Europe/Berlin) used to interpret expiry date. Defaults to the tenant's configured timezone when omitted.
      example:
        partnerId: '1234'
        amount: 10000
        operation: credit
        reason: Bulk adjustment
        email: user@example.com
        expiryDate: '2026-09-30'
        timezone: Europe/Berlin
    TopRankWalletBulkOperationResponse:
      type: object
      title: WalletBulkOperationResponse
      description: The response containing the wallet bulk operation details.
      required:
        - partnerId
        - status
        - operation
        - requestedAmount
        - currency
      properties:
        partnerId:
          type: string
          description: The unique identifier of the partner whose wallet was updated.
        status:
          $ref: '#/components/schemas/TopRankWalletBulkOperationStatus'
        operation:
          $ref: '#/components/schemas/TopRankWalletOperation'
        requestedAmount:
          format: int32
          description: The amount that was requested to be applied to the wallet in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        appliedAmount:
          format: int32
          description: The amount that was actually applied to the wallet in the smallest unit of local currency (e.g., pence). Null if the balance was not adjusted.
          type: integer
          minimum: 0
        currency:
          type: string
          description: The ISO 4217 currency code for the amounts (e.g., GBP).
        newBalance:
          format: int32
          description: The new balance of the wallet in the smallest unit of local currency (e.g., pence). Null if the wallet was not updated.
          type: integer
        message:
          type: string
          description: An optional message providing additional details about the wallet operation result.
      example:
        partnerId: '12345'
        status: success
        operation: credit
        requestedAmount: 10000
        appliedAmount: 10000
        newBalance: 50000
        currency: GBP
    TopRankWalletBulkOperationStatus:
      type: string
      title: WalletBulkOperationStatus
      description: The status of a wallet bulk operation.
      enum:
        - success
        - partialSuccess
        - failed
    TopRankWalletHistoryPaginationResponse:
      type: object
      title: WalletHistoryPaginationResponse
      description: Response containing a paginated list of historic wallet operations
      additionalProperties: false
      required:
        - data
        - walletId
      properties:
        paging:
          nullable: true
          $ref: '#/components/schemas/PagingAfterCursor'
        walletId:
          type: string
          format: guid
          description: The ID of the wallet.
        data:
          nullable: false
          description: Collection of partner's JET credits wallet operations history
          type: array
          items:
            $ref: '#/components/schemas/TopRankWalletOperationHistory'
    TopRankWalletOperation:
      type: string
      title: WalletOperation
      description: The type of wallet operation.
      enum:
        - burn
        - credit
        - burnAll
    TopRankWalletOperationHistory:
      type: object
      title: WalletOperationHistory
      description: The wallet operation history entry.
      required:
        - amount
        - currency
        - operation
        - timestamp
      properties:
        amount:
          format: int32
          description: The amount to be added or burned in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        currency:
          type: string
          description: The currency of the wallet, in ISO 4217 format (e.g., GBP).
        operation:
          $ref: '#/components/schemas/TopRankWalletOperation'
        timestamp:
          type: string
          format: date-time
          description: The UTC timestamp of the operation.
        reason:
          type: string
          description: The reason for the wallet operation.
        approvedBy:
          type: string
          description: The email address of the approver of wallet operation. A default value is returned if caller is not an authorized agent.
        performedBy:
          type: string
          description: The email address of agent who performed this operation. A default value is returned if caller is not an authorized agent.
        expiryDateTime:
          type: string
          format: date-time
          nullable: true
          description: The credit's expiry as a timezone-aware instant (end-of-day local). Derived from the requested expiry date date and timezone by computing end-of-day as a UTC offset. Null when no expiry was set or for non-credit entries. Returned to both partners and agents.
        timezone:
          type: string
          nullable: true
          description: The IANA timezone in which expiry date was set.
      example:
        amount: 10000
        currency: GBP
        operation: credit
        reason: Bulk credit adjustment
        timestamp: '2026-02-02T12:32:20.0089678Z'
        approvedBy: approver@justeattakeaway.com
        performedBy: agent@justeattakeaway.com
        expiryDate: '2026-09-30T23:59:59+02:00'
        timezone: Europe/Berlin
    TopRankWalletOperationResponse:
      type: object
      title: WalletOperationResponse
      description: The response containing the wallet operation details.
      required:
        - walletId
        - newBalance
        - amountApplied
        - operationType
        - currency
      properties:
        walletId:
          type: string
          format: guid
          description: The ID of the wallet.
        newBalance:
          format: int32
          description: The new balance of the wallet in the smallest unit of local currency (e.g., pence).
          type: integer
          minimum: 0
        amountApplied:
          format: int32
          description: The amount that was applied to the wallet in the smallest unit of local currency (e.g., pence)..
          type: integer
        operationType:
          $ref: '#/components/schemas/TopRankWalletOperation'
        currency:
          type: string
          description: The ISO 4217 currency code for the amounts (e.g., GBP).
      example:
        walletId: 8a2d9ca9-2280-4e32-97d5-ff682cab214c
        newBalance: 10000
        amountApplied: 5000
        operationType: credit
        currency: EUR
    TopUpTopUpBasketRequest:
      required:
        - restaurantId
      properties:
        restaurantId:
          type: string
          description: Id of the partner.
      example:
        restaurantId: '123456'
      type: object
    TopUpTopUpBasketResponse:
      description: The response object for top up basket endpoint.
      properties:
        basketId:
          type: string
          description: The basket id
        createDate:
          nullable: true
          description: When the basket was created
          type: string
        restaurantSeoName:
          nullable: true
          description: A unique name per tenant for a restaurant used for external operations.
          type: string
        restaurantId:
          description: A unique identifier per tenant for a restaurant.
          type: string
        menuGroupId:
          type: string
          description: The menu group Id
        serviceType:
          type: string
          description: The service type
        basketSummary:
          $ref: '#/components/schemas/TopUpTopUpBasketSummaryResponse'
        topUp:
          nullable: true
          $ref: '#/components/schemas/TopUpTopUpBasketResultResponse'
      type: object
    TopUpTopUpBasketResultResponse:
      description: Information for displaying the top up basket result to the user.
      properties:
        expiresAt:
          format: date-time
          description: Expiration time for placing top up order
          type: string
          example: '2022-03-10T16:15:50Z'
        minimumBasketTotal:
          format: int32
          type: integer
          description: The minimum basket total in minor currency units the voucher is valid for
      type: object
    TopUpTopUpBasketSummaryResponse:
      description: Information for displaying the top up basket to the user.
      properties:
        deliveryCharge:
          format: decimal
          type: number
          description: The delivery charge
        deliveryChargeWithBenefit:
          nullable: true
          format: decimal
          type: number
          description: The delivery charge when the delivery benefit is applied
      type: object
    TopUpTopUpPartnersResponse:
      type: object
      properties:
        orderId:
          type: string
          description: The order Id.
        expiresAt:
          format: date-time
          description: Expiration time of the top up offer
          type: string
        minimumBasketTotal:
          format: int32
          type: integer
          description: The minimum basket total in minor currency units the voucher is valid for
        partners:
          type: array
          description: List of eligible partners where the top-up order can be placed.
          items:
            type: object
            properties:
              id:
                type: string
                description: The ID of the partner.
              name:
                type: string
                description: The partner name.
              seoName:
                type: string
                description: The SEO name of the partner.
              logoUrl:
                type: string
                description: URL of the partner's logo.
              hasOffer:
                type: boolean
                description: Indicates if the partner has an active offer
              deliveryEtaMinutes:
                type: object
                description: Estimate for the partner delivery times.
                properties:
                  rangeLower:
                    type: number
                    description: The earliest delivery time in minutes.
                  rangeUpper:
                    type: number
                    description: The latest delivery time in minutes.
      example:
        orderId: '123456'
        expiresAt: '2025-06-06T12:00:00Z'
        minimumBasketTotal: 1000
        partners:
          - id: '493414'
            name: Pizza night
            seoName: pizza-night
            logoUrl: https://example.com/logo.png
            hasOffer: true
            deliveryEtaMinutes:
              rangeLower: 15
              rangeUpper: 30
          - id: '567890'
            name: Another Partner
            seoName: another-partner-london
            logoUrl: https://example.com/logo.png
            hasOffer: false
            deliveryEtaMinutes:
              rangeLower: 10
              rangeUpper: 25
    TopsortCampaignWebhookPayload:
      description: Payload for Topsort campaign events
      type: object
      required:
        - vendor_id
      properties:
        vendor_id:
          type: string
          description: Identifier of the vendor that owns the campaign
    TopsortCampaignWebhookRequest:
      description: Topsort webhook event payload
      type: object
      required:
        - payload
      properties:
        payload:
          $ref: '#/components/schemas/TopsortCampaignWebhookPayload'
    TwiliologginglogsinkTwilioDebuggingEventRequest:
      properties:
        timestamp:
          type: string
          description: Time of occurrence of the Debugger event
          example: '2020-01-01T23:28:54.0000000+00:00'
        parentAccountSid:
          type: string
          description: Unique identifier of the Parent Account. This parameter only exists if the above account is a sub account
          example: ACxxxxxxxxxxxxxxxxxxxxxxxx
        sid:
          type: string
          description: Unique identifier of the Debugger event
          example: NOxxxxx
        payloadType:
          type: string
          description: Type of the payload
          example: application/json
        payload:
          type: string
          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 }}'
        level:
          type: string
          description: Severity of the Debugger event. Possible values are Error and Warning
          example: Error
        accountSid:
          type: string
          description: Unique identifier of the account that generated the Debugger event
          example: ACxxxxxxxxxxxxxxxxxxxxxxxx
      description: Information about errors and warnings which could occur on Twilio account
      type: object
    UsersPartner:
      type: object
      description: Represents a partner business linked to a user.
      required:
        - partnerId
        - tenant
      properties:
        partnerId:
          type: string
          description: The unique identifier of a partner business linked to the user. It indicates the legacy IDs; the Legacy Takeaway ID for L-TKWY tenants and the Legacy Just Eat ID for L-JE tenants.
          example: '101'
        tenant:
          type: string
          description: The lowercase tenant identifier of a partner business linked to the user.
          example: uk
    UsersUserPartnersResponse:
      type: object
      description: Response containing all partner identifiers linked to a given user, irrespective of their relation to each partner.
      required:
        - partners
        - totalCount
        - limit
        - offset
      properties:
        partners:
          type: array
          description: List of partner businesses associated with the user. Returns an empty array if the user has no business associations.
          items:
            $ref: '#/components/schemas/UsersPartner'
        totalCount:
          type: integer
          format: int32
          description: Total number of partners linked to the user.
        limit:
          type: integer
          format: int32
          description: Maximum number of partners returned in this response.
        offset:
          type: integer
          format: int32
          description: Number of partners skipped before this page of results.
    VoiceagentCreateCallDetailsRequest:
      properties:
        callerPhoneNumber:
          description: Caller number in E164.
          type: string
        conversationSummary:
          description: Summary of the conversation that occurred during the phone call.
          type: string
        category:
          description: The category (topic) of the conversation
          type: string
      description: Request containing call details
      example:
        callerPhoneNumber: '+441514960453'
        conversationSummary: Partner is asking about the change of menu item
        category: menu
      type: object
    VoiceagentEnrichZendeskTicketRequest:
      properties:
        zendeskTicketId:
          description: The unique ID of the Zendesk ticket to enrich.
          type: string
        callerPhoneNumber:
          description: The caller's phone number in E164 format.
          type: string
      description: Request to enrich a Zendesk ticket with details from an internal source.
      example:
        zendeskTicketId: '12345'
        callerPhoneNumber: '+441514960453'
      required:
        - zendeskTicketId
        - callerPhoneNumber
      type: object
    VoiceagentGetLastCallDetailsResponse:
      properties:
        callerPhoneNumber:
          description: Caller number in E164 format.
          type: string
        conversationSummary:
          description: Summary of the conversation that occurred during the phone call.
          type: string
        category:
          description: The category (topic) of the conversation
          type: string
      description: Response containing call details
      example:
        callerPhoneNumber: '+441514960453'
        conversationSummary: Partner is asking about the change of menu item
        category: menu
      type: object
    VoiceagentCallAnalyticsConversationInitiationClientData:
      properties:
        dynamicVariables:
          $ref: '#/components/schemas/VoiceagentCallAnalyticsDynamicVariables'
      description: Initial client data of the conversation
      type: object
    VoiceagentCallAnalyticsCreateCallAnalyticsRequest:
      properties:
        data:
          $ref: '#/components/schemas/VoiceagentCallAnalyticsTranscriptionData'
      description: Request containing call analytics
      example:
        data:
          conversationId: conv_0601k94n1mp0ewptphrbk2p7ddc9
          metadata:
            terminationReason: Ending call as part of a workflow route.
            error:
              code: '6547'
              reason: Not Found
          transcript:
            - toolResults:
                - toolName: transfer_to_agent
                  result:
                    steps:
                      - requests:
                          - toolName: transfer_to_agent
                            toolDetails:
                              body: '{"reason": "Transferring to agent."}'
                        results:
                          - toolName: transfer_to_agent
                            resultValue: '{"status":"success"}'
          conversationInitiationClientData:
            dynamicVariables:
              systemCallerId: '+31202491068'
      type: object
    VoiceagentCallAnalyticsDynamicVariables:
      properties:
        systemCallerId:
          description: System caller id
          type: string
      description: Dynamic variables
      type: object
    VoiceagentCallAnalyticsErrorInfo:
      properties:
        code:
          description: Error code
          type: string
        reason:
          description: Reason why the error occurred
          type: string
      description: Tool call error information
      type: object
    VoiceagentCallAnalyticsMetadata:
      properties:
        terminationReason:
          description: The reason why the call was ended
          type: string
        error:
          $ref: '#/components/schemas/VoiceagentCallAnalyticsErrorInfo'
      description: conversation metadata
      type: object
    VoiceagentCallAnalyticsRequest:
      properties:
        toolName:
          description: The name of the tool that was triggered
          type: string
        toolDetails:
          $ref: '#/components/schemas/VoiceagentCallAnalyticsToolDetails'
      description: Tool request
      type: object
    VoiceagentCallAnalyticsResult:
      properties:
        toolName:
          description: The name of the tool that was triggered
          type: string
        resultValue:
          description: The tool result
          type: string
      description: Tool result
      type: object
    VoiceagentCallAnalyticsStep:
      properties:
        requests:
          items:
            $ref: '#/components/schemas/VoiceagentCallAnalyticsRequest'
          type: array
        results:
          items:
            $ref: '#/components/schemas/VoiceagentCallAnalyticsResult'
          type: array
      description: Tool step
      type: object
    VoiceagentCallAnalyticsToolDetails:
      properties:
        body:
          description: Tool details body
          type: string
      description: Tool details
      type: object
    VoiceagentCallAnalyticsToolResult:
      properties:
        toolName:
          description: The name of the tool that was triggered
          type: string
        result:
          $ref: '#/components/schemas/VoiceagentCallAnalyticsToolResultDetail'
      description: Tool result
      type: object
    VoiceagentCallAnalyticsToolResultDetail:
      properties:
        steps:
          items:
            $ref: '#/components/schemas/VoiceagentCallAnalyticsStep'
          type: array
      description: Tool step.
      type: object
    VoiceagentCallAnalyticsTranscriptItem:
      properties:
        toolResults:
          items:
            $ref: '#/components/schemas/VoiceagentCallAnalyticsToolResult'
          type: array
      description: Conversation transcription item.
      type: object
    VoiceagentCallAnalyticsTranscriptionData:
      properties:
        conversationId:
          description: Conversation id from the phone call.
          type: string
        metadata:
          $ref: '#/components/schemas/VoiceagentCallAnalyticsMetadata'
        transcript:
          items:
            $ref: '#/components/schemas/VoiceagentCallAnalyticsTranscriptItem'
          description: Transcript items.
          type: array
        conversationInitiationClientData:
          $ref: '#/components/schemas/VoiceagentCallAnalyticsConversationInitiationClientData'
      description: Conversation transcription.
      type: object
    VoucherCodeType:
      x-enumNames:
        - Unknown
        - DynamicSingleUse
        - StaticMultipleUse
      description: The type of voucher code
      enum:
        - 0
        - 1
        - 2
      type: integer
    VoucherConsumerRestrictions:
      additionalProperties: false
      type: object
      properties:
        status:
          nullable: true
          $ref: '#/components/schemas/VoucherConsumerStatusV2'
    VoucherConsumerStatusV2:
      description: The consumer status
      type: string
      format: enum
      enum:
        - new
        - returning
    VoucherConsumerStatus:
      x-enumNames:
        - Undefined
        - NewConsumer
        - ReturnConsumer
      description: ''
      enum:
        - 0
        - 1
        - 2
      type: integer
    VoucherConsumerVoucherDiscount:
      additionalProperties: false
      type: object
      properties:
        type:
          format: enum
          description: Voucher discount type.
          enum:
            - amount
            - percentage
            - deliveryFee
          type: string
        percent:
          nullable: true
          description: The percent of the discount.
          type: number
          format: decimal
        amount:
          nullable: true
          description: The absolute amount of the discount (in minor currency units).
          format: int32
          type: integer
    VoucherConsumerVoucherResponse:
      additionalProperties: false
      type: object
      properties:
        code:
          nullable: true
          description: The voucher code.
          type: string
        displayName:
          nullable: true
          description: The user friendly voucher name (could be displayed to the customer)
          type: string
        currency:
          nullable: true
          description: The currency code in ISO-4217 format.
          type: string
          minLength: 3
          maxLength: 3
        discount:
          description: Voucher discount.
          oneOf:
            - $ref: '#/components/schemas/VoucherConsumerVoucherDiscount'
        restrictions:
          description: Voucher restrictions.
          oneOf:
            - $ref: '#/components/schemas/VoucherConsumerVoucherRestrictions'
        usage:
          nullable: true
          description: Voucher usage summary.
          oneOf:
            - $ref: '#/components/schemas/VoucherConsumerVoucherUsage'
        metadata:
          nullable: true
          description: Voucher metadata.
          allOf:
            - $ref: '#/components/schemas/VoucherVoucherMetadata'
    VoucherConsumerVoucherRestrictions:
      additionalProperties: false
      type: object
      properties:
        endDate:
          description: The end date (UTC) of the voucher.
          format: date-time
          type: string
        minimumBasketTotal:
          nullable: true
          description: The minimum basket total in minor currency units the voucher is valid for
          format: int32
          type: integer
    VoucherConsumerVoucherUsage:
      additionalProperties: false
      type: object
      required:
        - type
      properties:
        type:
          description: |
            Use policy type.  The value defined on voucher creation by `usePolicy.type`. 
          type: string
          example: unlimited
        commercialPartnership:
          description: |
            Indicates commercial partnership voucher. The value defined on voucher creation by `usePolicy.commercialPartnership`. 
          type: boolean
          example: true
          default: false
        autoApplicable:
          description: Whether to apply voucher automatically on checkout.
          type: boolean
          default: false
    VoucherConsumerVouchersResponse:
      additionalProperties: false
      type: object
      properties:
        data:
          items:
            $ref: '#/components/schemas/VoucherConsumerVoucherResponse'
          description: The list of vouchers distributed to customer.
          type: array
    VoucherCreateVoucherRequest:
      type: object
      additionalProperties: false
      properties:
        name:
          description: Voucher name.
          type: string
        code:
          description: Alphanumeric code for static vouchers.
          nullable: true
          type: string
          pattern: ^[a-zA-Z0-9]+$
        createdBy:
          description: The source system creating the voucher
          type: string
        holder:
          description: The voucher holder's identity
          nullable: true
          allOf:
            - $ref: '#/components/schemas/VoucherVoucherHolder'
        discount:
          description: The details of the discount (amount / type etc)
          allOf:
            - $ref: '#/components/schemas/VoucherVoucherDiscount'
        restrictions:
          description: The parameters that determine the restrictions of the voucher
          allOf:
            - $ref: '#/components/schemas/VoucherRestrictions'
        usePolicy:
          description: The use policy required for multi-use vouchers
          nullable: true
          allOf:
            - $ref: '#/components/schemas/VoucherUsePolicy'
        metadata:
          description: Voucher metadata.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/VoucherVoucherMetadata'
        quota:
          description: Quota settings for voucher redemption limits.
          nullable: true
          allOf:
            - $ref: '#/components/schemas/VoucherQuota'
        eligibility:
          description: The parameter that determine the eligibility criteria of the voucher
          nullable: true
          allOf:
            - $ref: '#/components/schemas/VoucherVoucherEligibility'
    VoucherCreateVoucherResponse:
      additionalProperties: false
      type: object
      properties:
        code:
          description: The voucher code.
          type: string
      example:
        code: ABCD-1234
    VoucherCustomer:
      description: The attributes of the customer applying the voucher
      type: object
      additionalProperties: false
      required:
        - customerId
      properties:
        customerId:
          description: Numeric unique customer identifier
          type: string
        numberOfOrders:
          description: Total number of orders placed by the customer
          type: integer
        lastName:
          description: Customer's last name
          type: string
        phoneNumber:
          description: Customer's phone number
          type: string
    VoucherDayOfWeek:
      x-enumNames:
        - Sunday
        - Monday
        - Tuesday
        - Wednesday
        - Thursday
        - Friday
        - Saturday
      description: The day of the week
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
      type: integer
    VoucherDeliveryModelV2:
      description: The delivery model (applicable for delivery service type)
      type: string
      format: enum
      enum:
        - marketplace
        - logistics
    VoucherDiscount:
      additionalProperties: false
      properties:
        Amount:
          description: The amount of discount
          format: decimal
          type: number
        VoucherType:
          description: The type of discount
          $ref: '#/components/schemas/VoucherVoucherType'
      type: object
    VoucherDiscountableAmounts:
      description: The discountable amounts associated with the order
      type: object
      additionalProperties: false
      required:
        - total
        - deliveryFee
      properties:
        total:
          description: Total amount that may be discounted including delivery fee
          type: integer
          minimum: 0
        deliveryFee:
          description: Delivery fee amount that may be discounted
          type: integer
          minimum: 0
    VoucherError:
      description: The voucher validation error
      type: object
      additionalProperties: false
      properties:
        errorCode:
          description: The error code
          type: string
        description:
          description: The error description
          type: string
        minimumAmount:
          nullable: true
          description: Eligible minimum of basket total in minor currency units
          type: integer
          format: int32
        currentAmount:
          nullable: true
          description: The basket total associated with the order in minor currency units
          type: integer
          format: int32
        remainingAmount:
          nullable: true
          description: The remaining amount need to be added to the order in minor currency units
          type: integer
          format: int32
    VoucherFees:
      description: The attributes of the fees applying to the order
      type: object
      additionalProperties: false
      properties:
        service:
          description: The service fee.
          type: integer
    VoucherGroupType:
      x-enumNames:
        - Unknown
        - DynamicSingleUse
        - StaticMultipleUse
      description: The type of the voucher group (e.g. Dynamically Created Single Use)
      enum:
        - 0
        - 1
        - 2
      type: integer
    VoucherOrder:
      description: The attributes of the order to which the voucher is applied
      type: object
      additionalProperties: true
      required:
        - discountableAmounts
      properties:
        platform:
          description: Platform from which the order was placed, e.g., 'ios', etc
          type: string
        basketTotal:
          description: The total amount of the basket. This value is used for validating the minimumBasketTotal restriction.
          type: integer
        basketSubTotal:
          description: The subtotal amount of the basket including discounts and fees. This value is used for validating the minimumBasketTotal restriction for UFD vouchers
          type: integer
        discountableAmounts:
          $ref: '#/components/schemas/VoucherDiscountableAmounts'
        fees:
          $ref: '#/components/schemas/VoucherFees'
        paymentMethods:
          $ref: '#/components/schemas/VoucherPaymentMethods'
        serviceType:
          $ref: '#/components/schemas/VoucherServiceTypeV2'
        cuisines:
          description: The cuisine restrictions
          type: object
          properties:
            ids:
              description: The list of cuisine identifiers
              type: array
              items:
                type: string
        postalCode:
          description: Delivery address postal code or collection address postal code depends on service type
          type: string
        acquiredMembershipPlan:
          type: string
          description: The identifier of the acquired membership plan
          example: DELIVERY_PASS_90DAYS
        streetName:
          description: Street name of the customer's address.
          type: string
        houseNumber:
          description: Street number of the customer's address.
          type: string
        city:
          description: City of the customer's address.
          type: string
        currency:
          description: The currency that reflects the order's amount(s) and fees.
          type: string
          example: EUR
    VoucherOrderNumberValidity:
      additionalProperties: false
      properties:
        NumberOfOrders:
          nullable: true
          description: The number of orders for the comparison
          format: int32
          type: integer
        ComparisonOperator:
          nullable: true
          description: The comparison operator (e.g. >, <, ==)
          type: string
      type: object
    VoucherOrderWithId:
      allOf:
        - $ref: '#/components/schemas/VoucherOrder'
        - type: object
          required:
            - legacyOrderId
            - orderId
          properties:
            legacyOrderId:
              description: The legacy order ID (friendly order reference for just-eat or numeric order id for takeaway)
              type: string
            orderId:
              description: The order ID
              type: string
    VoucherPaymentMethods:
      description: List of payment method slugs used to pay the order.
      type: array
      items:
        type: string
        example: voucher
    VoucherQuota:
      type: object
      additionalProperties: false
      description: Quota settings for voucher redemption limits.
      properties:
        max:
          description: Total redemption limit for the voucher.
          nullable: true
          type: integer
    VoucherRedeemVouchersRequest:
      description: The vouchers redemption request
      type: object
      additionalProperties: false
      required:
        - vouchers
        - customer
        - order
        - date
      properties:
        vouchers:
          type: array
          items:
            type: object
            properties:
              plainCode:
                description: Plain voucher code
                type: string
        customer:
          $ref: '#/components/schemas/VoucherCustomer'
        order:
          $ref: '#/components/schemas/VoucherOrderWithId'
        restaurant:
          $ref: '#/components/schemas/VoucherRestaurant'
        date:
          description: The order placed date or scheduled date for pre-orders in UTC
          type: string
          format: date-time
    VoucherRestaurant:
      description: The attributes of the restaurant where the order with the voucher is placed
      type: object
      additionalProperties: false
      properties:
        restaurantId:
          description: Unique restaurant identifier
          type: string
        deliveryModel:
          $ref: '#/components/schemas/VoucherDeliveryModelV2'
        brand:
          description: Restaurant brand
          type: string
    VoucherRestaurantBrands:
      additionalProperties: false
      properties:
        BrandNames:
          items:
            type: string
          description: The restaurant brand names the voucher is valid for
          type: array
        Action:
          format: enum
          description: Include or exclude the restaurant brand names
          enum:
            - Include
            - Exclude
          type: string
      type: object
    VoucherRestrictions:
      additionalProperties: false
      type: object
      properties:
        acquiredMembershipPlan:
          nullable: true
          description: The parameter that determine unique membership plan identifier
          type: string
        timeline:
          description: The parameters that determine the timeline restrictions of the voucher
          allOf:
            - $ref: '#/components/schemas/VoucherTimelineRestrictions'
        consumer:
          nullable: true
          description: The parameters that determine the consumer restrictions of the voucher
          allOf:
            - $ref: '#/components/schemas/VoucherConsumerRestrictions'
        restaurants:
          nullable: true
          description: The parameters that determine the restaurant restrictions of the voucher
          type: object
          properties:
            ids:
              description: Eligible restaurants
              type: array
              minItems: 1
              maxItems: 500
              items:
                type: string
            exclude:
              description: Whether to exclude the restaurants
              type: boolean
              default: false
        brands:
          nullable: true
          description: The parameters that determine the restaurant brand restrictions of the voucher
          type: object
          properties:
            names:
              description: Eligible restaurant brand name(s)
              type: array
              minItems: 1
              maxItems: 100
              items:
                type: string
            exclude:
              description: Whether to exclude the restaurant brands
              type: boolean
              default: false
        platforms:
          nullable: true
          description: Eligible platforms
          type: array
          items:
            type: string
        postalCodePrefixes:
          nullable: true
          description: Eligible postal code prefixes
          type: array
          maxItems: 1000
          items:
            type: string
        minimumBasketTotal:
          nullable: true
          description: Eligible minimum of basket total in minor currency units
          type: integer
          format: int32
        serviceType:
          nullable: true
          description: Eligible service type
          allOf:
            - $ref: '#/components/schemas/VoucherServiceTypeV2'
        deliveryModel:
          nullable: true
          description: Eligible delivery model
          allOf:
            - $ref: '#/components/schemas/VoucherDeliveryModelV2'
        cuisines:
          nullable: true
          description: Eligible cuisines
          type: object
          properties:
            ids:
              description: Eligible cuisine id(s)
              type: array
              items:
                type: string
            exclude:
              description: Whether to exclude the cuisines
              type: boolean
              default: false
    VoucherRollbackRedemptionsRequest:
      type: object
      additionalProperties: false
      required:
        - orderId
      properties:
        orderId:
          description: The global order ID
          type: string
    VoucherServiceTypeV2:
      description: The order service type
      type: string
      format: enum
      enum:
        - collection
        - delivery
    VoucherServiceType:
      x-enumNames:
        - Collection
        - Delivery
      description: The service type for the voucher (e.g. Delivery, collection)
      enum:
        - 1
        - 2
      type: integer
    VoucherTimelineRestrictions:
      additionalProperties: false
      type: object
      properties:
        startDate:
          description: The start date and time of the voucher
          type: string
          format: date-time
        endDate:
          description: The end date and time of the voucher
          type: string
          format: date-time
        days:
          nullable: true
          description: The days of the week the voucher is valid for
          type: array
          items:
            $ref: '#/components/schemas/SharedDayOfWeek'
        hours:
          nullable: true
          description: The hours of the day the voucher is valid for
          type: object
          properties:
            from:
              description: The time the voucher is valid from
              type: string
              format: time
            to:
              description: The time the voucher is valid to
              type: string
              format: time
        schedules:
          nullable: true
          description: |
            Day-of-week and/or time-window restrictions. A voucher is redeemable when the redemption moment matches at least one entry. Takes precedence over the separate `days` and `hours` fields when both are present. Omit or set to null for no schedule restriction.
          type: array
          items:
            type: object
            properties:
              day:
                description: Day of the week this entry applies to. Omit to match any day.
                allOf:
                  - $ref: '#/components/schemas/SharedDayOfWeek'
              from:
                nullable: true
                description: Start of the allowed time window (HH:mm:ss, tenant-local time)
                type: string
                example: '10:00:00'
              to:
                nullable: true
                description: |
                  End of the allowed time window (HH:mm:ss, tenant-local time). Overnight windows are supported: if `to` is less than or equal to `from`, the window is treated as spanning midnight and will be stored as two consecutive entries (e.g. `from: "22:00:00"`, `to: "02:00:00"` becomes `22:00–00:00` and `00:00–02:00`).
                type: string
                example: '14:00:00'
    VoucherUsePolicy:
      additionalProperties: false
      properties:
        type:
          description: The type of use policy
          nullable: true
          type: string
          example: unlimited
        commercialPartnership:
          description: Indicates a commercial partnership voucher
          nullable: true
          type: boolean
          example: true
        autoApplicable:
          description: Whether the voucher should be automatically applied
          nullable: true
          type: boolean
          example: true
      type: object
    VoucherValidateVouchersRequest:
      description: The vouchers validation request
      type: object
      additionalProperties: false
      required:
        - vouchers
        - customer
        - date
      properties:
        vouchers:
          type: array
          items:
            type: object
            properties:
              plainCode:
                description: Plain voucher code
                type: string
                nullable: true
              category:
                description: The category is used to resolve a voucher when no code is provided. This is mutually exclusive with the voucher code. The service applies the latest valid voucher in the given category (e.g., "claimed").
                type: string
                nullable: true
        customer:
          $ref: '#/components/schemas/VoucherCustomer'
        order:
          $ref: '#/components/schemas/VoucherOrder'
        restaurant:
          $ref: '#/components/schemas/VoucherRestaurant'
        date:
          description: The order placed date or scheduled date for pre-orders in UTC
          type: string
          format: date-time
    VoucherValidateVouchersResponse:
      description: The vouchers validation response
      type: object
      additionalProperties: false
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/VoucherVoucherValidity'
    VoucherValidationDetails:
      description: The voucher details
      type: object
      additionalProperties: false
      properties:
        code:
          description: The voucher code
          type: string
        displayName:
          description: Voucher human readable name
          type: string
        discount:
          $ref: '#/components/schemas/VoucherVoucherDiscount'
        usage:
          $ref: '#/components/schemas/VoucherVoucherUsage'
        discountApplied:
          description: The voucher discount amount applied to the order
          type: integer
          minimum: 0
        expiryDate:
          description: The end date of the voucher
          type: string
          format: date-time
        minimumOrderValue:
          description: The minimum basket value required for the voucher to be valid, in minor units (e.g. 1000 = £10.00). Null if no minimum applies.
          type: integer
          format: int32
          nullable: true
        program:
          description: Sequential program information. Present only when the voucher belongs to a program. Null for plain vouchers.
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/VoucherValidationProgram'
    VoucherValidationProgram:
      description: Sequential program information associated with a voucher.
      additionalProperties: false
      type: object
      properties:
        sequenceNumber:
          description: The position of this voucher within its sequence (e.g. 2 of 3 - for sequential programs).
          type: integer
          format: int32
          nullable: true
        id:
          description: The identifier of the program that generated this voucher.
          type: string
          nullable: true
    VoucherValidity:
      additionalProperties: false
      properties:
        ValidOnDays:
          nullable: true
          items:
            $ref: '#/components/schemas/VoucherDayOfWeek'
          description: The days of the week the voucher is valid on
          type: array
        MinimumSpend:
          nullable: true
          description: The minimum spend to use the voucher
          format: decimal
          type: number
        EndDate:
          nullable: true
          description: The end date of the voucher
          format: date-time
          type: string
        RestrictedToConsumerStatus:
          nullable: true
          description: Whether the voucher is restricted to new customers, returning customers etc
          oneOf:
            - $ref: '#/components/schemas/VoucherConsumerStatus'
        OrderNumberValidity:
          nullable: true
          description: The number of orders a customer has placed to satisfy the requirements of the voucher
          oneOf:
            - $ref: '#/components/schemas/VoucherOrderNumberValidity'
        ServiceType:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/VoucherServiceType'
        DeliveryModel:
          nullable: true
          format: enum
          description: The delivery model for the voucher
          enum:
            - Marketplace
            - Logistics
          type: string
        PostCode:
          nullable: true
          description: The post code applicable to the order
          type: string
        StartDate:
          nullable: true
          description: The start date of the voucher
          format: date-time
          type: string
        Platform:
          nullable: true
          description: The order platform using the voucher
          type: string
        RestaurantBrands:
          nullable: true
          description: The restaurant brands the voucher is restricted to
          oneOf:
            - $ref: '#/components/schemas/VoucherRestaurantBrands'
        IncludeRestaurantIds:
          nullable: true
          items:
            type: string
          description: The restaurant ids the voucher is valid for
          type: array
        ExcludeRestaurantIds:
          nullable: true
          items:
            type: string
          description: The restaurant ids the voucher is not valid for
          type: array
        ValidToHour:
          nullable: true
          description: Whether time the voucher is valid to
          format: time-span
          type: string
        ValidFromHour:
          nullable: true
          description: Whether time the voucher is valid from
          format: time-span
          type: string
        PaymentOptionTypes:
          nullable: true
          items:
            type: string
          description: The payment options the voucher is restricted to
          type: array
        CuisineIds:
          nullable: true
          items:
            type: string
          description: The cuisine ids the voucher is valid for
          type: array
      type: object
    VoucherVoucher:
      additionalProperties: false
      properties:
        CodeType:
          $ref: '#/components/schemas/VoucherCodeType'
        Lock:
          nullable: true
          description: If the voucher is locked and what it is locked to
          oneOf:
            - $ref: '#/components/schemas/VoucherVoucherLock'
        Code:
          nullable: true
          description: The voucher code
          type: string
        PaymentOptionTypes:
          nullable: true
          items:
            type: string
          description: The payment options the voucher is restricted to
          type: array
        Created:
          description: The created time (UTC) of the voucher
          format: date-time
          type: string
        CreatedBy:
          nullable: true
          description: The creator of the voucher
          type: string
        Id:
          description: The voucher id
          format: int32
          type: integer
      type: object
    VoucherVoucherDiscount:
      description: The voucher discount details
      additionalProperties: false
      type: object
      properties:
        amount:
          description: The amount of discount in minor units (e.g. 1000 cents = $10)
          type: integer
          format: int32
        type:
          description: The type of discount
          type: string
          format: enum
          enum:
            - absolute
            - percentage
            - deliveryFee
        amountCap:
          description: The discount cap for percentage vouchers
          type: integer
          format: int32
    VoucherVoucherEligibility:
      type: object
      additionalProperties: false
      description: Eligibility settings for voucher redemption.
      properties:
        targetingExpression:
          description: Expression to represent the eligibility criteria for users.
          nullable: true
          type: string
    VoucherVoucherGroup:
      additionalProperties: false
      properties:
        Id:
          description: The Id of the voucher group
          format: int32
          type: integer
        Validity:
          nullable: true
          description: The parameters that determine the validity of the voucher group
          oneOf:
            - $ref: '#/components/schemas/VoucherValidity'
        StaticCode:
          nullable: true
          description: The static code of the voucher group (will be normalised as part of the creation)
          type: string
        Source:
          nullable: true
          description: The source system creating the voucher group
          type: string
        CreatedBy:
          nullable: true
          description: The creator of the voucher group
          type: string
        Hidden:
          description: Whether the voucher group is flagged as hidden
          type: boolean
        Discount:
          nullable: true
          description: The details of the discount (amount / type etc)
          oneOf:
            - $ref: '#/components/schemas/VoucherDiscount'
        Inactive:
          description: Whether the voucher group is flagged as inactive
          type: boolean
        Archived:
          description: Whether the voucher group is flagged as archived
          type: boolean
        Updated:
          description: The updated time (UTC) of the voucher group
          format: date-time
          type: string
        GroupType:
          $ref: '#/components/schemas/VoucherGroupType'
        Name:
          nullable: true
          description: The name of the voucher group
          type: string
        Created:
          description: The created time (UTC) of the voucher group
          format: date-time
          type: string
      type: object
    VoucherVoucherHolder:
      additionalProperties: false
      type: object
      properties:
        globalUserId:
          nullable: true
          description: The user's globally unique ID. Must provide either global user id or user id.
          type: string
        userId:
          nullable: true
          description: The user's unique ID. Must provide either user id or global user id.
          type: string
    VoucherVoucherLock:
      additionalProperties: false
      properties:
        RestaurantId:
          description: The restaurant id
          format: int32
          type: integer
        OrderId:
          nullable: true
          description: The Order Id the voucher is locked to
          type: string
        Locked:
          nullable: true
          description: The UTC date it was locked
          format: date-time
          type: string
        ConsumerStatus:
          nullable: true
          description: The Customer Status (i.e. new customers, returning customers etc)
          oneOf:
            - $ref: '#/components/schemas/VoucherConsumerStatus'
        OrderPlacedDateWithUtcOffset:
          nullable: true
          description: The order placed date
          format: date-time
          type: string
        CuisinesIds:
          nullable: true
          items:
            type: string
          description: The number of orders
          type: array
        CustomerId:
          nullable: true
          description: The Customer Id the voucher is locked to
          type: string
        Consumed:
          nullable: true
          description: The UTC date it was consumed
          format: date-time
          type: string
        State:
          $ref: '#/components/schemas/VoucherVoucherStates'
        ServiceType:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/VoucherServiceType'
        VoucherId:
          description: The voucher id
          format: int32
          type: integer
        DiscountApplied:
          description: The Discount Applied
          format: decimal
          type: number
        PostCode:
          nullable: true
          description: The post code
          type: string
        Platform:
          nullable: true
          description: The order platform
          type: string
        OrderAmount:
          description: The order amount
          format: decimal
          type: number
        PaymentOptionType:
          nullable: true
          description: The payment option
          type: string
        NumberOfOrders:
          nullable: true
          description: The number of orders
          format: int32
          type: integer
        DeliveryFee:
          description: The delivery fee
          format: decimal
          type: number
        Allocations:
          nullable: true
          description: Funding allocations for the voucher. Absent when no co-funding applies.
          type: array
          items:
            type: object
            properties:
              Amount:
                description: Funding amount in major currency units (e.g. 14.00).
                format: decimal
                type: number
              Type:
                description: Funding source. Possible values are "corporate" or "partner".
                type: string
                enum:
                  - corporate
                  - partner
      type: object
    VoucherVoucherMetadata:
      additionalProperties: false
      type: object
      description: Metadata associated with a voucher.
      properties:
        categories:
          description: An array of voucher categories.
          nullable: true
          type: array
          items:
            enum:
              - topup
            type: string
    VoucherVoucherResponse:
      additionalProperties: false
      type: object
      properties:
        name:
          description: The voucher name.
          type: string
        activatedDate:
          description: The voucher activation date and time (UTC) of the voucher.
          format: date-time
          type: string
        deactivatedDate:
          nullable: true
          description: The voucher deactivation date and time (UTC) of the voucher.
          format: date-time
          type: string
        restrictions:
          description: Voucher restrictions.
          type: object
          properties:
            timeline:
              description: The timeline restrictions of the voucher.
              type: object
              properties:
                endDate:
                  description: The end date and time (UTC) of the voucher.
                  format: date-time
                  type: string
        redemptions:
          nullable: true
          description: Voucher redemptions.
          type: object
          properties:
            totalCount:
              description: The total number of redemptions for the voucher.
              type: integer
    VoucherVoucherStates:
      x-enumNames:
        - Available
        - Locked
        - Consumed
      description: The current state
      enum:
        - 0
        - 1
        - 2
      type: integer
    VoucherVoucherType:
      x-enumNames:
        - Absolute
        - Percentage
        - DeliveryFee
      description: Type of voucher
      enum:
        - 0
        - 1
        - 2
      type: integer
    VoucherVoucherUsage:
      description: The voucher usage details
      type: object
      additionalProperties: false
      properties:
        type:
          description: The voucher usage type
          type: string
          enum:
            - unlimited
            - limited
    VoucherVoucherValidity:
      description: The voucher validity
      type: object
      additionalProperties: false
      required:
        - plainCode
      properties:
        plainCode:
          description: The unmodified code equals to code specified in the request
          type: string
          nullable: true
        category:
          description: The category of the voucher
          type: string
          nullable: true
        details:
          $ref: '#/components/schemas/VoucherValidationDetails'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/VoucherError'
    VoucherVouchersResponse:
      additionalProperties: false
      type: object
      properties:
        data:
          items:
            $ref: '#/components/schemas/VoucherVoucherResponse'
          description: An array of vouchers distributed to the customer.
          type: array
    VoucherClaimsVoucherClaim:
      type: object
      additionalProperties: false
      properties:
        allowedActions:
          type: array
          description: Actions the consumer can take on this claim.
          items:
            enum:
              - applyClaim
              - autoApplyClaim
              - redeemVoucher
            type: string
          example:
            - redeemVoucher
        constraints:
          type: array
          description: Current state constraints of the claim.
          items:
            enum:
              - VOUCHER_CLAIMED
              - VOUCHER_REDEEMED
              - VOUCHER_EXPIRED
              - PROGRAM_QUOTA_REACHED
              - PROGRAM_EXPIRED
              - PROGRAM_PAUSED
              - USER_NOT_ELIGIBLE
              - USER_NOT_AUTHENTICATED
            type: string
          example:
            - VOUCHER_CLAIMED
        program:
          description: The voucher program associated with this claim.
          $ref: '#/components/schemas/VoucherClaimsVoucherClaimProgram'
        vouchers:
          type: array
          description: The sequential vouchers in the program, ordered by sequence number.
          items:
            $ref: '#/components/schemas/VoucherClaimsVoucherClaimSequenceVoucher'
    VoucherClaimsVoucherClaimProgram:
      type: object
      additionalProperties: false
      required:
        - id
        - endDate
        - voucherTemplates
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier of the voucher program.
          example: 112f0437-daea-468f-a46a-7cda42a27d22
        endDate:
          type: string
          format: date-time
          description: The end date (UTC) of the voucher program.
          example: '2035-11-17T00:00:00Z'
        voucherTemplates:
          type: array
          description: The voucher templates available for this program.
          items:
            $ref: '#/components/schemas/VoucherClaimsVoucherClaimSequenceTemplate'
    VoucherClaimsVoucherClaimSequenceDiscount:
      type: object
      additionalProperties: false
      required:
        - type
        - amount
        - usageCount
        - used
      properties:
        type:
          description: The discount type.
          enum:
            - absolute
            - percentage
          type: string
          example: absolute
        amount:
          type: integer
          format: int32
          description: |
            The discount value. For `absolute` type, the amount in minor currency units (e.g. 1000 = £10.00). For `percentage` type, the percentage value (e.g. 10 = 10%).
          example: 1000
        amountCap:
          type: integer
          format: int32
          description: |
            Maximum discount cap in minor currency units (e.g. 1000 = £10.00) for percentage discounts. Always returned for percentage discounts, using the tenant amount cap as a fallback when no template or claimed-voucher cap is configured. Omitted for absolute discounts.
          example: 1000
        usageCount:
          type: integer
          format: int32
          description: The total number of times this voucher can be redeemed.
          example: 1
        used:
          type: integer
          format: int32
          description: The number of times this voucher has already been redeemed.
          example: 0
    VoucherClaimsVoucherClaimSequenceTemplate:
      description: A consumer-safe voucher template configuration within a program.
      type: object
      additionalProperties: false
      required:
        - discount
      properties:
        sequenceNumber:
          type: integer
          format: int32
          nullable: true
          description: The sequence position of this voucher template within the program.
          example: 1
        discount:
          description: The discount configuration for this voucher template.
          $ref: '#/components/schemas/VoucherClaimsVoucherClaimSequenceTemplateDiscount'
        minimumBasketTotal:
          type: integer
          format: int32
          description: |
            Minimum basket total in minor currency units (e.g. 1000 = £10.00) required for the voucher. Omitted when the voucher template has no minimum basket restriction.
          example: 1500
    VoucherClaimsVoucherClaimSequenceTemplateDiscount:
      description: Discount configuration for a voucher template.
      type: object
      additionalProperties: false
      required:
        - type
        - amount
        - usageCount
      properties:
        type:
          type: string
          enum:
            - absolute
            - percentage
          description: The type of discount.
          example: percentage
        amount:
          type: integer
          format: int32
          description: |
            The discount value. For absolute discounts, the amount is in minor currency units (e.g. 1000 = £10.00). For percentage discounts, the amount is the percentage value.
          example: 10
        amountCap:
          type: integer
          format: int32
          description: |
            Maximum discount cap in minor currency units (e.g. 1000 = £10.00) for percentage discounts. Always returned for percentage discounts, using the tenant amount cap as a fallback when no template cap is configured. Omitted for absolute discounts.
          example: 1000
        usageCount:
          type: integer
          format: int32
          description: The total number of times this voucher template can be redeemed.
          default: 1
          example: 1
    VoucherClaimsVoucherClaimSequenceVoucher:
      type: object
      additionalProperties: false
      properties:
        sequenceNumber:
          type: integer
          format: int32
          nullable: true
          description: The sequence position of this voucher within the program.
          example: 1
        endDate:
          type: string
          format: date-time
          description: The end date (UTC) of this individual voucher.
          example: '2035-11-17T00:00:00Z'
        minimumBasketTotal:
          type: integer
          format: int32
          description: |
            Minimum basket total in minor currency units required for the voucher. Omitted when the voucher has no minimum basket restriction.
          example: 1500
        discount:
          description: The discount applied by this voucher.
          $ref: '#/components/schemas/VoucherClaimsVoucherClaimSequenceDiscount'
    VoucherClaimsVoucherClaimsResponse:
      type: object
      additionalProperties: false
      properties:
        voucherClaims:
          type: array
          description: The list of voucher claims for the consumer.
          items:
            $ref: '#/components/schemas/VoucherClaimsVoucherClaim'
    VoucherClaimsApplyVoucherClaimRequest:
      required:
        - programId
      properties:
        programId:
          description: A unique identifier associated with a specific program
          type: string
      example:
        programId: 3f34b749-05a8-4335-a97a-3a8794a41098
      type: object
      additionalProperties: false
    VoucherProgramsAutoClaim:
      description: Auto-claim configuration for the voucher program
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether auto-claiming is enabled for this program
          example: true
        restrictedPlatforms:
          type: array
          description: Platforms on which auto-claiming is restricted
          items:
            type: string
          example: []
    VoucherProgramsChangeHistoryEntry:
      description: An entry in the change history of a voucher program
      type: object
      required:
        - changedBy
      properties:
        changedBy:
          type: string
          description: Username of who made the change
          example: john.smith
        lastChangedDate:
          type: string
          format: date-time
          description: Date when the change was made in ISO 8601 Zulu format
          example: '2024-01-15T10:30:00Z'
    VoucherProgramsCreateProgramRequest:
      description: Request body for creating a new voucher program
      type: object
      properties:
        name:
          type: string
          description: The name of the voucher program
          example: Weekday Lunch Offer
        displayName:
          type: string
          nullable: true
          description: The display name shown to users
          example: Weekday Lunch Offer
        startDate:
          type: string
          format: date-time
          description: Start date of the program in ISO 8601 UTC format
          example: '2025-01-01T00:00:00Z'
        endDate:
          type: string
          format: date-time
          nullable: true
          description: End date of the program in ISO 8601 UTC format. Omit for open-ended programs.
          example: '2025-12-31T23:59:59Z'
        paused:
          type: boolean
          description: Whether the program is paused
          example: false
        rank:
          type: integer
          nullable: true
          description: Program ranking or priority. Higher values take precedence.
          example: 5
        eligibility:
          $ref: '#/components/schemas/VoucherProgramsProgramEligibility'
        quota:
          $ref: '#/components/schemas/VoucherProgramsProgramQuota'
        autoClaim:
          $ref: '#/components/schemas/VoucherProgramsAutoClaim'
        activationCode:
          type: string
          nullable: true
          description: Optional static activation code required to claim the voucher
          example: null
        voucherTemplates:
          type: array
          description: |
            One or more voucher templates. Sequential programs use multiple templates (one per step); all other program types use a single template.
          items:
            type: object
            required:
              - discount
            properties:
              sequenceNumber:
                type: integer
                nullable: true
                description: Position of this template in the sequence (starting at 1). Required when the program has more than one template.
                example: 1
              discount:
                $ref: '#/components/schemas/VoucherProgramsVoucherTemplateDiscount'
              restrictions:
                $ref: '#/components/schemas/VoucherProgramsVoucherTemplateRestrictions'
    VoucherProgramsCreateProgramResponse:
      description: Response schema for a created voucher program
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier of the created voucher program
          example: 123e4567-e89b-12d3-a456-426614174000
        status:
          type: string
          enum:
            - draft
            - published
          description: The overall status of the program
          example: draft
        allowedActions:
          type: array
          description: List of allowed actions on the program
          items:
            type: string
            enum:
              - edit
              - submit
              - approve
              - reject
              - publish
          example:
            - edit
        workflow:
          $ref: '#/components/schemas/VoucherProgramsProgramWorkflow'
        published:
          $ref: '#/components/schemas/VoucherProgramsProgramDetails'
          nullable: true
        draft:
          $ref: '#/components/schemas/VoucherProgramsProgramDetails'
          nullable: true
    VoucherProgramsEligibilityByAudience:
      description: Eligibility based on audience
      type: object
      required:
        - audienceId
      example:
        type: audience
        audienceId: fr71w51c-13c6-148e-a363-68478b490c2f
        allRegistered: true
        isFeatureFlagControlled: false
      properties:
        type:
          type: string
          nullable: true
          description: The eligibility type (e.g. audience-based or segment-based)
        audienceId:
          type: string
          nullable: true
          description: The audience identifier
        allRegistered:
          type: boolean
          nullable: true
          description: Whether all registered users are eligible
        isFeatureFlagControlled:
          type: boolean
          description: Whether eligibility is controlled by a feature flag
    VoucherProgramsEligibilityBySegment:
      description: Eligibility based on segment
      type: object
      required:
        - targetingExpression
      example:
        type: segment
        targetingExpression: Lifecycle Base Segment = prospect
        isFeatureFlagControlled: false
      properties:
        type:
          type: string
          nullable: true
          description: The eligibility type (e.g. audience-based or segment-based)
        targetingExpression:
          type: string
          nullable: true
          description: Segment targeting expression
        isFeatureFlagControlled:
          type: boolean
          description: Whether eligibility is controlled by a feature flag
    VoucherProgramsJsonPatchOperation:
      description: A single JSON Patch operation
      type: object
      required:
        - op
        - path
      properties:
        op:
          type: string
          description: The operation to perform
          enum:
            - add
            - remove
            - replace
            - test
          example: test
        path:
          type: string
          description: A JSON Pointer path to the target location
          example: /version
        value:
          description: The value to use for the operation (required for add, test)
    VoucherProgramsPatchDraftProgramResponse:
      description: Response returned after successfully patching a voucher program draft
      type: object
      required:
        - version
        - voucherTemplates
        - changeHistory
      properties:
        version:
          type: integer
          description: The current version of the program draft, incremented after each successful update
          example: 2
        voucherTemplates:
          type: array
          description: The list of voucher templates in the program
          items:
            $ref: '#/components/schemas/VoucherProgramsVoucherTemplate'
        changeHistory:
          type: array
          description: Ordered list of changes made to the program
          items:
            $ref: '#/components/schemas/VoucherProgramsChangeHistoryEntry'
    VoucherProgramsProgramDetails:
      description: Program details (draft or published version)
      type: object
      properties:
        version:
          type: integer
          description: Version number of the program
          example: 1
        tenant:
          type: string
          description: The tenant identifier
          example: uk
        paused:
          type: boolean
          description: Whether the program is paused
          example: false
        name:
          type: string
          description: The name of the voucher program
          example: Testing
        rank:
          type: integer
          nullable: true
          description: Priority rank of the program
          example: 1
        eligibility:
          $ref: '#/components/schemas/VoucherProgramsProgramEligibility'
        quota:
          $ref: '#/components/schemas/VoucherProgramsProgramQuota'
        autoClaim:
          $ref: '#/components/schemas/VoucherProgramsAutoClaim'
        startDate:
          type: string
          format: date-time
          description: Start date of the program in ISO 8601 Zulu format
          example: '2024-06-01T00:00:00Z'
        endDate:
          type: string
          format: date-time
          description: End date of the program in ISO 8601 Zulu format
          example: '2024-08-31T23:59:59Z'
        voucherTemplates:
          type: array
          description: List of voucher templates associated with the program
          items:
            $ref: '#/components/schemas/VoucherProgramsVoucherTemplate'
        changeHistory:
          type: array
          description: History of changes made to the program
          items:
            $ref: '#/components/schemas/VoucherProgramsChangeHistoryEntry'
        activationCode:
          type: string
          nullable: true
          description: Optional activation code required to claim the voucher
          example: null
    VoucherProgramsProgramEligibility:
      description: Eligibility criteria for the voucher program
      oneOf:
        - $ref: '#/components/schemas/VoucherProgramsEligibilityByAudience'
        - $ref: '#/components/schemas/VoucherProgramsEligibilityBySegment'
    VoucherProgramsProgramQuota:
      description: Quota settings for the voucher program
      type: object
      properties:
        claimsMaxCount:
          type: integer
          nullable: true
          description: Maximum number of claims allowed
          example: null
        claimsConsumedCount:
          type: integer
          description: Number of claims already consumed
          default: 0
          example: 0
    VoucherProgramsProgramWorkflow:
      description: Workflow status information for the voucher program
      type: object
      properties:
        status:
          type: string
          enum:
            - editing
            - submitted
            - approved
            - published
          description: The current workflow status
          example: editing
        created:
          $ref: '#/components/schemas/VoucherProgramsWorkflowAction'
        submitted:
          $ref: '#/components/schemas/VoucherProgramsWorkflowAction'
          nullable: true
        rejected:
          $ref: '#/components/schemas/VoucherProgramsWorkflowAction'
          nullable: true
        approved:
          $ref: '#/components/schemas/VoucherProgramsWorkflowAction'
          nullable: true
        published:
          $ref: '#/components/schemas/VoucherProgramsWorkflowAction'
          nullable: true
    VoucherProgramsVoucherPartners:
      description: Partner restrictions for the voucher
      type: object
      properties:
        exclude:
          type: boolean
          description: Whether to exclude the list (true) or include only the list (false)
          default: false
          example: false
        listId:
          type: string
          nullable: true
          description: The partner list identifier
          example: null
    VoucherProgramsVoucherSchedule:
      description: A single schedule entry restricting redemption to a specific day and/or time window
      type: object
      properties:
        day:
          description: The day of the week this schedule entry applies to. Omit to match any day.
          allOf:
            - $ref: '#/components/schemas/SharedDayOfWeek'
        from:
          nullable: true
          description: Start of the allowed time window (HH:mm:ss, tenant-local time)
          type: string
          example: '10:00:00'
        to:
          nullable: true
          description: |
            End of the allowed time window (HH:mm:ss, tenant-local time). Overnight windows are supported: if `to` is less than or equal to `from`, the window is treated as spanning midnight and will be stored as two consecutive entries (e.g. `from: "22:00:00"`, `to: "02:00:00"` becomes `22:00–00:00` and `00:00–02:00`).
          type: string
          example: '14:00:00'
    VoucherProgramsVoucherTemplate:
      description: A voucher template configuration within a program
      type: object
      required:
        - discount
        - restrictions
      properties:
        sequenceNumber:
          type: integer
          nullable: true
          description: The sequence number of this template within the program
          example: null
        discount:
          $ref: '#/components/schemas/VoucherProgramsVoucherTemplateDiscount'
        restrictions:
          $ref: '#/components/schemas/VoucherProgramsVoucherTemplateRestrictions'
        categories:
          type: array
          nullable: true
          description: Categories this voucher template belongs to
          items:
            type: string
          example:
            - claimed
    VoucherProgramsVoucherTemplateDiscount:
      description: Discount configuration for voucher
      type: object
      required:
        - type
        - amount
      properties:
        type:
          type: string
          enum:
            - absolute
            - percentage
          description: The type of discount
          example: absolute
        amount:
          type: integer
          description: The discount value in minor currency units (for absolute) or percent (for percentage)
          example: 500
        amountCap:
          type: integer
          nullable: true
          description: Maximum discount cap in minor currency units (applies to percentage discounts)
          example: 1000
    VoucherProgramsVoucherTemplateRestrictions:
      description: Restrictions applied to the voucher
      type: object
      nullable: true
      properties:
        minimumBasketTotal:
          type: integer
          nullable: true
          description: Minimum basket total in minor currency units
          example: null
        timeline:
          $ref: '#/components/schemas/VoucherProgramsVoucherTimeline'
        serviceType:
          type: string
          enum:
            - collection
            - delivery
          description: The service type this voucher applies to
          example: collection
        partners:
          $ref: '#/components/schemas/VoucherProgramsVoucherPartners'
    VoucherProgramsVoucherTimeline:
      description: Timeline restrictions for the voucher
      type: object
      properties:
        duration:
          type: string
          nullable: true
          description: Duration in TimeSpan format (e.g. "7.00:00:00" for 7 days)
          example: 7.00:00:00
        endDate:
          type: string
          format: date-time
          nullable: true
          description: End date of the voucher validity
          example: null
        schedules:
          nullable: true
          description: |
            Day-of-week and/or time-window restrictions. A voucher is redeemable when the redemption moment matches at least one entry. Omit or set to null for no schedule restriction.
          type: array
          items:
            $ref: '#/components/schemas/VoucherProgramsVoucherSchedule'
          example:
            - day: monday
              from: '10:00:00'
              to: '14:00:00'
            - day: friday
              from: '10:00:00'
              to: '14:00:00'
    VoucherProgramsWorkflowAction:
      description: Workflow action details
      type: object
      properties:
        date:
          type: string
          format: date-time
          nullable: true
          description: Date of the workflow action
          example: null
        author:
          type: string
          nullable: true
          description: Author of the workflow action
          example: null
        version:
          type: integer
          nullable: true
          description: Version of the program at the time of this action
          example: null
    WebhooksCallbacksExternalRequestResponse:
      properties:
        message:
          description: Request response message
          type: string
        status:
          description: Indicates success or failure of async webhook request
          type: string
          format: enum
          enum:
            - Success
            - Failure
        data:
          description: Request response details
          format: binary
          type: string
      type: object
      example:
        message: Success
        status: Success
    Zoneprofile400ZoneProfileErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Invalid Request
          type: string
        error:
          description: Error Title
          example: Invalid Request
          type: string
      type: object
    Zoneprofile401ZoneProfileErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Unauthorized Request
          type: string
        error:
          description: Error Title
          example: Unauthorized Request
          type: string
      type: object
    Zoneprofile404ZoneProfileErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Zone Profile Settings not found
          type: string
        error:
          description: Error Title
          example: Zone Profile Settings not found
          type: string
      type: object
    Zoneprofile500ZoneProfileErrorResponse:
      description: The error object returned when an operation fails
      properties:
        message:
          description: Error Message Text
          example: Internal Server Error
          type: string
        error:
          description: Error Title
          example: Internal Server Error
          type: string
      type: object
    ZoneprofileBenderFlexStateType:
      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
    ZoneprofileZoneProfile:
      description: The zone profile object for a given delivery zone.
      properties:
        averageAssignableJobLoad:
          format: double
          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
          type: number
        ema:
          format: integer
          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
          type: number
        bender:
          description: Bender On/Off object
          properties:
            enabled:
              description: Bender Enabled/Disabled status
              type: boolean
          type: object
        zoneId:
          description: Zone profile delivery zone id.
          example: 53c3afb5-fcs5-4941-be6d-2179f812sc8d
          type: string
        flexStateType:
          $ref: '#/components/schemas/ZoneprofileBenderFlexStateType'
      type: object
  responses:
    400BadRequest:
      description: Bad Request. The server cannot or will not process the request due to something that is perceived to be a client error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/4XxErrorSchema'
          example:
            fault:
              traceId: H3TKh4QSJUSwVBCBqEtkKw==
              faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
              errors:
                - description: Bad Request. The server cannot or will not process the request due to something that is perceived to be a client error.
                  errorCode: ERR400
    401UnauthorizedResponse:
      description: Unauthorized. The client did not provide an authentication token or the token was invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/4XxErrorSchema'
          example:
            fault:
              traceId: H3TKh4QSJUSwVBCBqEtkKw==
              faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
              errors:
                - description: Unauthorized. The client did not provide an authentication token or the token was invalid.
                  errorCode: ERR401
    403ForbiddenResponse:
      description: Forbidden. The client is not allowed to perform this action
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/4XxErrorSchema'
          example:
            fault:
              traceId: H3TKh4QSJUSwVBCBqEtkKw==
              faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
              errors:
                - description: Forbidden
    404NotFoundResponse:
      description: Not Found. The server cannot find the requested resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/4XxErrorSchema'
          example:
            fault:
              traceId: H3TKh4QSJUSwVBCBqEtkKw==
              faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
              errors:
                - description: Not Found. The server cannot find the requested resource.
                  errorCode: ERR404
    405MethodNotAllowed:
      description: Method Not Allowed. The method received in the request-line is known by the origin server but not supported by the target resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/4XxErrorSchema'
          example:
            fault:
              traceId: H3TKh4QSJUSwVBCBqEtkKw==
              faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
              errors:
                - description: Method Not Allowed. The method received in the request-line is known by the origin server but not supported by the target resource.
                  errorCode: ERR405
    409Conflict:
      description: Conflict. The request could not be completed due to a conflict with the current state of the target resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/4XxErrorSchema'
          example:
            fault:
              traceId: H3TKh4QSJUSwVBCBqEtkKw==
              faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
              errors:
                - description: Conflict. The request could not be completed due to a conflict with the current state of the target resource.
                  errorCode: ERR409
    500ErrorResponse:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/500ErrorSchema'
          example:
            fault:
              traceId: H3TKh4QSJUSwVBCBqEtkKw==
              faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
              errors:
                - description: Internal Server Error
    503ServiceUnavailableResponse:
      headers:
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      description: Service Unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/5XxErrorSchema'
          example:
            fault:
              traceId: H3TKh4QSJUSwVBCBqEtkKw==
              faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
              errors:
                - description: Service Unavailable
    JetConnectMenusUtfConnectorBadRequestResponse:
      description: The request is malformed, needs adjusting
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorErrorResponse'
    JetConnectMenusUtfConnectorForbiddenResponse:
      description: An aspect of the request is forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorErrorResponse'
    JetConnectMenusUtfConnectorServerErrorResponse:
      description: The request is okay, but upstream communication failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JetConnectMenusUtfConnectorErrorResponse'
    JetConnectOrderReportingConnectorSimpleOrdersResponse:
      description: Returns information about orders.
      headers:
        cache-control:
          $ref: '#/components/headers/CacheControl'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/JetConnectOrderReportingConnectorOrderDetails'
          examples:
            failures:
              value:
                - error:
                    category: Edge Validation
                    errorID: 46b5465f-33ed-4eab-aeb9-fa0d034d274b
                    errorMessage: 'validation error: top level item: {name: "Double Sausage and Egg McMuffin® Meal", reference: "a4d7c26b-8dcd-5303-b377-d9ee7d20616c"} not present in restaurant''s menu'
                    errorCode: UNKNOWN
                    resolution: ''
                    matchedRegex: ''
                    errorName: Edge Validation
                    level: BRAND
                  location:
                    id: '123544'
                    name: McDonald's® - Stevenage II
                    reference: '17529'
                  orderID: cltiw3ge0eo2mto9v2sirg
                  thirdPartyOrderReference: abcde12345
                  placedAt: '2021-12-10T09:24:49Z'
                  sendToPosStatus: failure
                  status: failure
                - error:
                    category: POS Authentication
                    errorCode: ''
                    errorID: 6a74daf4-7848-487d-ba88-f9003e1a955c
                    errorMessage: 'The request sent to the POS is malformed, contact the Flyt dev team for support. Original POS message: Response HTTP Status: 406. Response error key: client.unacceptable_content_type.'
                    errorName: Malformed Request
                    level: BRAND
                    matchedRegex: '[Mm]alformed'
                    resolution: Not Actionable.
                  location:
                    id: '126291'
                    name: McDonald's® - Oldbury, Birchley Island
                    reference: '19650'
                  orderID: 8it0oznsbk2g52hynbgtyg
                  placedAt: '2021-12-10T09:11:22.8775321Z'
                  sendToPosStatus: failure
                  status: failure
                  thirdPartyOrderReference: '1493555166'
                - error:
                    category: POS Authentication
                    errorCode: ''
                    errorID: 6a74daf4-7848-487d-ba88-f9003e1a955c
                    errorMessage: 'The request sent to the POS is malformed, contact the Flyt dev team for support. Original POS message: Response HTTP Status: 406. Response error key: client.unacceptable_content_type.'
                    errorName: Malformed Request
                    level: BRAND
                    matchedRegex: '[Mm]alformed'
                    resolution: Not Actionable.
                  location:
                    id: '125941'
                    name: McDonald's® - North Moor Road
                    reference: '19646'
                  orderID: j5jm3kcfvksb0th7zfovrg
                  placedAt: '2021-12-09T13:58:46.866209Z'
                  sendToPosStatus: failure
                  status: failure
                  thirdPartyOrderReference: '1492655491'
            successes:
              value:
                - location:
                    id: '123358'
                    name: McDonald's® - Hamilton Palace
                    reference: '17573'
                  orderID: xmvvn5xf8u2nfmmsz0sfza
                  placedAt: '2021-12-09T14:01:39.9309303Z'
                  sendToPosStatus: ''
                  status: success
                  thirdPartyOrderReference: '1492656946'
                - location:
                    id: '125209'
                    name: McDonald's® - Milngavie
                    reference: '18940'
                  orderID: gzrtpzrtqkyo6kwimnjqiq
                  placedAt: '2021-12-09T13:52:00.9318278Z'
                  sendToPosStatus: ''
                  status: success
                  thirdPartyOrderReference: '1492651998'
                - location:
                    id: '124281'
                    name: McDonald's® - Gallagher Retail Park Dt
                    reference: '17680'
                  orderID: pd716rg9ce2udg4ejv3m8w
                  placedAt: '2021-12-09T13:50:46.0250191Z'
                  sendToPosStatus: ''
                  status: success
                  thirdPartyOrderReference: '1492651279'
    JetConnectOrderReportingConnectorSingleOrderResponse:
      description: Returns information about a single order.
      headers:
        cache-control:
          $ref: '#/components/headers/CacheControl'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JetConnectOrderReportingConnectorOrder'
          examples:
            failure:
              value:
                orderDetails:
                  error:
                    category: Edge Validation
                    errorCode: UNKNOWN
                    errorID: 46b5465f-33ed-4eab-aeb9-fa0d034d274b
                    errorMessage: 'validation error: top level item: {name: "Double Sausage and Egg McMuffin® Meal", reference: "a4d7c26b-8dcd-5303-b377-d9ee7d20616c"} not present in restaurant''s menu'
                    errorName: Edge Validation
                    resolution: ''
                    matchedRegex: ''
                    level: BRAND
                  location:
                    id: '123358'
                    name: McDonald's® - Hamilton Palace
                    reference: '17573'
                  orderID: cltiw3ge0eo2mto9v2sirg
                  thirdPartyOrderReference: abcde12345
                  placedAt: '2021-12-10T09:24:49Z'
                  status: failure
                  sendToPosStatus: failure
                payload: ''
                pos: int-mcdonalds
            success:
              value:
                orderDetails:
                  location:
                    id: '123358'
                    name: McDonald's® - Hamilton Palace
                    reference: '17573'
                  orderID: xmvvn5xf8u2nfmmsz0sfza
                  placedAt: '2021-12-09T14:01:39.9309303Z'
                  sendToPosStatus: ''
                  status: success
                  thirdPartyOrderReference: '1492656946'
                payload: >-
                  {"restaurant":{"key":"JE:UK:123358","tenant":"JE:UK","id":"123358"},"delivery_by_delivery_partner_order":{"id":"xmvvn5xf8u2nfmmsz0sfza","location":{"id":123358,"timezone":"Europe/London"},"driver":{"first_name":"Order","last_name":"xmvvn5xf8u2nfmmsz0sfza","phone_number":"00000000000"},"items":[{"name":"20 Chicken McNuggets® Sharebox","plu":"1420","children":[{"name":"Ketchup Dip","plu":"CHOICE|1|0;4650:10000074|1:4#Z0"},{"name":"Ketchup Dip","plu":"CHOICE|1|0;4650:10000074|2:4#Z0"},{"name":"Ketchup Dip","plu":"CHOICE|1|0;4650:10000074|3:4#Z0"},{"name":"Ketchup Dip","plu":"CHOICE|1|0;4650:10000074|4:4#Z0"}],"price":459},{"name":"Oreo® McFlurry®","plu":"6554","price":99},{"name":"Oreo® McFlurry®","plu":"6554","price":99}],"created_at":"1639058499","channel":{"id":32,"name":"Just Eat"},"collect_at":"1639058502","collection_notes":"Grey ascensos across from main on call whne outside 07934209118","kitchen_notes":"Grey ascensos across from main on call whne outside
                  07934209118","third_party_order_reference":"1492656946","total":657,"tender_type":"Just Eat","payment":{"items_in_cart":{"inc_tax":657},"adjustments":[{"name":"deliveryFee","price":{"inc_tax":350}},{"name":"serviceCharge","price":{"inc_tax":50}},{"name":"bagfee","price":{"inc_tax":10}}],"final":{"inc_tax":1067}},"delivery":{"first_name":"******","last_name":"******","phone_number":"******","line_one":"******","line_two":"******","city":"******","postcode":"******","email":"******","coordinates":{},"phone_masking_code":"******"},"extras":{"asap":"false","justEatCustomerId":"42793273","justEatOrderReference":"xmvvn5xf8u2nfmmsz0sfza"}}}
                pos: int-mcdonalds
    JetConnectRestaurantAvailabilityApiBadRequestResponse:
      description: The request is malformed, needs adjusting
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiErrorResponse'
    JetConnectRestaurantAvailabilityApiForbiddenResponse:
      description: An aspect of the request is forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiErrorResponse'
    JetConnectRestaurantAvailabilityApiInternalServerErrorResponse:
      description: The request is okay, but upstream communication failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiErrorResponse'
    JetConnectRestaurantAvailabilityApiNotFoundResponse:
      description: The restaurant was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JetConnectRestaurantAvailabilityApiErrorResponse'
    StorefrontapiBatchProductsResponse:
      headers:
        cache-control:
          schema:
            type: string
          description: Information about how the response can be cached
      description: Returns batch product details for multiple products across multiple partners.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StorefrontBatchProductsResponse'
          examples:
            allFound:
              summary: 200 OK — All products found
              description: |
                All requested products exist and are returned. The request used `responseOptions.include` with `customisations`, so the requested nested customisation collections are present in the response.
              value:
                products:
                  - partnerId: '12345'
                    id: margherita-small
                    type: product
                    name: Small (10")
                    productGroup:
                      id: pizza-margherita-123
                      name: Pizza Margherita
                    categories:
                      - id: cat-classic-pizza-id
                        name: Classic Pizzas
                        description: Stone-baked pizzas and house specials.
                        serviceTypes:
                          - delivery
                        images:
                          - url: https://example.com/images/categories/classic-pizzas.jpg
                            altText: Classic pizzas category
                    description: Perfect for one person.
                    images:
                      - url: https://example.com/images/pizza-margherita-main.jpg
                        altText: Pizza Margherita
                    currency: GBP
                    serviceTypes:
                      - delivery
                      - collection
                    price:
                      delivery:
                        isVariable: true
                        price: 630
                        customerFacingDiscount:
                          previousPrice: 700
                          discountPercentage: 10
                        partnerConfiguredDiscount:
                          offerId: db78d950-0b7d-4859-adf4-84ea19b68f23
                          description: 10% off selected items
                          previousPrice: 700
                          discountPercentage: 10
                      collection:
                        isVariable: true
                        price: 540
                        customerFacingDiscount:
                          previousPrice: 600
                          discountPercentage: 10
                        partnerConfiguredDiscount:
                          offerId: db78d950-0b7d-4859-adf4-84ea19b68f23
                          description: 10% off selected items
                          previousPrice: 600
                          discountPercentage: 10
                    gtin: '978020137962'
                    status:
                      isOffline: false
                      hasLowStock: false
                    labels:
                      - Vegetarian
                    modifierGroups:
                      - id: toppings
                        name: Extra toppings
                        choiceRules:
                          min: 0
                          max: 3
                          default: 0
                        modifiers:
                          - id: extra-cheese
                            name: Extra cheese
                            price:
                              delivery:
                                amount: 150
                              collection:
                                amount: 100
                            choiceRules:
                              min: 0
                              max: 1
                              default: 0
                            status:
                              isOffline: false
                              hasLowStock: false
                            attributes:
                              - key: allergen#milk
                                dataType: allergen
                                display:
                                  name: Milk
                                  displayText: Contains milk
                                allergen:
                                  level: contains
                                  type: milk
                                  verified: true
                                  subTypes: []
                    consent: null
                    attributes:
                      - key: energy
                        dataType: measurement
                        display:
                          name: Energy
                          displayText: 400 kcal
                        measurement:
                          unit: kcal
                          value: 400
                      - key: allergen#soya
                        dataType: allergen
                        display:
                          name: Soya
                          displayText: Contains soya
                        allergen:
                          level: contains
                          type: soya
                          verified: true
                          subTypes: []
                  - partnerId: '12345'
                    id: margherita-medium
                    type: deal
                    name: Margherita Meal Deal
                    productGroup:
                      id: pizza-margherita-123
                      name: Pizza Margherita
                    categories:
                      - id: cat-classic-pizza-id
                        name: Classic Pizzas
                        description: Stone-baked pizzas and house specials.
                        serviceTypes:
                          - delivery
                        images:
                          - url: https://example.com/images/categories/classic-pizzas.jpg
                            altText: Classic pizzas category
                    description: Pizza meal deal with a bundled drink choice.
                    images:
                      - url: https://example.com/images/pizza-margherita-main.jpg
                        altText: Pizza Margherita
                    currency: GBP
                    serviceTypes:
                      - delivery
                      - collection
                    price:
                      delivery:
                        isVariable: true
                        price: 700
                      collection:
                        isVariable: true
                        price: 600
                    gtin: '978020137963'
                    status:
                      isOffline: false
                      hasLowStock: false
                    labels:
                      - Vegetarian
                    dealGroups:
                      - id: drinks
                        name: Choose a drink
                        choiceRules:
                          min: 1
                          max: 1
                          default: 1
                        products:
                          - product:
                              partnerId: '12345'
                              id: drink-cola
                              type: product
                              name: Cola
                              productGroup:
                                id: cola-123
                                name: Cola
                              categories:
                                - id: cat-drinks-id
                                  name: Drinks
                                  description: Soft drinks and beverages.
                                  serviceTypes:
                                    - delivery
                                  images:
                                    - url: https://example.com/images/categories/drinks.jpg
                                      altText: Drinks category
                              description: 330ml canned cola.
                              images:
                                - url: https://example.com/images/drink-cola-main.jpg
                                  altText: Cola
                              currency: GBP
                              serviceTypes:
                                - delivery
                                - collection
                              price:
                                delivery:
                                  isVariable: false
                                  price: 0
                                collection:
                                  isVariable: false
                                  price: 0
                              gtin: '978020137970'
                              status:
                                isOffline: false
                                hasLowStock: false
                              labels: []
                              consent: null
                              attributes:
                                - key: energy
                                  dataType: measurement
                                  display:
                                    name: Energy
                                    displayText: 200 kcal
                                  measurement:
                                    unit: kcal
                                    value: 200
                            choiceRules:
                              min: 0
                              max: 1
                              default: 1
                    consent: null
                    attributes:
                      - key: energy
                        dataType: measurement
                        display:
                          name: Energy
                          displayText: 200 kcal
                        measurement:
                          unit: kcal
                          value: 200
                missingProducts: []
            partialWithMissingItems:
              summary: 200 OK — Some products not found
              description: |
                One product was found and another could not be resolved. The `responseOptions` object was omitted, so optional nested customisation collections are omitted from the response.
              value:
                products:
                  - partnerId: '12345'
                    id: margherita-small
                    type: product
                    name: Small (10")
                    productGroup:
                      id: pizza-margherita-123
                      name: Pizza Margherita
                    categories:
                      - id: cat-classic-pizza-id
                        name: Classic Pizzas
                        description: Stone-baked pizzas and house specials.
                        serviceTypes:
                          - delivery
                        images:
                          - url: https://example.com/images/categories/classic-pizzas.jpg
                            altText: Classic pizzas category
                    description: Perfect for one person.
                    images:
                      - url: https://example.com/images/pizza-margherita-main.jpg
                        altText: Pizza Margherita
                    currency: GBP
                    serviceTypes:
                      - delivery
                      - collection
                    price:
                      delivery:
                        isVariable: true
                        price: 700
                      collection:
                        isVariable: true
                        price: 600
                    gtin: '978020137962'
                    status:
                      isOffline: false
                      hasLowStock: false
                    labels:
                      - Vegetarian
                    consent: null
                missingProducts:
                  - partnerId: '12345'
                    productId: nonexistent-product-456
            partialWithServiceTypeFilter:
              summary: 200 OK — Service type filter removes some products
              description: |
                A service types filter was provided. Matching products are returned; products that do not belong to any of the requested service types are omitted and echoed back in the unresolved products array. The request included `customisations`, so customisation collections are returned for matching products.
              value:
                products:
                  - partnerId: '12345'
                    id: margherita-small
                    type: product
                    name: Small (10")
                    productGroup:
                      id: pizza-margherita-123
                      name: Pizza Margherita
                    categories:
                      - id: cat-classic-pizza-id
                        name: Classic Pizzas
                        description: Stone-baked pizzas and house specials.
                        serviceTypes:
                          - delivery
                        images:
                          - url: https://example.com/images/categories/classic-pizzas.jpg
                            altText: Classic pizzas category
                    description: Perfect for one person.
                    images:
                      - url: https://example.com/images/pizza-margherita-main.jpg
                        altText: Pizza Margherita
                    currency: GBP
                    serviceTypes:
                      - delivery
                    price:
                      delivery:
                        price: 999
                        isVariable: true
                    gtin: '978020137962'
                    status:
                      isOffline: false
                      hasLowStock: false
                    labels:
                      - Vegetarian
                    modifierGroups:
                      - id: toppings
                        name: Extra toppings
                        choiceRules:
                          min: 0
                          max: 3
                          default: 0
                        modifiers:
                          - id: extra-cheese
                            name: Extra cheese
                            price:
                              delivery:
                                amount: 150
                            choiceRules:
                              min: 0
                              max: 1
                              default: 0
                            status:
                              isOffline: false
                              hasLowStock: false
                    consent: null
                    attributes:
                      - key: energy
                        dataType: measurement
                        display:
                          name: Energy
                          displayText: 400 kcal
                        measurement:
                          unit: kcal
                          value: 400
                missingProducts:
                  - partnerId: '12345'
                    productId: collection-only-product-789
            noneFound:
              summary: 200 OK — No requested products resolved
              description: |
                The lookup completed successfully, but none of the requested products could be resolved. The response still returns `200` and echoes every unresolved request in `missingProducts`.
              value:
                products: []
                missingProducts:
                  - partnerId: '12345'
                    productId: nonexistent-product-456
                  - partnerId: '67890'
                    productId: nonexistent-product-789
            multipleMissing:
              summary: 200 OK — Multiple missing products from different causes
              description: |
                A mix of reasons: one partner does not exist, one product is not found under a valid partner, and a service types filter removes another. Only the successfully matched product is returned. The unresolved products array echoes back all unresolved requested products without distinguishing the cause.
              value:
                products:
                  - partnerId: '12345'
                    id: guacamole-no-variation
                    type: product
                    name: ''
                    productGroup:
                      id: guacamole-123
                      name: Guacamole
                    categories:
                      - id: cat-sides-id
                        name: Sides
                        description: Snacks, dips, and extras.
                        serviceTypes:
                          - delivery
                        images:
                          - url: https://example.com/images/categories/sides.jpg
                            altText: Sides category
                    description: Guacamole
                    images:
                      - url: https://example.com/images/guacamole-main.jpg
                        altText: Guacamole
                    currency: GBP
                    serviceTypes:
                      - delivery
                    price:
                      delivery:
                        price: 200
                        isVariable: false
                    gtin: null
                    status:
                      isOffline: false
                      hasLowStock: false
                    labels:
                      - Popular
                    consent: null
                missingProducts:
                  - partnerId: '99999'
                    productId: some-product
                  - partnerId: '12345'
                    productId: nonexistent-456
                  - partnerId: '12345'
                    productId: collection-only-789
    StorefrontapiCategoriesResponse:
      description: Returns an array of categories at the top level or the sub-categories of a given parent category.
      headers:
        cache-control:
          schema:
            type: string
            description: Information about how the response can be cached.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StorefrontCategories'
          example:
            _links:
              self:
                url: /joes-pizza-place/categories/cat-classic-pizza-id
              previous: null
              next:
                url: /joes-pizza-place/categories/cat-classic-pizza-id?after=NDMyNzQyODI3OTQw
            categories:
              - id: cat-classic-pizza-id
                name: Classic Pizzas
                description: All your favourite timeless classics.
                serviceType: delivery
                images:
                  - url: https://cdn.example.com/images/classic-pizzas.jpg
                _links:
                  parent:
                    url: /joes-pizza-place/categories/cat-pizza-id
                  self:
                    url: /joes-pizza-place/categories/cat-classic-pizza-id
                  products:
                    url: /joes-pizza-place/categories/cat-classic-pizza-id/products
              - id: cat-special-pizza-id
                name: Special Pizzas
                description: Special pizzas inspired by my life in Italy.
                serviceType: delivery
                images:
                  - url: https://cdn.example.com/images/special-pizzas.jpg
                _links:
                  parent:
                    url: /joes-pizza-place/categories/cat-pizza-id
                  self:
                    url: /joes-pizza-place/categories/cat-special-pizza-id
                  products:
                    url: /joes-pizza-place/categories/cat-special-pizza-id/
            paging:
              cursors:
                before: null
                after: NDMyNzQyODI3OTQw
    StorefrontapiCategoryProductsResponse:
      description: Returns a paginated collection of products for a given category.
      headers:
        cache-control:
          schema:
            type: string
          description: Information about how the response can be cached
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StorefrontCatalogCategoryProducts'
          example:
            _links:
              self:
                url: /joes-pizza-place/categories/cat-classic-pizza-id/products?after=NDMyNzQyODI3Oas
              previous:
                url: /joes-pizza-place/categories/cat-classic-pizza-id/products?before=NDMyNzQyODI3OA1t
              next:
                url: /joes-pizza-place/categories/cat-classic-pizza-id/products?after=NDMyNzQyODI3OTQw
            serviceType: delivery
            currency: GBP
            products:
              - id: prod-5501
                name: Margherita
                description: Classic mozzarella cheese and tomato base with fresh basil.
                pricing:
                  price: 699
                  isVariable: true
                purchaseOptions:
                  restrictions:
                    - type: age_verification
                      dataType: age
                      display:
                        displayText: 18+ Only
                      age:
                        minAge: 18
                attributes:
                  - key: energy
                    dataType: measurement
                    display:
                      displayText: 300 kcal
                  - key: servings
                    dataType: measurement
                    display:
                      displayText: 6 servings
                  - key: net_weight
                    dataType: measurement
                    display:
                      displayText: 500g
                images:
                  - url: https://cdn.example.com/images/margherita.jpg
                _links:
                  parent:
                    url: /joes-pizza-place/categories/cat-classic-pizza-id
                  self:
                    url: /joes-pizza-place/products/prod-5501
              - id: prod-5502
                name: Pepperoni
                description: A generous helping of spicy pepperoni on our classic cheese and tomato base.
                pricing:
                  price: 699
                  isVariable: true
                attributes:
                  - key: energy
                    dataType: measurement
                    display:
                      displayText: 300 kcal
                  - key: servings
                    dataType: measurement
                    display:
                      displayText: 6 servings
                  - key: net_weight
                    dataType: measurement
                    display:
                      displayText: 500g
                images:
                  - url: https://cdn.example.com/images/pepperoni.jpg
                _links:
                  parent:
                    url: /joes-pizza-place/categories/cat-classic-pizza-id
                  self:
                    url: /joes-pizza-place/products/prod-5502
            paging:
              cursors:
                before: NDMyNzQyODI3OA1t
                after: NDMyNzQyODI3OTQw
    StorefrontapiCategoryResponse:
      description: Returns details about an individual category.
      headers:
        cache-control:
          schema:
            type: string
            description: Information about how the response can be cached.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StorefrontCatalogCategory'
          examples:
            categoryWithChildCategories:
              description: A category with a link the child categories resource
              value:
                id: cat-pizza-id
                name: Pizzas
                description: Authentic, handcrafted pizzas made with the freshest ingredients, from timeless classics to exciting gourmet creations.
                images:
                  - url: https://cdn.example.com/images/pizzas-main-banner.jpg
                _links:
                  parent:
                    url: /joes-pizza-place/categories/cat-italian-id
                  self:
                    url: /joes-pizza-place/categories/cat-pizza-id
                  categories:
                    url: /joes-pizza-place/categories?parentId=cat-pizza-id
                  products: null
                serviceType: delivery
            categoryWithChildProducts:
              description: A category with a link the child products resource
              value:
                id: cat-class-pizza-id
                name: Classic Pizzas
                description: Authentic, handcrafted classic pizzas made with the freshest ingredients, inspired by travels in Italy.
                images:
                  - url: https://cdn.example.com/images/pizzas-main-banner.jpg
                _links:
                  parent:
                    url: /joes-pizza-place/categories/cat-pizza-id
                  self:
                    url: /joes-pizza-place/categories/cat-classic-pizza-id
                  products:
                    url: /joes-pizza-place/categories/cat-classic-pizza-id/products
                  categories: null
                serviceType: delivery
    StorefrontapiProductResponse:
      headers:
        cache-control:
          schema:
            type: string
          description: Information about how the response can be cached
      description: Returns details about an individual product.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StorefrontProduct'
          example:
            id: pizza-margherita-123
            name: Pizza Margherita
            description: Classic Italian pizza with tomato sauce, fresh mozzarella, and basil on a hand-tossed crust.
            serviceType: delivery
            categories:
              - id: cat-classic-pizza-id
                name: Classic Pizzas
                _links:
                  parent:
                    url: /joes-pizza-places/categories/cat-pizza-id
                  self:
                    url: /joes-pizza-place/categories/cat-classic-pizza-id
            currency: GBP
            pricing:
              price: 999
              isVariable: true
            type: product
            images:
              - url: https://example.com/images/pizza-margherita-main.jpg
              - url: https://example.com/images/pizza-margherita-slice.jpg
            labels:
              - Vegetarian
              - Veganuary 2025
            purchaseOptions:
              restrictions:
                - type: age_verification
                  dataType: age
                  display:
                    name: Age Restriction
                    displayText: 18+ Only
                  age:
                    minAge: 18
            status:
              isOffline: false
            variations:
              - id: var-small-10in
                name: Small (10\)
                description: Perfect for one person.
                pricing:
                  price: 999
                  isVariable: true
                gtin: 978020137962
                status:
                  isOffline: false
                  hasLowStock: false
                modifierGroups:
                  - id: modgroup-toppings
                    name: Extra Toppings
                    choiceRules:
                      default: 0
                      min: 0
                      max: 5
                    modifiers:
                      - id: mod-pepperoni
                        name: Pepperoni
                        priceAdjustment: 150
                        choiceRules:
                          default: 0
                          min: 0
                          max: 2
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 120 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 120
                                max: 120
                          - type: allergen#soya
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains soya
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: soya
                          - type: allergen#gluten
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains cereals and products thereof containing gluten
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: glutenCereal
                              subTypes:
                                - type: allergen#subtype
                                  value: wheat
                                  displayText: Wheat
                          - type: additive#caffeine
                            dataType: additive
                            display:
                              name: Additive
                              displayText: Caffeine High Content Beverage
                            additive:
                              type: caffeineHighContentBeverage
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              warnings:
                                - type: additive#warning
                                  value: consumption_warning
                                  displayText: High caffeine content. Not recommended for children or pregnant or breast-feeding women.
                          - type: additive#colours
                            dataType: additive
                            display:
                              name: Additive
                              displayText: Colours
                            additive:
                              type: colours
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-mushrooms
                        name: Mushrooms
                        priceAdjustment: 100
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 20 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 20
                                max: 20
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-onions
                        name: Onions
                        priceAdjustment: 75
                        removePrice: 0
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 15 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 15
                                max: 15
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-olives
                        name: Olives
                        priceAdjustment: 100
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 40 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 40
                                max: 40
                        status:
                          isOffline: true
                          hasLowStock: false
                      - id: mod-extra-cheese
                        name: Extra Cheese
                        priceAdjustment: 200
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 150 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 150
                                max: 150
                          - type: allergen#milk
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains milk
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: milk
                        status:
                          isOffline: false
                          hasLowStock: true
                  - id: modgroup-crust
                    name: Choose Your Crust
                    choiceRules:
                      default: 0
                      min: 1
                      max: 1
                    modifiers:
                      - id: mod-crust-classic
                        name: Classic Crust
                        priceAdjustment: 0
                        choiceRules:
                          default: 1
                          min: 1
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 100 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 100
                                max: 100
                          - type: allergen#gluten
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains gluten
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: gluten
                              subTypes:
                                - type: allergen#subtype
                                  value: wheat
                                  displayText: Wheat
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-crust-thin
                        name: Thin Crust
                        priceAdjustment: 0
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 100 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 100
                                max: 100
                          - type: allergen#gluten
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains gluten
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: gluten
                              subTypes:
                                - type: allergen#subtype
                                  value: wheat
                                  displayText: Wheat
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-crust-stuffed
                        name: Stuffed Crust
                        priceAdjustment: 250
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 300 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 300
                                max: 300
                          - type: allergen#gluten
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains gluten
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: gluten
                              subTypes:
                                - type: allergen#subtype
                                  value: wheat
                                  displayText: Wheat
                          - type: allergen#milk
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains milk
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: milk
                          - type: additive#flavour
                            dataType: additive
                            display:
                              name: Additive
                              displayText: Flavour Enhancers
                            additive:
                              type: flavourEnhancers
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: false
                        status:
                          isOffline: false
                          hasLowStock: false
                attributes:
                  - type: energy
                    dataType: measurement
                    display:
                      name: Energy
                      displayText: 500 kcal / 2,092 kJ
                    measurement:
                      unit: kcal
                      range:
                        min: 500
                        max: 500
                      alternate:
                        - unit: kJ
                          range:
                            min: 2092
                            max: 2092
                  - type: servings
                    dataType: measurement
                    display:
                      name: Servings
                      displayText: 2 servings
                    measurement:
                      unit: serving
                      range:
                        min: 2
                        max: 2
                  - type: net_weight
                    dataType: measurement
                    display:
                      name: Net Weight
                      displayText: 450g
                    measurement:
                      unit: g
                      value: 450
                  - type: price_per_unit
                    dataType: measurement
                    display:
                      name: Price Per Unit
                      displayText: £22.20 / kg
                    measurement:
                      unit: GBP
                      value: 22.2
                      referenceMeasure:
                        unit: kg
                        value: 1
              - id: var-medium-14in
                name: Medium (14\)
                description: Ideal for sharing between 2-3 people.
                pricing:
                  price: 1299
                  isVariable: true
                gtin: 978020137963
                status:
                  isOffline: false
                  hasLowStock: false
                modifierGroups:
                  - id: modgroup-toppings
                    name: Extra Toppings
                    choiceRules:
                      default: 0
                      min: 0
                      max: 5
                    modifiers:
                      - id: mod-pepperoni
                        name: Pepperoni
                        priceAdjustment: 200
                        choiceRules:
                          default: 0
                          min: 0
                          max: 2
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 180 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 180
                                max: 180
                          - type: allergen#soya
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains soya
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: soya
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-mushrooms
                        name: Mushrooms
                        priceAdjustment: 150
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 30 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 30
                                max: 30
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-onions
                        name: Onions
                        priceAdjustment: 100
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 20 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 20
                                max: 20
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-olives
                        name: Olives
                        priceAdjustment: 150
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 60 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 60
                                max: 60
                        status:
                          isOffline: true
                          hasLowStock: false
                      - id: mod-extra-cheese
                        name: Extra Cheese
                        priceAdjustment: 250
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 200 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 200
                                max: 200
                          - type: allergen#milk
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains milk
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: milk
                        status:
                          isOffline: false
                          hasLowStock: true
                  - id: modgroup-crust
                    name: Choose Your Crust
                    choiceRules:
                      default: 0
                      min: 1
                      max: 1
                    modifiers:
                      - id: mod-crust-classic
                        name: Classic Crust
                        priceAdjustment: 0
                        choiceRules:
                          default: 1
                          min: 1
                          max: 1
                        attributes:
                          - type: allergen#gluten
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains gluten
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: gluten
                              subTypes:
                                - type: allergen#subtype
                                  value: wheat
                                  displayText: Wheat
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-crust-thin
                        name: Thin Crust
                        priceAdjustment: 0
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: allergen#gluten
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains gluten
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: gluten
                              subTypes:
                                - type: allergen#subtype
                                  value: wheat
                                  displayText: Wheat
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-crust-stuffed
                        name: Stuffed Crust
                        priceAdjustment: 300
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 250 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 250
                                max: 250
                          - type: allergen#gluten
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains gluten
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: gluten
                              subTypes:
                                - type: allergen#subtype
                                  value: wheat
                                  displayText: Wheat
                          - type: allergen#milk
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains milk
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: milk
                        status:
                          isOffline: false
                          hasLowStock: false
                attributes:
                  - type: energy
                    dataType: measurement
                    display:
                      name: Energy
                      displayText: 1,250 kcal
                    measurement:
                      unit: kcal
                      range:
                        min: 1250
                        max: 1250
                  - type: servings
                    dataType: measurement
                    display:
                      name: Servings
                      displayText: 2-3 servings
                    measurement:
                      unit: serving
                      range:
                        min: 2
                        max: 3
                  - type: net_weight
                    dataType: measurement
                    display:
                      name: Net Weight
                      displayText: 650g
                    measurement:
                      unit: g
                      value: 650
                  - type: price_per_unit
                    dataType: measurement
                    display:
                      name: Price Per Unit
                      displayText: £19.98 / kg
                    measurement:
                      unit: GBP
                      value: 19.98
                      referenceMeasure:
                        unit: kg
                        value: 1
              - id: var-large-18in
                name: Large (18\)
                description: A great choice for families or groups.
                pricing:
                  price: 1599
                  isVariable: true
                gtin: 978020137964
                status:
                  isOffline: false
                  hasLowStock: false
                modifierGroups:
                  - id: modgroup-toppings
                    name: Extra Toppings
                    choiceRules:
                      default: 0
                      min: 0
                      max: 5
                    modifiers:
                      - id: mod-pepperoni
                        name: Pepperoni
                        priceAdjustment: 250
                        choiceRules:
                          default: 0
                          min: 0
                          max: 2
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 220 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 220
                                max: 220
                          - type: allergen#soya
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains soya
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: soya
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-mushrooms
                        name: Mushrooms
                        priceAdjustment: 200
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 40 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 40
                                max: 40
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-onions
                        name: Onions
                        priceAdjustment: 150
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 25 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 25
                                max: 25
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-olives
                        name: Olives
                        priceAdjustment: 200
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 80 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 80
                                max: 80
                        status:
                          isOffline: true
                          hasLowStock: false
                      - id: mod-extra-cheese
                        name: Extra Cheese
                        priceAdjustment: 300
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 250 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 250
                                max: 250
                          - type: allergen#milk
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains milk
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: milk
                        status:
                          isOffline: false
                          hasLowStock: true
                  - id: modgroup-crust
                    name: Choose Your Crust
                    choiceRules:
                      default: 0
                      min: 1
                      max: 1
                    modifiers:
                      - id: mod-crust-classic
                        name: Classic Crust
                        priceAdjustment: 0
                        choiceRules:
                          default: 1
                          min: 1
                          max: 1
                        attributes:
                          - type: allergen#gluten
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains gluten
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: gluten
                              subTypes:
                                - type: allergen#subtype
                                  value: wheat
                                  displayText: Wheat
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-crust-thin
                        name: Thin Crust
                        priceAdjustment: 0
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: allergen#gluten
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains gluten
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: gluten
                              subTypes:
                                - type: allergen#subtype
                                  value: wheat
                                  displayText: Wheat
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-crust-stuffed
                        name: Stuffed Crust
                        priceAdjustment: 350
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: energy
                            dataType: measurement
                            display:
                              name: Energy
                              displayText: 300 kcal
                            measurement:
                              unit: kcal
                              range:
                                min: 300
                                max: 300
                          - type: allergen#gluten
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains gluten
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: gluten
                              subTypes:
                                - type: allergen#subtype
                                  value: wheat
                                  displayText: Wheat
                          - type: allergen#milk
                            dataType: allergen
                            display:
                              name: Allergen
                              displayText: Contains milk
                            allergen:
                              dataSource:
                                value: partner
                                displayText: Partner
                              verified: true
                              level: contains
                              type: milk
                        status:
                          isOffline: false
                          hasLowStock: false
                  - id: modgroup-drinks
                    name: Add a Drink
                    choiceRules:
                      default: 0
                      min: 0
                      max: 2
                    modifiers:
                      - id: mod-cola
                        name: Cola
                        priceAdjustment: 150
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: net_volume
                            dataType: measurement
                            display:
                              name: Net Volume
                              displayText: 330ml
                            measurement:
                              unit: ml
                              value: 330
                          - type: caffeine
                            dataType: measurement
                            display:
                              name: Caffeine
                              displayText: 32mg per 100ml
                            measurement:
                              unit: mg
                              value: 32
                              referenceMeasure:
                                unit: ml
                                value: 100
                          - type: deposit
                            dataType: financial
                            display:
                              name: Deposit
                              displayText: £0.10 (exclusive)
                            financial:
                              value: 0.1
                              descriptor:
                                type: deposit_context
                                value: exclusive
                                displayText: Exclusive
                        status:
                          isOffline: false
                          hasLowStock: false
                      - id: mod-beer
                        name: Craft Beer
                        priceAdjustment: 450
                        choiceRules:
                          default: 0
                          min: 0
                          max: 1
                        attributes:
                          - type: net_volume
                            dataType: measurement
                            display:
                              name: Net Volume
                              displayText: 440ml
                            measurement:
                              unit: ml
                              value: 440
                          - type: abv
                            dataType: measurement
                            display:
                              name: Alcohol by Volume
                              displayText: 5.2%
                            measurement:
                              unit: '%'
                              value: 5.2
                          - type: deposit
                            dataType: financial
                            display:
                              name: Deposit
                              displayText: £0.10 (exclusive)
                            financial:
                              value: 0.1
                              descriptor:
                                type: deposit_context
                                value: exclusive
                                displayText: Exclusive
                        status:
                          isOffline: false
                          hasLowStock: false
                attributes:
                  - type: energy
                    dataType: measurement
                    display:
                      name: Energy
                      displayText: 250 kcal
                    measurement:
                      unit: kcal
                      range:
                        min: 250
                        max: 250
                  - type: servings
                    dataType: measurement
                    display:
                      name: Servings
                      displayText: 3-4 servings
                    measurement:
                      unit: serving
                      range:
                        min: 3
                        max: 4
                  - type: net_weight
                    dataType: measurement
                    display:
                      name: Net Weight
                      displayText: 900g
                    measurement:
                      unit: g
                      value: 900
                  - type: price_per_unit
                    dataType: measurement
                    display:
                      name: Price Per Unit
                      displayText: £17.77 / kg
                    measurement:
                      unit: GBP
                      value: 17.77
                      referenceMeasure:
                        unit: kg
                        value: 1
            excludableTypes: []
            consent:
              type: General
              requiresUserConsent: true
            attributes:
              - type: energy
                dataType: measurement
                display:
                  name: Energy
                  displayText: From 1800k cal
                measurement:
                  unit: kcal
                  range:
                    min: 1800
              - type: servings
                dataType: measurement
                display:
                  name: Servings
                  displayText: From 3-4 servings
                measurement:
                  unit: serving
                  range:
                    min: 3
                    max: 4
              - type: net_weight
                dataType: measurement
                display:
                  name: Net Weight
                  displayText: 500g
                measurement:
                  unit: g
                  value: 500
    StorefrontapiProductsResponse:
      description: Returns a paginated collection of products and can be filtered based on given query parameter.
      headers:
        cache-control:
          schema:
            type: string
          description: Information about how the response can be cached
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StorefrontCatalogProducts'
          example:
            _links:
              self:
                url: /joes-pizza-place/products?after=NDMyNzQyODI3Oas&categoryId=cat-classic-pizza-id
              previous:
                url: /joes-pizza-place/products?before=NDMyNzQyODI3OA1t&categoryId=cat-classic-pizza-id
              next:
                url: /joes-pizza-place/products?after=NDMyNzQyODI3OTQw&categoryId=cat-classic-pizza-id
            serviceType: delivery
            currency: GBP
            products:
              - id: prod-5501
                name: Margherita
                description: Classic mozzarella cheese and tomato base with fresh basil.
                category:
                  id: cat-classic-pizza-id
                pricing:
                  price: 699
                  isVariable: true
                purchaseOptions:
                  restrictions:
                    - type: age_verification
                      dataType: age
                      display:
                        displayText: 18+ Only
                      age:
                        minAge: 18
                attributes:
                  - key: energy
                    dataType: measurement
                    display:
                      displayText: 300 kcal
                  - key: servings
                    dataType: measurement
                    display:
                      displayText: 6 servings
                  - key: net_weight
                    dataType: measurement
                    display:
                      displayText: 500g
                images:
                  - url: https://cdn.example.com/images/margherita.jpg
                _links:
                  parent:
                    url: /joes-pizza-place/categories/cat-classic-pizza-id
                  self:
                    url: /joes-pizza-place/products/prod-5501
              - id: prod-5502
                name: Pepperoni
                description: A generous helping of spicy pepperoni on our classic cheese and tomato base.
                category:
                  id: cat-classic-pizza-id
                pricing:
                  price: 699
                  isVariable: true
                attributes:
                  - key: energy
                    dataType: measurement
                    display:
                      displayText: 300 kcal
                  - key: servings
                    dataType: measurement
                    display:
                      displayText: 6 servings
                  - key: net_weight
                    dataType: measurement
                    display:
                      displayText: 500g
                images:
                  - url: https://cdn.example.com/images/pepperoni.jpg
                _links:
                  parent:
                    url: /joes-pizza-place/categories/cat-classic-pizza-id
                  self:
                    url: /joes-pizza-place/products/prod-5502
            paging:
              cursors:
                before: NDMyNzQyODI3OA1t
                after: NDMyNzQyODI3OTQw
  headers:
    CacheControl:
      description: Information about how the response can be cached.
      schema:
        type: string
        description: The HTTP Cache-Control header holds directives (instructions) in both requests and responses that control caching in browsers and shared caches
    ExpiresAfter:
      schema:
        format: date-time
        type: string
      description: date in UTC when token expires
    RetryAfter:
      required: false
      schema:
        type: string
      description: The Retry-After HTTP response header indicates how long the User Agent should wait before making a follow-up request
    XDeliveryPinRemaining:
      description: |-
        Number of delivery PIN validation attempts remaining for the current order delivery flow.
        This header is only present on the order delivery endpoint `403` response when `reason` is
        `invalidDeliveryPin`.

        Decreases from a starting limit of 5 after each delivery confirmation submitted with an invalid
        `pin`. When it reaches 0 the next request is rejected with 429 `deliveryPinAttemptExceeded` and the
        courier cannot try again.
      schema:
        type: integer
        minimum: 0
        maximum: 5
        example: 3
    XOtpRemaining:
      description: |-
        Number of OTP login attempts remaining for the current code. Decreases from a starting limit of 5
        after each unsuccessful attempt. When it reaches 0 the next request is rejected with 429
        `codeAttemptExceeded` and the user must generate a new code.
      schema:
        type: integer
        minimum: 0
        maximum: 5
        example: 3
    ApiskipthedishesXRateLimitRemaining:
      description: Number of requests remaining in the current rate limit window
      schema:
        type: integer
    ApiskipthedishesXRequestId:
      description: Unique request identifier for tracing
      schema:
        type: string
    LogisticsofferserviceRetryAfter:
      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
  securitySchemes:
    X-Flyt-Api-Key:
      name: X-Flyt-Api-Key
      description: API Key for services run by JET Connect, formerly known as Flyt.
      in: header
      type: apiKey
    Bearer:
      type: http
      description: Bearer token authentication using a JSON Web Token (JWT).
      bearerFormat: JWT
      scheme: bearer
