Just Eat Consumers API

The Consumers API from Just Eat — 4 operation(s) for consumers.

OpenAPI Specification

just-eat-consumers-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  contact:
    x-twitter: JustEatUK
  description: "# Just Eat API\nJust Eat offers services for our various business partners and our consumer applications.\nHow you interact with the API depends on the services you wish to interact with.\n## Security\n### HTTPS\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## Making an API request\nSome API calls require an API key, to authenticate the partner calling the API.\n```\nPUT https://uk-partnerapi.just-eat.io/orders/abcd1234 HTTP/1.1\nAuthorization: JE-API-KEY abcd123456789\n```\nOther calls require a user token in the form of a JWT.\n```\nGET https://uk.api.just-eat.io/consumer/me/orders/uk HTTP/1.1\nAuthorization: Bearer abcd123456789\n```\n\n## Date Formats\n### Date and time formats\nAll dates and times should use the [ISO 8601 standard for representation of dates and times](https://en.wikipedia.org/wiki/ISO_8601).\n\n#### For instance:\n* DueDateWithUtcOffset: `\"2015-05-26T14:52:35.5444292+01:00\"`\n  - Local time: `14:52`\n  - UTC time: `13:52`\n  - UTC offset: `+1hr` (due to daylight time saving)\n* DueDateWithUtcOffset: `\"2015-02-03T11:10:00.0000000+00:00\"`\n  - Local time: `11:10`\n  - UTC time: `11:10`\n  - UTC 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 alway convert to your own local time for display purposes (e.g. on receipts and terminals).\n\n### Callback timestamps\nTimestamps sent to Just Eat should be recorded as the current local time (including any changes needed to account for daylight saving) with an accompanying offset that shows the difference between the recorded local time and the current UTC time.\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## Async Webhooks\nSome of the webhooks on the platform are configured as being 'async' webhooks. These are for long-running operations, and work as follows:\n  1. Your webhook is invoked with a `?callback={returnUrl}` query string parameter. The `returnUrl` is a unique URL that you will need to send the async response to.\n  2. Return an immediate `202 Accepted` response from the webhook endpoint, to indicate that you have received the request.\n  3. Perform the long-running operation. This can be deemed either a _success_; or a _failure_.\n  4. If the result is a _**success**_, return the following:\n  ```\n  POST {returnUrl} HTTP/1.1\n\n  {\n        \"status\": \"Success\",\n        \"message\": \"{successMessage}\",\n        \"data\": {}   // webhook-specific response object\n  }\n  ```\n  5. Otherwise, if the result is a _**failure**_, return the following:\n  ```\n  POST {returnUrl} HTTP/1.1\n\n  {\n        \"status\": \"Failure\",\n        \"message\": \"{failureMessage}\",\n        \"data\": {}   // webhook-specific response object\n  }\n  ```"
  title: Just Eat UK Attempted Delivery API Consumers API
  version: 1.0.0
  x-apisguru-categories:
  - ecommerce
  x-logo:
    url: https://api.apis.guru/v2/cache/logo/https_twitter.com_JustEatUK_profile_image.png
  x-origin:
  - format: openapi
    url: https://uk.api.just-eat.io/docs/openapi.json
    version: '3.0'
  x-providerName: just-eat.co.uk
servers:
- description: Production URL for the UK API
  url: https://uk.api.just-eat.io
- description: Production URL for the DK, ES, IE, IT and NO API
  url: https://i18n.api.just-eat.io
- description: Production URL for the AU and NZ API
  url: https://aus.api.just-eat.io
