Bolt Food API

Partner-gated API for restaurants integrating point-of-sale systems with the Bolt Food delivery application - push and manage menus, accept, reject, and fulfill orders, handle dine-in orders created by waiters, and control store availability, with Bolt calling partner-hosted webhooks for order, courier, and deduction events. Access requires an integrator ID and HMAC signing secret issued by Bolt when a partner test account is created.

OpenAPI Specification

bolt-eu-food-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bolt Food API
  version: '1.0'
  description: 'Partner API for restaurants integrating point-of-sale (POS) systems with the Bolt Food
    delivery application - push and manage menus, accept, reject, and fulfill orders, manage dine-in orders
    created by waiters, and control store availability. Bolt also calls partner-hosted webhooks for new
    orders, cancellations, updates, provider status, courier details, and deductions. Access is partner-gated:
    an integrator ID and HMAC secret are issued by Bolt when a test account is created. This document
    is an API Evangelist summary of the official Redocly-published spec at developer.bolt.eu - the endpoint
    paths, methods, server, webhooks, and authentication are taken verbatim from the upstream spec, while
    request and response schemas are summarized rather than reproduced in full.'
  contact:
    url: https://developer.bolt.eu/
  license:
    name: Bolt Terms and Conditions
    url: https://bolt.eu/en/legal/
  x-endpoints-modeled: false
  x-schemas-summarized: true
  x-source: 'https://developer.bolt.eu/food/main/ (upstream spec: https://developer.bolt.eu/versions/98.0.0/docs/food/main.yaml)'
externalDocs:
  description: Bolt Food API reference on the Bolt developer portal
  url: https://developer.bolt.eu/food/main/
servers:
- url: https://node.bolt.eu/delivery-provider-pos
  description: Production
security:
- boltHmacSignature: []
paths:
  /genericClient/pushMenu:
    post:
      operationId: genericClient-pushMenu
      summary: Push menu
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/pushMenu).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/getMenu:
    post:
      operationId: genericClient-getMenu
      summary: Get menu
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/getMenu).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/updateMenuItemAvailability:
    post:
      operationId: genericClient-updateMenuItemAvailability
      summary: Update menu item availability
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/updateMenuItemAvailability).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/acceptOrder:
    post:
      operationId: genericClient-acceptOrder
      summary: Accept order
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/acceptOrder).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/rejectOrder:
    post:
      operationId: genericClient-rejectOrder
      summary: Reject order
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/rejectOrder).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/markOrderAsReadyForPickup:
    post:
      operationId: genericClient-markOrderAsReadyForPickup
      summary: Mark order as ready for pickup
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/markOrderAsReadyForPickup).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/markOrderAsPickedUp:
    post:
      operationId: genericClient-markOrderAsPickedUp
      summary: Mark order as picked up
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/markOrderAsPickedUp).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/markOrderAsDelivered:
    post:
      operationId: genericClient-markOrderAsDelivered
      summary: Mark order as delivered
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/markOrderAsDelivered).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/waiter/createOrder:
    post:
      operationId: genericClient-waiter-createOrder
      summary: 'Dine-in (waiter): create order'
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/waiter/createOrder).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/waiter/finalizeOrder:
    post:
      operationId: genericClient-waiter-finalizeOrder
      summary: 'Dine-in (waiter): finalize order'
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/waiter/finalizeOrder).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/startAcceptingOrders:
    post:
      operationId: genericClient-startAcceptingOrders
      summary: Start accepting orders
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/startAcceptingOrders).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/pauseOrders:
    post:
      operationId: genericClient-pauseOrders
      summary: Pause orders
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/pauseOrders).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /genericClient/updateProviderSchedule:
    post:
      operationId: genericClient-updateProviderSchedule
      summary: Update provider schedule
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/genericClient/updateProviderSchedule).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /pim/v1/option/upsert:
    post:
      operationId: pim-v1-option-upsert
      summary: 'PIM: option upsert'
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/pim/v1/option/upsert).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /pim/v1/option/list:
    post:
      operationId: pim-v1-option-list
      summary: 'PIM: option list'
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/pim/v1/option/list).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /pim/v1/optionGroup/upsert:
    post:
      operationId: pim-v1-optionGroup-upsert
      summary: 'PIM: option group upsert'
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/pim/v1/optionGroup/upsert).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
  /pim/v1/optionGroup/list:
    post:
      operationId: pim-v1-optionGroup-list
      summary: 'PIM: option group list'
      description: Documented upstream at https://developer.bolt.eu/food/main/ (/pim/v1/optionGroup/list).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizedResponse'
webhooks:
  sendNewOrder:
    post:
      operationId: webhook-sendNewOrder
      summary: Bolt sends a new order to the partner-hosted endpoint for acceptance.
      description: Outbound webhook - Bolt POSTs to a partner-hosted endpoint. Documented upstream at
        https://developer.bolt.eu/food/main/.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Partner acknowledges the event.
  sendCancelOrder:
    post:
      operationId: webhook-sendCancelOrder
      summary: Bolt notifies the partner-hosted endpoint that an order was cancelled.
      description: Outbound webhook - Bolt POSTs to a partner-hosted endpoint. Documented upstream at
        https://developer.bolt.eu/food/main/.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Partner acknowledges the event.
  sendOrderUpdate:
    post:
      operationId: webhook-sendOrderUpdate
      summary: Bolt sends order state updates to the partner-hosted endpoint.
      description: Outbound webhook - Bolt POSTs to a partner-hosted endpoint. Documented upstream at
        https://developer.bolt.eu/food/main/.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Partner acknowledges the event.
  sendProviderStatus:
    post:
      operationId: webhook-sendProviderStatus
      summary: Bolt notifies the partner-hosted endpoint of provider (store) status changes.
      description: Outbound webhook - Bolt POSTs to a partner-hosted endpoint. Documented upstream at
        https://developer.bolt.eu/food/main/.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Partner acknowledges the event.
  sendCourierDetails:
    post:
      operationId: webhook-sendCourierDetails
      summary: Bolt sends courier details for an order to the partner-hosted endpoint.
      description: Outbound webhook - Bolt POSTs to a partner-hosted endpoint. Documented upstream at
        https://developer.bolt.eu/food/main/.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Partner acknowledges the event.
  sendDeductionEvent:
    post:
      operationId: webhook-sendDeductionEvent
      summary: Bolt sends deduction (financial adjustment) events to the partner-hosted endpoint.
      description: Outbound webhook - Bolt POSTs to a partner-hosted endpoint. Documented upstream at
        https://developer.bolt.eu/food/main/.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizedRequest'
      responses:
        '200':
          description: Partner acknowledges the event.
components:
  securitySchemes:
    boltHmacSignature:
      type: apiKey
      in: header
      name: x-external-integrator-id
      description: Partner-gated HMAC request signing. Every request carries the integrator ID in `x-external-integrator-id`
        plus a `x-server-authorization-hmac-sha256` header containing the base64-encoded HMAC-SHA256 signature
        of the raw payload, computed with a secret key issued by Bolt. Webhook calls from Bolt to the
        partner authenticate with Basic auth or a partner-hosted identity server issuing bearer tokens.
  schemas:
    SummarizedRequest:
      type: object
      description: Request body summarized - see the official Bolt developer portal for the full documented
        schema of each operation.
      additionalProperties: true
    SummarizedResponse:
      type: object
      description: Response body summarized - see the official Bolt developer portal for the full documented
        schema of each operation.
      additionalProperties: true