tags:
- name: Consumers
paths:
  /consumers/{tenant}:
    get:
      description: Currently this operation only supports retrieving a count of consumer accounts given an email address.
      parameters:
      - description: The identifier for the tenant.
        in: path
        name: tenant
        required: true
        schema:
          type: string
      - description: Email address of the consumer.
        in: query
        name: emailAddress
        required: true
        schema:
          type: string
      - description: The account type of the consumer - currently only 'registered' accounts are supported.
        in: query
        name: accountType
        required: true
        schema:
          default: registered
          enum:
          - registered
          type: string
      - description: Returns the number of consumers that matches the `emailAddress` and `accountType`. The query value should be empty, e.g. `/consumers/uk/?emailAddress=someone@email.com&accountType=registered&count`.
        in: query
        name: count
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            text/plain:
              example: 1
              schema:
                type: integer
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        '400':
          content:
            application/json:
              example:
                errors:
                - description: The Email is missing or invalid.
                  errorCode: InvalidEmail
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Bad request.
        '404':
          content:
            application/json:
              example:
                errors:
                - description: Tenant not found
                  errorCode: TenantNotFound
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: The specified tenant does not exist.
        '500':
          $ref: '#/components/responses/500ErrorResponse'
        '501':
          content:
            application/json:
              example:
                errors:
                - description: Non-Count queries have not been implemented
                  errorCode: NotImplemented
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/5XXErrorSchema'
          description: The operation has not been implemented
      summary: Get consumers details
      tags:
      - Consumers
    post:
      description: Creates a consumer for the given tenant.
      parameters:
      - description: The identifier for the tenant. The only supported tenants are `uk`, `au` and `nz`
        in: path
        name: tenant
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsumerCreate'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumerCreateResponse'
          description: Consumer created.
        '400':
          content:
            application/json:
              example:
                errors:
                - description: Email is required.
                  errorCode: BadRequest
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Bad request.
        '403':
          content:
            application/json:
              example:
                errors:
                - description: Not authorized to do this.
                  errorCode: Forbidden
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Forbidden.
        '404':
          content:
            application/json:
              example:
                errors:
                - description: Tenant not found
                  errorCode: TenantNotFound
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: The specified tenant does not exist.
        '409':
          content:
            application/json:
              example:
                errors:
                - description: The specified email already exists
                  errorCode: Conflict
                faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: The specified email already exists.
        '500':
          $ref: '#/components/responses/500ErrorResponse'
      summary: Create consumer
      tags:
      - Consumers
  /consumers/{tenant}/me/communication-preferences:
    get:
      description: Get all communication preferences for a given consumer.
      parameters:
      - description: Request tenant.
        in: path
        name: tenant
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              example:
                marketing:
                  isDefault: false
                  subscribedChannels:
                  - email
                  - sms
              schema:
                $ref: '#/components/schemas/CommunicationPreferences'
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        '401':
          content:
            application/json:
              example:
                errors:
                - description: You are unauthorized to perform this request.
                  errorCode: Unauthorized
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                errors:
                - description: You are forbidden from performing this request.
                  errorCode: Forbidden
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Forbidden
        '404':
          content:
            application/json:
              example:
                errors:
                - description: Tenant could not be found.
                  errorCode: NotFound
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Not Found
        '500':
          $ref: '#/components/responses/500ErrorResponse'
          description: Internal Server Error
      summary: Get communication preferences
      tags:
      - Consumers
  /consumers/{tenant}/me/communication-preferences/{type}:
    get:
      description: Get channel subscriptions for a given consumer's communication preference type
      parameters:
      - description: Request tenant.
        in: path
        name: tenant
        required: true
        schema:
          type: string
      - description: The type of communication preferences.
        in: path
        name: type
        required: true
        schema:
          $ref: '#/components/schemas/CommunicationTypes'
      responses:
        '200':
          content:
            application/json:
              example:
                isDefault: false
                subscribedChannels:
                - email
                - sms
              schema:
                $ref: '#/components/schemas/ChannelSubscriptionsWithDerivedField'
          description: Success
          headers:
            cache-control:
              description: Information about how the response can be cached.
              schema:
                type: string
        '401':
          content:
            application/json:
              example:
                errors:
                - description: You are unauthorized to perform this request.
                  errorCode: Unauthorized
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                errors:
                - description: You are forbidden from performing this request.
                  errorCode: Forbidden
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Forbidden
        '404':
          content:
            application/json:
              example:
                errors:
                - description: Tenant could not be found.
                  errorCode: NotFound
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Not Found
        '500':
          $ref: '#/components/responses/500ErrorResponse'
          description: Internal Server Error
      summary: Get channel subscriptions for a given consumer's communication preference type
      tags:
      - Consumers
    put:
      description: Set only the channel subscriptions for a given consumer's communication preference type. E.g., An empty list of subscribed Channels implies unsubscribe from all channels.
      parameters:
      - description: Request tenant.
        in: path
        name: tenant
        required: true
        schema:
          type: string
      - description: The type of communication preferences.
        in: path
        name: type
        required: true
        schema:
          $ref: '#/components/schemas/CommunicationTypes'
      requestBody:
        content:
          application/json:
            example:
              subscribedChannels:
              - email
              - sms
            schema:
              $ref: '#/components/schemas/ChannelSubscriptions'
        description: The list of channels that the consumer should be subscribed to.
        required: true
      responses:
        '204':
          content: {}
          description: Success
        '401':
          content:
            application/json:
              example:
                errors:
                - description: You are unauthorized to perform this request.
                  errorCode: Unauthorized
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Unauthorized
        '404':
          content:
            application/json:
              example:
                errors:
                - description: Tenant could not be found.
                  errorCode: NotFound
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Not Found
        '500':
          $ref: '#/components/responses/500ErrorResponse'
          description: Internal Server Error
      summary: Set only the channel subscriptions for a given consumer's communication preference type
      tags:
      - Consumers
  /consumers/{tenant}/me/communication-preferences/{type}/subscribedChannels/{channel}:
    delete:
      description: Remove subscription of a specific communication preference channel.
      parameters:
      - description: Request tenant.
        in: path
        name: tenant
        required: true
        schema:
          type: string
      - description: The type of communication preference.
        in: path
        name: type
        required: true
        schema:
          $ref: '#/components/schemas/CommunicationTypes'
      - description: The channel.
        in: path
        name: channel
        required: true
        schema:
          type: string
      requestBody:
        content: {}
        required: false
      responses:
        '204':
          content: {}
          description: Success
        '401':
          content:
            application/json:
              example:
                errors:
                - description: You are unauthorized to perform this request.
                  errorCode: Unauthorized
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Unauthorized
        '404':
          content:
            application/json:
              example:
                errors:
                - description: Tenant could not be found.
                  errorCode: NotFound
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Not Found
        '500':
          $ref: '#/components/responses/500ErrorResponse'
          description: Internal Server Error
      summary: Remove subscription of a specific communication preference channel
      tags:
      - Consumers
    post:
      description: Subscribe to a specific communication preference channel.
      parameters:
      - description: Request tenant.
        in: path
        name: tenant
        required: true
        schema:
          type: string
      - description: The type of communication preferences.
        in: path
        name: type
        required: true
        schema:
          $ref: '#/components/schemas/CommunicationTypes'
      - description: The channel.
        in: path
        name: channel
        required: true
        schema:
          $ref: '#/components/schemas/CommunicationChannels'
      requestBody:
        content: {}
        required: false
      responses:
        '204':
          content: {}
          description: Success
        '401':
          content:
            application/json:
              example:
                errors:
                - description: You are unauthorized to perform this request.
                  errorCode: Unauthorized
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Unauthorized
        '403':
          content:
            application/json:
              example:
                errors:
                - description: You are forbidden from performing this request.
                  errorCode: Forbidden
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Forbidden
        '404':
          content:
            application/json:
              example:
                errors:
                - description: Tenant could not be found.
                  errorCode: NotFound
                faultId: b39ae4c1-142f-4308-838d-1f01815e1cf1
                traceId: H3TKh4QSJUSwVBCBqEtkKw==
              schema:
                $ref: '#/components/schemas/4XXErrorSchema'
          description: Not Found
        '500':
          $ref: '#/components/responses/500ErrorResponse'
          description: Internal Server Error
      summary: Subscribe to a specific communication preference channel
      tags:
      - Consumers
components:
  schemas:
    ConsumerCreateResponse:
      example:
        token: SKgaDl0wZxnwjNgLxBnU646PDTquWLHOyPuyzidIZIg=
        type: otac
      properties:
        token:
          description: The One Time Access Code (OTAC)
          type: string
        type:
          description: 'The type of token. At the moment, this will only ever be a One Time Access Code (OTAC)

            '
          enum:
          - otac
          type: string
      required:
      - type
      - token
      type: object
    500ErrorSchema:
      description: A HTTP 500 error response
      properties:
        fault:
          properties:
            errors:
              items:
                properties:
                  description:
                    description: If returned, the only value returned will be Internal Server Error"
                    enum:
                    - Internal Server Error
                    type: string
                type: object
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated
              type: string
          required:
          - faultId
          type: object
      type: object
    5XXErrorSchema:
      description: A HTTP 5xx error response
      properties:
        fault:
          description: An object representing the nature of the failure.
          properties:
            errors:
              description: The list of errors.
              items:
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue
                    type: string
                  errorCode:
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error
                    type: string
                type: object
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated
              type: string
          required:
          - faultId
          type: object
      type: object
    ConsumerCreate:
      example:
        emailAddress: consumer@just-eat.com
        firstName: Bob
        lastName: Smith
        password: Pa55word
        registrationSource: Native
      properties:
        emailAddress:
          description: The consumer's email address
          format: email
          maxLength: 160
          type: string
        firstName:
          description: The consumer's first name
          maxLength: 160
          type: string
        lastName:
          description: The consumer's last name
          maxLength: 160
          type: string
        marketingPreferences:
          $ref: '#/components/schemas/consumerMarketingPreference'
          description: The selected marketing preferences for the consumer
        password:
          description: The consumer's password
          maxLength: 160
          minLength: 4
          type: string
        registrationSource:
          default: Native
          description: The registration source of the consumer. Australia and New Zealand only support Guest
          enum:
          - Native
          - Guest
          type: string
      required:
      - emailAddress
      - firstName
      - lastName
      type: object
    ChannelSubscriptions:
      properties:
        subscribedChannels:
          description: The list of channels that the consumer should only be subscribed to.
          items:
            $ref: '#/components/schemas/CommunicationChannels'
          type: array
      type: object
    CommunicationPreferences:
      properties:
        marketing:
          $ref: '#/components/schemas/ChannelSubscriptionsWithDerivedField'
          description: The marketing communication preferences.
          type: object
      type: object
    ChannelSubscriptionsWithDerivedField:
      properties:
        isDefault:
          description: Are these channel subscriptions the default or have they been set elsewhere. This is a read-only derived field.
          type: boolean
        subscribedChannels:
          description: The list of channels that are subscribed
          items:
            $ref: '#/components/schemas/CommunicationChannels'
          type: array
      type: object
    4XXErrorSchema:
      description: A HTTP 4xx error response
      properties:
        fault:
          properties:
            errors:
              items:
                properties:
                  description:
                    description: Specific details about the error that may assist you in resolving the issue
                    type: string
                  errorCode:
                    description: A code that identifies the problem type. It will be supported by human-readable documentation that identifies how to resolve the error
                    type: string
                type: object
              type: array
            faultId:
              description: A value that helps identify this response back to logs, so we can easily find this specific fault
              type: string
            traceId:
              description: A value that helps identify the trace back to logs, so that we can easily find what was happening on our system when the fault was generated
              type: string
          required:
          - faultId
          type: object
      type: object
    consumerMarketingPreference:
      items:
        properties:
          channelName:
            description: The channel name.
            enum:
            - Email
            - Push
            - Sms
            type: string
          dateUpdated:
            description: The date of the marketing preference change
            format: date-time
            type: string
          isSubscribed:
            description: Should the channel be subscribed to?
            type: boolean
        type: object
      type: array
    CommunicationTypes:
      enum:
      - marketing
      type: string
    CommunicationChannels:
      enum:
      - email
      - sms
      - push
      type: string
  responses:
    500ErrorResponse:
      content:
        application/json:
          example:
            errors:
            - description: Internal Server Error
            faultId: 25bbe062-c53d-4fbc-9d6c-3df6127b94fd
            traceId: H3TKh4QSJUSwVBCBqEtkKw==
          schema:
            $ref: '#/components/schemas/500ErrorSchema'
      description: Internal Server Error
  securitySchemes:
    Bearer:
      bearerFormat: JWT
      description: Bearer token authentication using a JSON Web Token (JWT).
      scheme: bearer
      type: http
    api_key:
      description: APIs for delivery partners require an API key that will have been issued to you.
      in: header
      name: Authorization
      type: apiKey
    basic_auth:
      description: A few services allow the use of basic authentication when a partner doesn't support OAuth based authentication.
      scheme: basic
      type: http
    justeat_adfs:
      description: ADFS authentication provider for internal Just Eat tools.
      openIdConnectUrl: https://adfs.just-eat.com/adfs/.well-known/openid-configuration
      type: openIdConnect
    restaurantsignup_jwt:
      bearerFormat: JWT token with payload `RestaurantId` and Role `[RestaurantRead | VerifyEmail | RestaurantWrite | FullAccess | DocumentRead]`
      description: Bearer token authentication using a JSON Web Token (JWT), used by the restaurant sign up system
      scheme: bearer
      type: http
x-tagGroups:
- name: Consumer Experience
  tags:
  - Authorization
  - Consumers
  - ConsumerOffers
  - ConsumerQueries
  - Consumer Queries Webhooks
  - ConsumerOrders
  - Search
  - Basket
  - Payments
  - Giftcards
  - Experiments
  - Vouchers
  - Promoted Placement
  - Menu
  - Recommendations
  - Location Services
- name: Manage Order Journey
  tags:
  - Order Acceptance API
  - Order Acceptance Webhooks
  - Order Delivery API
  - Order Delivery Webhooks
  - Order API
  - Order Webhooks
  - Customer Order Details
  - DeliveryFee
  - Delivery Pools API
  - Attempted Delivery API
  - Attempted Delivery Webhooks
  - Checkout
  - Courier Feedback
- name: Restaurant Management
  tags:
  - Restaurant Product
  - Restaurants
  - RestaurantOffers
  - Restaurant OrderTimes
  - Restaurants Webhooks
  - RestaurantSignup
  - RestaurantQueries
  - RestaurantQueries Webhooks
  - Restaurant Claims
  - Restaurant Events
  - Restaurant Events Webhooks
  - Restaurant API
  - Restaurant Webhooks
  - Products
  - Logistics POS Restaurants
  - Restaurant Smiley Rating