openapi: 3.0.3
info:
  title: Lochting API Reference
  version: 1.0.0
  contact:
    name: Lochting Support
    url: https://www.lochting.com/en/contact/
  description: >-
    Here, you will find all the necessary information to interact with our
    platform programmatically using the REST API. Our API allows developers to
    access and manipulate various resources on our platform, such as orders,
    reservations, and shipments.
servers:
  -
    url: https://api.lochting.com/public/v1
    description: Live
paths:
  /get-token:
    post:
      summary: Access Token
      operationId: getToken
      description: >-
        Returns an access token and refresh token to be used in subsequent API calls
        for authentication.


        Add this token in the `Authorization` header of each call.


        :::note

        To obtain an API key, please [contact us](https://www.lochting.com/en/contact/).

        :::
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
        '400':
          description: Bad Request. `apiKey` not provided.
        '401':
          description: Unauthorized
      tags:
        - Authentication
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - apiKey
              properties:
                apiKey:
                  type: string
                  example: apiKey-23411ce0-b007-4472-a630-e3200820e5dd
                  description: Your personal API key
  /refresh-token:
    post:
      summary: Refresh Token
      operationId: refreshToken
      description: Generates a new access token by a given refresh token.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
      tags:
        - Authentication
      parameters: []
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: string
              description: Your refresh token
              example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJsb2NodGluZy5jb20iLCJhdWQiOiJsb2NodGluZy5jb20iLCJpYXQiOjE1OTMwNzgwMDAsIm5iZiI6MTU5MzA3ODAwMCwiZXhwIjoxNTkzMDc4NjAwLCJzdWIiOiJ1c2VyLTE3M2E3ODNhLWNjZWUtNDE0ZC05OGIxLTAwOTcwMjI3NWZkZiIsInVzZXJuYW1lIjoiSm9obiBQaGFybWEifQ.stHAtyWIPDJnoOHo-ssLXuwsVA8Ctf6xItm7gwgee_c
  /order/create:
    post:
      summary: New Order
      operationId: newOrder
      description: >-
        This endpoint enables authorized users to create a new order with
        relevant details such as the type and quantity of products, delivery
        details, payment information, and any additional notes or comments.
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                  - orderId
                properties:
                  orderId:
                    type: string
                    example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
                    description: >-
                      The id of the order, prefixed with `order-` and followed
                      by a 36 characters long UUID.
        '401':
          description: Unauthorized
      tags:
        - Orders
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderCreateItem'
  /order/{orderId}:
    get:
      summary: Order Details
      operationId: getOrder
      description: >- 
        This call will return a JSON object with the order details.
        
        
        ### Order Statuses
        
        
        Detailed explanation of the possible `orderStatus` values:
        
      
        * `pending` - The order has not been paid yet.
        
        * `paid` - The order has been paid. If a reservation is linked to the order, the customer, at the MT.Matic, won't be asked to pay anymore.
        
        * `readyToPickUpInStore` - The order is ready to be picked up in store / Matic / Locker / ... If a reservation is linked to the order, the customer, at the MT.Matic, will need to pay before the products are delivered.
        
        * `complete` - The order is complete (and picked up if applicable).
        
        * `canceled` - The order got canceled.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderDetails'
        '401':
          description: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: >-
                      Order not found:
                      order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
      tags:
        - Orders
      parameters:
        - name: orderId
          in: path
          description: The id of the order.
          required: true
          example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
    patch:
      summary: Update Order Details
      operationId: updateOrder
      description: This call allows you to update an order.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: >-
                      Order not found:
                      order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
      tags:
        - Orders
      parameters:
        - name: orderId
          in: path
          description: The id of the order.
          required: true
          example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  $ref: '#/components/schemas/OrderStatus'
                paymentMethod:
                  $ref: '#/components/schemas/PaymentMethod'
  /orders:
    get:
      summary: Order Collection
      operationId: listOrders
      description: This call will return a JSON object with orders.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/List'
                  - type: object
                    properties:
                      items:
                        items:
                          $ref: '#/components/schemas/OrderListItem'
        '401':
          description: Unauthorized
      tags:
        - Orders
      parameters:
        - name: pagination[page]
          in: query
          description: The page number to retrieve
          schema:
            type: number
            default: 1
        - name: pagination[size]
          in: query
          description: The page size (hard limit to `1000`)
          schema:
            type: number
            default: 10
        - name: sorting[field]
          in: query
          description: The field to sort on (createdAt, updatedAt or orderStatus).
          schema:
            type: string
            default: 'null'
        - name: sorting[direction]
          in: query
          description: The sorting direction (ascending or descending).
          schema:
            type: string
            default: 'null'
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
  /reservation/vendingMachine/create:
    post:
      summary: New Vending Machine Reservation
      operationId: newVendingMachineReservation
      description: >-
        This endpoint enables authorized users to create a new vending machine reservation
        by a given order id.
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                  - reservationId
                  - reservationCode
                properties:
                  reservationId:
                    type: string
                    example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
                    description: >-
                      The id of the reservation, prefixed with `reservation-`
                      and followed by a 36 characters long UUID.
                  reservationCode:
                    type: string
                    example: XXX12345A
                    description: >-
                      The generated code. Can be used by a customer on the
                      matic.
                  overBoxBarCode:
                    type: string
                    example: '1234567891234'
                    description: The over box EAN13 barcode.
        '401':
          description: Unauthorized
      tags:
        - Reservations
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReservationCreateItem'
  /reservation/locker/create:
    post:
      summary: New Locker Reservation
      operationId: newLockerReservation
      description: >-
        This endpoint enables authorized users to create a new locker
        reservation by a given order id.
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                  - reservationId
                  - reservationCode
                properties:
                  reservationId:
                    type: string
                    example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
                    description: >-
                      The id of the reservation, prefixed with `reservation-`
                      and followed by a 36 characters long UUID.
                  reservationCode:
                    type: string
                    example: XXX12345A
                    description: >-
                      The generated code. Can be used by a customer on the
                      matic.
                  overBoxBarCode:
                    type: string
                    example: '1234567891234'
                    description: The over box EAN13 barcode.
        '401':
          description: Unauthorized
      tags:
        - Reservations
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReservationCreateItem'
  /reservation/{reservationId}:
    get:
      summary: Reservation Details
      operationId: getReservation
      description: >-
        This call will return a JSON object with the reservation details.
        
        
        ### Reservation Statuses
        
        
        Detailed explanation of the possible `reservationStatus` values:
        
        
        * `incomplete` - Reservation created in robot, but some packs are missing.
        
        * `complete` - Reservation created in robot, all packs are available.
        
        * `robotReservationFailed` - Syncing the reservation to the robot was unsuccessful.
        
        * `deliveryRequested` - Reservation is complete and a delivery was requested.
        
        * `deliveryRequestFailed` - The request for delivery has failed.
        
        * `delivered` - Reservation was successfully ejected from robot.
        
        * `deliveryFailed` - Delivery process started but failed to eject reservation from robot.
        
        * `pickedUp` - The customer picked up the delivered reservation.
        
        * `pickUpFailed` - The customer indicated that the ejected reservation was not ok.
        
        * `canceled` - The reservation got canceled.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReservationDetails'
        '401':
          description: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: >-
                      Reservation not found:
                      reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
      tags:
        - Reservations
      parameters:
        - name: reservationId
          in: path
          description: The id of the reservation.
          required: true
          example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
    patch:
      summary: Update Reservation Details
      operationId: updateReservation
      description: >-
        This endpoint enables authorized users to update a specific reservation
        identified by the reservation id.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: >-
                      Reservation not found:
                      reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
      tags:
        - Reservations
      parameters:
        - name: reservationId
          in: path
          description: The id of the reservation.
          required: true
          example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - status
              properties:
                status:
                  $ref: '#/components/schemas/UpdateReservationStatus'
  /reservations:
    get:
      summary: Reservation Collection
      operationId: listReservations
      description: This call will return a JSON object with reservations.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/List'
                  - type: object
                    properties:
                      items:
                        items:
                          $ref: '#/components/schemas/ReservationItem'
        '401':
          description: Unauthorized
      tags:
        - Reservations
      parameters:
        - name: pagination[page]
          in: query
          description: The page number to retrieve
          schema:
            type: number
            default: 1
        - name: pagination[size]
          in: query
          description: The page size (hard limit to `1000`)
          schema:
            type: number
            default: 10
        - name: filters[orderId]
          in: query
          description: >-
            The id of the order, prefixed with `order-` and followed by a 36
            characters long UUID.
          schema:
            type: string
            default: 'null'
        - name: filters[reservationStatuses]
          in: query
          description: >-
            An array of reservation statuses to filter on.
          schema:
            type: string
            default: 'null'
        - name: sorting[field]
          in: query
          description: The field to sort on (createdAt or updatedAt).
          schema:
            type: string
            default: 'null'
        - name: sorting[direction]
          in: query
          description: The sorting direction (ascending or descending).
          schema:
            type: string
            default: 'null'
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
  /reservation/{reservationId}/request-delivery:
    post:
      summary: Request Delivery
      operationId: requestReservationDelivery
      description: >-
        By utilizing the request-delivery endpoint, authorized users can trigger
        the delivery process for a specific reservation. This involves
        specifying the reservation details, such as the reservation ID and
        selecting the desired output destination within the MT.Matic system
        where the reserved products should be delivered. The endpoint handles
        the processing and coordination with the MT.Matic system to facilitate
        the transportation of the reserved items.
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
      tags:
        - Reservations
      parameters:
        - name: reservationId
          in: path
          description: The id of the reservation.
          required: true
          example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - robotOutputDestinationId
              properties:
                robotOutputDestinationId:
                  type: number
                  example: 2
                  description: The output destination id.
  /reservation/{reservationId}/qr-code:
    get:
      summary: Reservation QR Code
      operationId: getReservationQrCode
      description: >-
        In the Lochting platform, the QR code endpoint returns a string that
        contains the base64 encoded representation of a QR code. This QR code
        can be utilized by customers at the MT.Matic for picking up their
        reservations, eliminating the need for manual entry of the reservation
        code.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
              example: >-
                iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC7klEQVR4nO3dQWrjQBBA0dGQ+1/Zs5mFs4pE+rdL9nu7QGJs8xGBorqPx+PxB1b7++o3wHsSFglhkfh6/uE4jh//4Mz/ZF7nM1/nmScWCWGREBYJYZEQFglhkRAWCWGREBYJYZEQFonjeQZUzIzuYtrc7czrrFJ8Lk8sEsIiISwSwiIhLBLCIiEsEsIiISwSwiIhLBJfP//Kd6tmWDtnjqve88753TT2ChlBWCSERUJYJIRFQlgkhEVCWCSERUJYJIRF4vKscNWM75N3GM+Y9tntFTKCsEgIi4SwSAiLhLBICIuEsEgIi4SwSAiLxOVZ4SrTZmE77dzNXDWTtVfICMIiISwSwiIhLBLCIiEsEsIiISwSwiIhLBIvmxVOO8t05x2C0+4rLD6XJxYJYZEQFglhkRAWCWGREBYJYZEQFglhkRAWidvfV7jzLNNpM76d7BUygrBICIuEsEgIi4SwSAiLhLBICIuEsEgIi4T7Cv+bNgM9Y+d36L5CRhAWCWGREBYJYZEQFglhkRAWCWGREBYJYZE4nuc7d5yXnbFqprZzZ3DnjO8Me4WMICwSwiIhLBLCIiEsEsIiISwSwiIhLBLCIpHsFU7bd1tl2nuedn+ivUJywiIhLBLCIiEsEsIiISwSwiIhLBLCIiEsEpdnhWfsnCdO2wecNgdcxV4hIwiLhLBICIuEsEgIi4SwSAiLhLBICIuEsEhcPoN02mzuXe8HPGPyPNETi4SwSAiLhLBICIuEsEgIi4SwSAiLhLBICItEsle40yfP73aeiWqvkBGERUJYJIRFQlgkhEVCWCSERUJYJIRFQlgkLs8Kp+0e7pwDrrLq+3FfIR9HWCSERUJYJIRFQlgkhEVCWCSERUJYJIRF4vIZpKvccZ44+czP37BXyG0Ii4SwSAiLhLBICIuEsEgIi4SwSAiLhLBIvGxWyPuxV0hOWCSERUJYJIRFQlgkhEVCWCSERUJYJIRF4rjjGZ7M54lFQlgkhEXiH+1C3HwqVbcGAAAAAElFTkSuQmCC
        '401':
          description: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: >-
                      Reservation not found:
                      reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
      tags:
        - Reservations
      parameters:
        - name: reservationId
          in: path
          description: The id of the reservation.
          required: true
          example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
  /reservation/{reservationId}/over-box-barcode:
    get:
      summary: Reservation Overbox Barcode
      operationId: getReservationOverboxBarcode
      description: >-
        In the Lochting platform, the overbox barcode endpoint returns a string
        that contains the base64 encoded representation of a EAN13 barcode. This
        barcode can be utilized by pharmacists to put on the overbox to be
        registered by the robot.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
              example: >-
                iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC7klEQVR4nO3dQWrjQBBA0dGQ+1/Zs5mFs4pE+rdL9nu7QGJs8xGBorqPx+PxB1b7++o3wHsSFglhkfh6/uE4jh//4Mz/ZF7nM1/nmScWCWGREBYJYZEQFglhkRAWCWGREBYJYZEQFonjeQZUzIzuYtrc7czrrFJ8Lk8sEsIiISwSwiIhLBLCIiEsEsIiISwSwiIhLBJfP//Kd6tmWDtnjqve88753TT2ChlBWCSERUJYJIRFQlgkhEVCWCSERUJYJIRF4vKscNWM75N3GM+Y9tntFTKCsEgIi4SwSAiLhLBICIuEsEgIi4SwSAiLxOVZ4SrTZmE77dzNXDWTtVfICMIiISwSwiIhLBLCIiEsEsIiISwSwiIhLBIvmxVOO8t05x2C0+4rLD6XJxYJYZEQFglhkRAWCWGREBYJYZEQFglhkRAWidvfV7jzLNNpM76d7BUygrBICIuEsEgIi4SwSAiLhLBICIuEsEgIi4T7Cv+bNgM9Y+d36L5CRhAWCWGREBYJYZEQFglhkRAWCWGREBYJYZE4nuc7d5yXnbFqprZzZ3DnjO8Me4WMICwSwiIhLBLCIiEsEsIiISwSwiIhLBLCIpHsFU7bd1tl2nuedn+ivUJywiIhLBLCIiEsEsIiISwSwiIhLBLCIiEsEpdnhWfsnCdO2wecNgdcxV4hIwiLhLBICIuEsEgIi4SwSAiLhLBICIuEsEhcPoN02mzuXe8HPGPyPNETi4SwSAiLhLBICIuEsEgIi4SwSAiLhLBICItEsle40yfP73aeiWqvkBGERUJYJIRFQlgkhEVCWCSERUJYJIRFQlgkLs8Kp+0e7pwDrrLq+3FfIR9HWCSERUJYJIRFQlgkhEVCWCSERUJYJIRF4vIZpKvccZ44+czP37BXyG0Ii4SwSAiLhLBICIuEsEgIi4SwSAiLhLBIvGxWyPuxV0hOWCSERUJYJIRFQlgkhEVCWCSERUJYJIRF4rjjGZ7M54lFQlgkhEXiH+1C3HwqVbcGAAAAAElFTkSuQmCC
        '401':
          description: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: >-
                      Reservation not found:
                      reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
      tags:
        - Reservations
      parameters:
        - name: reservationId
          in: path
          description: The id of the reservation.
          required: true
          example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
  /reservation/{reservationId}/simulate-status-change:
    patch:
      summary: Reservation Simulation
      operationId: simulateReservationStatusChange
      description: >-
        This endpoint enables authorized users to simulate a reservation status
        change. This endpoint is only available on the DEV environment. Valid
        transitions are:

        * `created`
            * => `incomplete`
            * => `complete`
            * => `canceled`
            * => `robotReservationFailed`
        * `incomplete`
            * => `complete`
            * => `canceled`
        * `complete`
            * => `deliveryRequested`
            * => `deliveryRequestFailed`
            * => `canceled`
        * `deliveryRequested`
            * => `delivered`
            * => `deliveryFailed`
        * `delivered`
            * => `pickedUp`
            * => `pickUpFailed`
      responses:
        '200':
          description: OK
        '401':
          description: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: >-
                      Reservation not found:
                      reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
      tags:
        - Reservations
      parameters:
        - name: reservationId
          in: path
          description: The id of the reservation.
          required: true
          example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - status
              properties:
                status:
                  $ref: '#/components/schemas/ReservationStatus'
  /product/robot:
    get:
      summary: Robot Products
      operationId: getRobotProducts
      description: >-
        Fetch all products in the robot product selection along with their stock levels and product codes.
      tags:
        - Robot
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  required:
                    - productId
                    - quantity
                    - productCodes
                  properties:
                    productId:
                      type: string
                      description: The internal Lochting id of the product, prefixed with `product-` and followed by a 36 characters long UUID.
                      example: product-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
                    quantity:
                      type: number
                      description: Quantity in stock
                      example: 2
                    productCodes:
                      $ref: '#/components/schemas/ProductCodes'
        '401':
          description: Unauthorized
  /product/request-delivery-by-product-codes:
    post:
      summary: Deliver Product
      operationId: deliverProduct
      description: >-
        This endpoint enables authorized users to deliver one or more products
        from the robot by product codes.
      responses:
        '201':
          description: Created
        '401':
          description: Unauthorized
      tags:
        - Robot
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - productCodes
                - robotOutputDestinationId
              properties:
                productCodes:
                  type: array
                  items:
                    type: object
                    required:
                      - type
                      - value
                    properties:
                      type:
                        $ref: '#/components/schemas/ProductCodeType'
                      value:
                        type: string
                        example: '1234567'
                  description: a list of product codes to be delivered from the robot
                robotOutputDestinationId:
                  type: number
                  description: the number identifying the output destination to be used
                  example: 1
  /stock/robot:
    post:
      summary: Robot Stock
      operationId: retrieveRobotStock
      description: >-
        Retrieve robot stock for the provided product codes.
      tags:
        - Stock
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - productCodes
              properties:
                productCodes:
                  type: array
                  items:
                    type: object
                    required:
                      - type
                      - value
                    properties:
                      type:
                        $ref: '#/components/schemas/ProductCodeType'
                      value:
                        type: string
                        example: '1234567'
                  description: The list of product codes to be queried for stock.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                  - stock
                  - unresolvedProductCodes
                properties:
                  stock:
                    type: array
                    items:
                      type: object
                      required:
                        - productCode
                        - quantity
                      properties:
                        productCode:
                          type: string
                          example: '1234567'
                        quantity:
                          type: number
                          example: 3
                          description: Quantity in stock
                    description: >-
                      The robot stock for each product code.
                  unresolvedProductCodes:
                    type: array
                    items:
                      type: object
                      required:
                        - type
                        - value
                      properties:
                        type:
                          $ref: '#/components/schemas/ProductCodeType'
                        value:
                          type: string
                          example: '1234567'
                    description: >-
                      The list of product codes that could not be resolved by Lochting.
        '401':
          description: Unauthorized
  /stock/import:
    post:
      summary: Import Stock
      operationId: importStock
      description: >-
        This API endpoint allows authorized users to keep product stock levels
        in sync, ensuring accurate and real-time inventory.
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                required:
                  - unresolvedProductCodes
                properties:
                  unresolvedProductCodes:
                    type: array
                    items:
                      type: object
                      required:
                        - type
                        - value
                      properties:
                        type:
                          $ref: '#/components/schemas/ProductCodeType'
                        value:
                          type: string
                          example: '1234567'
                    description: >-
                      a list of product codes that could not be resolved by
                      Lochting
        '401':
          description: Unauthorized
      tags:
        - Stock
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StockImport'
  /price/import:
    post:
      summary: Import Price
      operationId: importPrice
      description: >-
        This API endpoint allows authorized users to synchronize and push
        real-time price information, ensuring pricing accuracy across all
        channels.
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                type: object
                required:
                  - unresolvedProductCodes
                properties:
                  unresolvedProductCodes:
                    type: array
                    items:
                      type: object
                      required:
                        - type
                        - value
                      properties:
                        type:
                          $ref: '#/components/schemas/ProductCodeType'
                        value:
                          type: string
                          example: '1234567'
                    description: >-
                      a list of product codes that could not be resolved by
                      Lochting
        '401':
          description: Unauthorized
      tags:
        - Prices
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PriceImport'
  /shipment/create:
    post:
      summary: New Shipment
      operationId: newShipment
      description: >-
        This endpoint enables authorized users to create a new shipment by a
        given order id.
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                  - shipmentId
                properties:
                  shipmentId:
                    type: string
                    example: shipment-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
                    description: >-
                      The id of the shipment, prefixed with `shipment-` and
                      followed by a 36 characters long UUID.
        '401':
          description: Unauthorized
      tags:
        - Shipments
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentCreateItem'
  /shipment/{shipmentId}:
    get:
      summary: Shipment Details
      operationId: getShipment
      description: This call will return a JSON object with the shipment details.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentDetails'
        '401':
          description: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: >-
                      Shipment not found:
                      shipment-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
      tags:
        - Shipments
      parameters:
        - name: shipmentId
          in: path
          description: The id of the shipment.
          required: true
          example: shipment-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
  /shipments:
    get:
      summary: Shipment Collection
      operationId: listShipments
      description: This call will return a JSON object with shipments.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/List'
                  - type: object
                    properties:
                      items:
                        items:
                          $ref: '#/components/schemas/ShipmentListItem'
        '401':
          description: Unauthorized
      tags:
        - Shipments
      parameters:
        - name: pagination[page]
          in: query
          description: The page number to retrieve
          schema:
            type: number
            default: 1
        - name: pagination[size]
          in: query
          description: The page size (hard limit to `1000`)
          schema:
            type: number
            default: 10
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
  /shipment/{shipmentId}/label/{labelType}:
    get:
      summary: Shipment Label
      operationId: getShipmentLabel
      description: >-
        This call will return a base64 encoded PDF of the shipment label. This
        can be requested in A4 or A6 format.


        :::note

        It can take up to two minutes before a label can be generated from a
        newly created shipment.

        :::
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
              example: >-
                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uAOnX8jUR8Y6ENFOr/bl+yCTyidp3B/7u3Gc9/pzXNf2XqXhTxRDqq2N1qtq2nx2jm2AaRGVVGdpPIOzP/Aj+NO38PzDQtXutZ0O8nTUr/7QlnakGWBTuIbr1+bGPzFAHU3fjKzj0O91CCC63268RzWzpliCVzx0469qraR48srrSbae9juVuXTMghs5WQH2ODkfjWZpFr4jvtB8QWlyl6bSaBk09dRIE5JB4Y/l1/DvT9A8Qano+g2enTeFdXeS3j8tmSMYOD1FAHfUUUUgCiiigAooooAbJ/q2+hrjfhb/AMiXH/13k/nRRQB2lFFFABRRRQB//9kKZW5kc3RyZWFtCmVuZG9iago3IDAgb2JqCjw8Ci9UeXBlIC9YT2JqZWN0Ci9Db2xvclNwYWNlIFsgL0luZGV4ZWQgL0RldmljZVJHQiAyNTUgPDAwMDAwMDgwMDAwMDAwODAwMDgwODAwMDAwMDA4MDgwMDA4MDAwODA4MDgwODA4MGZjMDQwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw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
        '401':
          description: Unauthorized
      tags:
        - Shipments
      parameters:
        - name: shipmentId
          in: path
          description: The id of the shipment.
          required: true
          example: shipment-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: labelType
          in: path
          description: Type of label
          required: true
          example: TOP_LEFT_A4
          schema:
            type: string
            enum:
              - TOP_LEFT_A4
              - TOP_RIGHT_A4
              - BOTTOM_LEFT_A4
              - BOTTOM_RIGHT_A4
              - FULL_A6
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
  /webhook/create:
    post:
      summary: New Webhook
      operationId: newWebhook
      description: This endpoint enables authorized users to create a new webhook.
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                  - webhookId
                properties:
                  webhookId:
                    type: string
                    example: webhook-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
                    description: >-
                      The id of the webhook, prefixed with `webhook-` and
                      followed by a 36 characters long UUID.
        '401':
          description: Unauthorized
      tags:
        - Webhooks
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookCreateItem'
  /webhooks:
    get:
      summary: Webhook Collection
      operationId: listWebhooks
      description: >-
        This call will return a JSON object with configured webhooks for a
        branch.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/List'
                  - type: object
                    properties:
                      items:
                        items:
                          $ref: '#/components/schemas/WebhookListItem'
        '401':
          description: Unauthorized
      tags:
        - Webhooks
      parameters:
        - name: pagination[page]
          in: query
          description: The page number to retrieve
          schema:
            type: number
            default: 1
        - name: pagination[size]
          in: query
          description: The page size (hard limit to `1000`)
          schema:
            type: number
            default: 10
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
  /webhook/{webhookId}:
    delete:
      summary: Delete Webhook
      operationId: deleteWebhook
      description: >-
        This endpoint enables authorized users to delete a webhook by a given
        webhook id.
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request. Invalid webhook.
        '401':
          description: Unauthorized
      tags:
        - Webhooks
      parameters:
        - name: webhookId
          in: path
          description: The id of the webhook.
          required: true
          example: webhook-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
  /webhook/{webhookId}/test:
    post:
      summary: Test Webhook
      operationId: testWebhook
      description: >-
        This endpoint enables authorized users to test webhooks. Calling this
        endpoint will call the configured webhook URL with the corresponding
        payload.
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request. Invalid webhook.
        '401':
          description: Unauthorized
      tags:
        - Webhooks
      parameters:
        - name: webhookId
          in: path
          description: The id of the webhook.
          required: true
          example: webhook-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          schema:
            type: string
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
          example: your-access-token
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - id
              properties:
                id:
                  type: string
                  example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
                  description: An id of the subject you want to receive a call for.
components:
  schemas:
    Token:
      type: object
      required:
        - accessToken
        - refreshToken
      properties:
        accessToken:
          type: string
          example: >-
            eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJsb2NodGluZy5jb20iLCJhdWQiOiJsb2NodGluZy5jb20iLCJpYXQiOjE1OTMwODEzNjAsIm5iZiI6MTU5MzA4MTQyMCwiZXhwIjoxNTkzMTE3MzYwLCJzdWIiOiJ1c2VyLTE3M2E3ODNhLWNjZWUtNDE0ZC05OGIxLTAwOTcwMjI3NWZkZiIsInVzZXJuYW1lIjoiSm9obiBQaGFybWEifQ.Z4ZVCnWwYCabYjGJiKiS12vhW_sJVlcSeW6uuXQB_9c
        refreshToken:
          type: string
          example: >-
            eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJsb2NodGluZy5jb20iLCJhdWQiOiJsb2NodGluZy5jb20iLCJpYXQiOjE1OTMwNzgwMDAsIm5iZiI6MTU5MzA3ODAwMCwiZXhwIjoxNTkzMDc4NjAwLCJzdWIiOiJ1c2VyLTE3M2E3ODNhLWNjZWUtNDE0ZC05OGIxLTAwOTcwMjI3NWZkZiIsInVzZXJuYW1lIjoiSm9obiBQaGFybWEifQ.stHAtyWIPDJnoOHo-ssLXuwsVA8Ctf6xItm7gwgee_c
    OrderCreateItem:
      type: object
      required:
        - salesChannelId
        - salesChannelType
        - externalReferenceId
        - currency
        - total
        - taxes
        - discount
        - shipping
        - status
        - orderLines
      properties:
        salesChannelId:
          type: string
          example: pos-03cac0fc-feaf-5bc5-a3d1-8dc5e80ada46
          description: >-
            The id of the sales channel, prefixed with `mobileApplication-`,
            `pos-` or `other-` and followed by a 36 characters long UUID.
        salesChannelType:
          $ref: '#/components/schemas/SalesChannelType'
        externalReferenceId:
          type: string
          example: '''00012345'''
          description: External ReferenceId of the order
        currency:
          $ref: '#/components/schemas/Currency'
        total:
          type: number
          example: 4000
          description: Total including VAT
        taxes:
          type: number
          example: 300
          description: VAT
        discount:
          type: number
          example: 1000
          description: Discount
        shipping:
          type: number
          example: 500
          description: Shipping
        status:
          $ref: '#/components/schemas/OrderStatus'
        orderLines:
          type: array
          items:
            $ref: '#/components/schemas/OrderCreateOrderLine'
          description: Order Lines
        customerEmailAddress:
          type: string
          example: johndoe@lochting.com
          description: Email address of the customer
        customerExternalReferenceId:
          type: string
          example: '23'
          description: External ReferenceId of the customer
        customerFirstName:
          type: string
          example: John
          description: First name of customer
        customerLastName:
          type: string
          example: Doe
          description: Last name of customer
        customerAddress:
          type: string
          example: Dendermondsesteenweg 140C
          description: Street + Street number + box
        customerZipCode:
          type: string
          example: '9000'
          description: Zipcode of customer
        customerCity:
          type: string
          example: Gent
          description: City of customer
        customerCountry:
          allOf:
            - $ref: '#/components/schemas/Country'
          description: ISO CountryCode of Customer
        customerPhoneNumber:
          type: string
          example: '123456789'
          description: Phone of customer
        shippingMethod:
          $ref: '#/components/schemas/ShippingMethod'
        shippingName:
          type: string
          example: John
          description: concatenated name of addressee
        shippingAddress:
          type: string
          example: Dendermondsesteenweg 140C
          description: Street + Street number + box of shipping address
        shippingZipCode:
          type: string
          example: '9000'
          description: Zipcode of shipping address
        shippingCity:
          type: string
          example: Gent
          description: City of shipping address
        shippingCountry:
          allOf:
            - $ref: '#/components/schemas/Country'
          description: ISO CountryCode of shipping address
        shippingPhoneNumber:
          type: string
          example: '123456789'
          description: Phone of customer
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethod'
        remarks:
          type: string
          description: Additional remarks
          nullable: true
        prescriptionBarcodes:
          type: array
          items:
            type: string
          description: Prescription barcodes
          example:
            - BEP1K5H5PPK6
            - BEP19D1M3VZS
            - BEP163CHB4RS
    OrderDetails:
      type: object
      required:
        - orderId
        - orderNumber
        - salesChannelId
        - externalReferenceId
        - currency
        - total
        - taxes
        - shipping
        - discount
        - orderStatus
        - createdAt
        - orderLines
      properties:
        orderId:
          type: string
          example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the order, prefixed with `order-` and followed by a 36
            characters long UUID.
        orderNumber:
          type: string
          example: W00010
        salesChannelId:
          type: string
          example: webshop-03cac0fc-feaf-5bc5-a3d1-8dc5e80ada46
          description: >-
            The id of the sales channel, prefixed with `webshop-` or `device-`
            and followed by a 36 characters long UUID.
        externalReferenceId:
          type: string
          example: '34'
          description: The external reference ID of the integrator
        currency:
          allOf:
            - $ref: '#/components/schemas/CurrencyOutput'
          description: Currency of the Order
        total:
          allOf:
            - $ref: '#/components/schemas/PriceOutput'
          description: Total including VAT
        taxes:
          allOf:
            - $ref: '#/components/schemas/PriceOutput'
          description: VAT
        shipping:
          allOf:
            - $ref: '#/components/schemas/PriceOutput'
          description: Shipping Cost
        discount:
          allOf:
            - $ref: '#/components/schemas/PriceOutput'
          description: Discount
        orderStatus:
          $ref: '#/components/schemas/OrderStatus'
        reservationId:
          type: string
          example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the linked reservation, prefixed with `reservation-` and
            followed by a 36 characters long UUID.
        createdAt:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
        updatedAt:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
          nullable: true
        customerEmailAddress:
          type: string
          example: johndoe@lochting.com
          description: Email address of the customer
          nullable: true
        customerLocale:
          type: string
          example: nl_BE
          description: Locale of the customer
          nullable: true
        customerFirstName:
          type: string
          example: John
          description: First name of customer
          nullable: true
        customerLastName:
          type: string
          example: Doe
          description: Last name of customer
          nullable: true
        customerAddress:
          type: string
          example: Dendermondsesteenweg 140C
          description: Street + Street number + box
          nullable: true
        customerZipCode:
          type: string
          example: '9000'
          description: Zipcode of customer
          nullable: true
        customerCity:
          type: string
          example: Gent
          description: City of customer
          nullable: true
        customerCountry:
          allOf:
            - $ref: '#/components/schemas/Country'
          description: ISO CountryCode of Customer
          nullable: true
        customerPhoneNumber:
          type: string
          example: '123456789'
          description: Phone of customer
          nullable: true
        shippingMethod:
          allOf:
            - $ref: '#/components/schemas/ShippingMethod'
          nullable: true
        shippingName:
          type: string
          example: John
          description: concatenated name of addressee
          nullable: true
        shippingAddress:
          type: string
          example: Dendermondsesteenweg 140C
          description: Street + Street number + box of shipping address
          nullable: true
        shippingZipCode:
          type: string
          example: '9000'
          description: Zipcode of shipping address
          nullable: true
        shippingCity:
          type: string
          example: Gent
          description: City of shipping address
          nullable: true
        shippingCountry:
          allOf:
            - $ref: '#/components/schemas/Country'
          description: ISO CountryCode of shipping address
          nullable: true
        paymentMethod:
          allOf:
            - $ref: '#/components/schemas/PaymentMethod'
          nullable: true
        orderLines:
          type: array
          items:
            $ref: '#/components/schemas/OrderCreateOrderLine'
          description: Order Lines
        remarks:
          type: string
          description: Additional remarks
          nullable: true
        prescriptionBarcodes:
          type: array
          items:
            type: string
          description: Prescription barcodes
          example:
            - BEP1K5H5PPK6
            - BEP19D1M3VZS
            - BEP163CHB4RS
    OrderListItem:
      type: object
      required:
        - orderId
        - orderNumber
        - salesChannelId
        - externalReferenceId
        - total
        - taxes
        - shipping
        - discount
        - orderStatus
        - createdAt
      properties:
        orderId:
          type: string
          example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the order, prefixed with `order-` and followed by a 36
            characters long UUID.
        orderNumber:
          type: string
          example: W00010
        salesChannelId:
          type: string
          example: webshop-03cac0fc-feaf-5bc5-a3d1-8dc5e80ada46
          description: >-
            The id of the sales channel, prefixed with `webshop-` or `device-`
            and followed by a 36 characters long UUID.
        externalReferenceId:
          type: string
          example: '34'
          description: The external reference ID of the integrator
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethod'
        total:
          allOf:
            - $ref: '#/components/schemas/PriceOutput'
          description: Total including VAT
        taxes:
          allOf:
            - $ref: '#/components/schemas/PriceOutput'
          description: VAT
        shipping:
          allOf:
            - $ref: '#/components/schemas/PriceOutput'
          description: Shipping Cost
        discount:
          allOf:
            - $ref: '#/components/schemas/PriceOutput'
          description: Discount
        orderStatus:
          $ref: '#/components/schemas/OrderStatus'
        createdAt:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
        updatedAt:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
          nullable: true
        shippingMethod:
          allOf:
            - $ref: '#/components/schemas/ShippingMethod'
          nullable: true
        customerEmailAddress:
          type: string
          example: johndoe@lochting.com
          description: Email address of the customer
          nullable: true
        customerFirstName:
          type: string
          example: John
          description: First name of customer
          nullable: true
        customerLastName:
          type: string
          example: Doe
          description: Last name of customer
          nullable: true
    OrderCreateOrderLine:
      type: object
      required:
        - productCode
        - productName
        - quantity
        - unitPriceIncludingVat
        - totalIncludingVat
        - discountIncludingVat
        - vatAmount
        - vatPercentage
        - discountPercentage
      properties:
        productCode:
          type: object
          required:
            - type
            - value
          properties:
            type:
              $ref: '#/components/schemas/ProductCodeType'
            value:
              type: string
              example: '1234567'
              description: The product code value
          description: The unique product code
        productName:
          type: string
          example: product A
          description: Name of the product
        quantity:
          type: number
          example: 3
          description: Quantity ordered
        unitPriceIncludingVat:
          type: number
          example: 121
          description: Price in cents
        unitPriceExcludingVat:
          type: number
          example: 100
          description: Price in cents
        totalIncludingVat:
          type: number
          example: 121
          description: Price in cents
        totalExcludingVat:
          type: number
          example: 100
          description: Price in cents
        discountExcludingVat:
          type: number
          description: Price in cents
        discountIncludingVat:
          type: number
          description: Price in cents
        vatAmount:
          type: number
          example: 21
          description: Total VAT
        vatPercentage:
          type: number
          example: 21
          description: value between (0 and 100)
        discountPercentage:
          type: number
          description: value between (0 and 100)
    ReservationDetails:
      type: object
      required:
        - reservationId
        - reservationCode
        - reservationStatus
        - createdAt
        - products
      properties:
        reservationId:
          type: string
          example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the reservation, prefixed with `reservation-` and followed
            by a 36 characters long UUID.
        reservationCode:
          type: string
          example: XXX12345A
          description: The generated code. Can be used by a customer on the matic.
        reservationStatus:
          $ref: '#/components/schemas/ReservationStatus'
        orderId:
          type: string
          example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the order, prefixed with `order-` and followed by a 36
            characters long UUID.
        createdAt:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
        customerLocale:
          allOf:
            - $ref: '#/components/schemas/Locale'
          description: Locale of the customer
          nullable: true
        remarks:
          type: string
          description: Additional remarks
          nullable: true
          example: hello
        products:
          type: array
          items:
            type: object
            required:
              - quantity
              - productCodes
              - name
            properties:
              productId:
                type: string
                description: The internal Lochting id of the product, prefixed with `product-` and followed by a 36 characters long UUID.
                example: product-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
              quantity:
                type: number
                description: Quantity reserved
                example: 2
              productCodes:
                $ref: '#/components/schemas/ProductCodes'
              name:
                type: array
                description: Name of the product
                items:
                  type: object
                  properties:
                    nl_BE:
                      type: string
                      description: NL translation
                    fr_BE:
                      type: string
                      description: FR translation
              packDetails:
                type: array
                description: An array of pack details. Can be empty if the robot did not reserve the products yet.
                items:
                  type: object
                  properties:
                    packId:
                      type: string
                      description: The unique id of the pack
                      example: '2020230310114456'
                    scanCode:
                      type: string
                      description: The scan code of the pack. Contains FMD data
                      example: '01054005810010171029065B/1\u001d17250131211WTLWMM29T'
          description: Reserved products
        customerEmail:
          type: string
          example: johndoe@lochting.com
          description: Email address of the customer
          nullable: true
        customerPhone:
          type: string
          example: '123456789'
          description: Phone of customer
          nullable: true
        reservationDelivery:
          type: object
          required:
            - id
            - destination
          properties:
            id:
              type: string
              example: '2'
              description: The unique id of the delivery
            destination:
              type: number
              example: 2
              description: The output destination id
          description: Details about the reservation delivery
        isOverBoxReservation:
          type: boolean
    ReservationItem:
      type: object
      required:
        - reservationId
        - reservationCode
        - reservationStatus
        - createdAt
      properties:
        reservationId:
          type: string
          example: reservation-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the reservation, prefixed with `reservation-` and followed
            by a 36 characters long UUID.
        reservationCode:
          type: string
          example: XXX12345A
          description: The generated code. Can be used by a customer on the matic.
        reservationStatus:
          $ref: '#/components/schemas/ReservationStatus'
        orderId:
          type: string
          example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the order, prefixed with `order-` and followed by a 36
            characters long UUID.
        createdAt:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
        customerLocale:
          allOf:
            - $ref: '#/components/schemas/Locale'
          description: Locale of the customer
          nullable: true
        remarks:
          type: string
          description: Additional remarks
          nullable: true
        customerEmail:
          type: string
          example: johndoe@lochting.com
          description: Email address of the customer
          nullable: true
        customerPhone:
          type: string
          example: '123456789'
          description: Phone of customer
          nullable: true
    ReservationCreateItem:
      type: object
      required:
        - orderId
      properties:
        orderId:
          type: string
          example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the order, prefixed with `order-` and followed by a 36
            characters long UUID.
        customerEmail:
          type: string
          example: johndoe@lochting.com
          description: Email address of the customer
          nullable: true
        customerLocale:
          allOf:
            - $ref: '#/components/schemas/Locale'
          description: Locale of the customer
          nullable: true
        remarks:
          type: string
          description: Additional remarks
          nullable: true
        customerPhone:
          type: string
          example: '123456789'
          description: Phone of customer
          nullable: true
        muteAllNotifications:
          type: boolean
          example: true
          description: Indicates if Lochting has to mute all communications (default true)
          nullable: true
        isOverBoxReservation:
          type: boolean
          description: >-
            Set to true if all products are placed in a container in the robot 
            (default false)
          nullable: true
    StockImport:
      type: object
      required:
        - stockType
        - stockSourceLabel
        - replaceCurrentStock
        - productStock
      properties:
        stockType:
          $ref: '#/components/schemas/stockType'
        stockSourceLabel:
          type: string
          example: '''Robot Stock'''
          description: A human readable label of the stock source
        replaceCurrentStock:
          type: boolean
          description: Before importing stock, remove all previously imported stock first
        productStock:
          type: array
          description: Product stock
          items:
            type: object
            required:
              - productCode
              - quantity
            properties:
              productCode:
                type: object
                required:
                  - type
                  - value
                properties:
                  type:
                    $ref: '#/components/schemas/ProductCodeType'
                  value:
                    type: string
                    example: '1234567'
                    description: The product code value
                description: The unique product code
              quantity:
                type: number
                example: 3
                description: Quantity in stock
    PriceImport:
      type: object
      required:
        - replaceCurrentPrices
        - productPrices
      properties:
        replaceCurrentPrices:
          type: boolean
          description: Before importing prices, remove all previously imported prices first
        productPrices:
          type: array
          items:
            type: object
            required:
              - productCode
              - price
              - vatRate
            properties:
              productCode:
                type: object
                required:
                  - type
                  - value
                properties:
                  type:
                    $ref: '#/components/schemas/ProductCodeType'
                  value:
                    type: string
                    example: '1234567'
                    description: The product code value
                description: The unique product code
              price:
                type: number
                description: Price in cents
                example: 121
              vatRate:
                type: number
                description: Value between (0 and 100)
                example: 21
              promotionalPrice:
                type: number
                description: Promotional price in cents
                example: 121
          description: Product prices
    ShipmentDetails:
      type: object
      required:
        - shipmentId
        - orderId
        - salesChannelId
        - customerFirstName
        - customerLastName
        - customerPhone
        - customerEmailAddress
        - shippingStreet
        - shippingStreetNr
        - shippingZipCode
        - shippingCity
        - shippingCountry
        - carrierCode
        - createdAt
        - weight
      properties:
        shipmentId:
          type: string
          example: shipment-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the shipment, prefixed with `shipment-` and followed by a
            36 characters long UUID.
        orderId:
          type: string
          example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the order, prefixed with `order-` and followed by a 36
            characters long UUID.
        salesChannelId:
          type: string
          example: webshop-03cac0fc-feaf-5bc5-a3d1-8dc5e80ada46
          description: >-
            The id of the sales channel, prefixed with `webshop-` or `device-`
            and followed by a 36 characters long UUID.
        customerFirstName:
          type: string
          example: John
          description: First name of customer
        customerLastName:
          type: string
          example: Doe
          description: Last name of customer
        customerPhone:
          type: string
          example: '123456789'
          description: Phone of customer
        customerEmailAddress:
          type: string
          example: johndoe@lochting.com
          description: >-
            Email address of the customer to whom the track and trace email will
            be sent
        shippingStreet:
          type: string
          example: Dendermondsesteenweg
          description: Street
        shippingStreetNr:
          type: string
          example: 140c
          description: Street number + box of shipping address
        shippingZipCode:
          type: string
          example: '9000'
          description: Zipcode of shipping address
        shippingCity:
          type: string
          example: Gent
          description: City of shipping address
        shippingCountry:
          allOf:
            - $ref: '#/components/schemas/Country'
          description: ISO CountryCode of shipping address
        carrierCode:
          type: string
          example: bpost
          description: Carrier (currently only bpost)
        createdAt:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
        updatedAt:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
          nullable: true
        weight:
          allOf:
            - $ref: '#/components/schemas/Weight'
          description: the weight of the parcel
        trackingNumber:
          type: string
          example: '323201150859923439129030'
          description: The tracking number
          nullable: true
        trackingUrl:
          type: string
          example: >-
            https://tracking.eu-central-1-0.sendcloud.sc/forward?carrier=bpost&code=323201150859923439129030&destination=BE&lang=nl-nl&source=BE&type=parcel&verification=2300&servicepoint_verification=&created_at=2023-04-25
          description: Tracking url
          nullable: true
        status:
          allOf:
            - $ref: '#/components/schemas/Status'
          nullable: true
    ShipmentListItem:
      type: object
      required:
        - shipmentId
        - salesChannelId
        - orderId
        - customerFirstName
        - customerLastName
        - customerPhone
        - carrierCode
        - createdAt
        - weight
      properties:
        shipmentId:
          type: string
          example: shipment-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the shipment, prefixed with `shipment-` and followed by a
            36 characters long UUID.
        salesChannelId:
          type: string
          example: webshop-03cac0fc-feaf-5bc5-a3d1-8dc5e80ada46
          description: >-
            The id of the sales channel, prefixed with `webshop-` or `device-`
            and followed by a 36 characters long UUID.
        orderId:
          type: string
          example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the order, prefixed with `order-` and followed by a 36
            characters long UUID.
        customerFirstName:
          type: string
          example: John
          description: First name of customer
        customerLastName:
          type: string
          example: Doe
          description: Last name of customer
        customerPhone:
          type: string
          example: '123456789'
          description: Phone of customer
        carrierCode:
          type: string
          example: bpost
          description: Carrier (currently only bpost)
        createdAt:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
        updatedAt:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
          nullable: true
        weight:
          allOf:
            - $ref: '#/components/schemas/Weight'
          description: the weight of the parcel
        status:
          allOf:
            - $ref: '#/components/schemas/Status'
          nullable: true
    ShipmentCreateItem:
      type: object
      required:
        - orderId
        - weightInGrams
      properties:
        orderId:
          type: string
          example: order-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the order, prefixed with `order-` and followed by a 36
            characters long UUID.
        weightInGrams:
          type: number
          example: 900
          description: The weight in grams of the parcel
    Status:
      type: string
      description: The status of the shipment
      enum:
        - Address invalid
        - Announced
        - 'Announced: not collected'
        - Announcement failed
        - At customs
        - At sorting
        - Awaiting customer pickup
        - Being announced
        - Being sorted
        - Cancellation request
        - Cancelled
        - Cancelled upstream
        - Delivered
        - Delivery attempt failed
        - Delivery delayed
        - Driver en route
        - En route to sorting center
        - Error collecting
        - Exception
        - No label
        - Not sorted
        - Parcel en route
        - Ready to send
        - Refused by recipient
        - Shipment collected by customer
        - Shipment picked up by driver
        - Sorted
        - Unable to deliver The parcel
      example: Announced
    Weight:
      type: object
      required:
        - amount
        - amountInGrams
        - amountInKilograms
      properties:
        amount:
          type: number
          example: 900
        amountInGrams:
          type: number
          example: 900
        amountInKilograms:
          type: number
          example: 0.9
    WebhookCreateItem:
      type: object
      required:
        - url
        - webhookType
      properties:
        url:
          type: string
          example: https://www.example.com
          description: The url that needs to be called with the POST (json) request
        webhookType:
          $ref: '#/components/schemas/WebhookType'
        authenticationType:
          $ref: '#/components/schemas/WebhookAuthenticationType'
        secret:
          type: string
          description: >-
            The secret to be used in the `X-Webhook-Secret` header when the
            webhook url is called
        contactEmailAddress:
          type: string
          format: email
          example: john@doe.com
          description: >-
            The contact email to be used to notify you when webhook calls fail
    WebhookListItem:
      type: object
      required:
        - webhookId
        - url
        - webhookType
        - createdOn
      properties:
        webhookId:
          type: string
          example: webhook-c7d932c1-84e8-410c-a9b2-18bf739d6b8b
          description: >-
            The id of the webhook, prefixed with `webhook-` and followed by a 36
            characters long UUID.
        url:
          type: string
          example: https://www.this-is-a-callback-url.org
          description: The url that will be called when the webhook is activated.
        webhookType:
          $ref: '#/components/schemas/WebhookType'
        createdOn:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
        updatedOn:
          type: string
          example: '2020-02-28 15:02:11'
          description: iso datetime (Y-m-d H:i:s)
          nullable: true
    WebhookType:
      type: string
      description: The webhook type
      enum:
        - orderWasAccepted
        - orderStatusWasUpdated
        - reservationWasCreated
        - reservationStatusWasUpdated
        - shipmentStatusWasUpdated
      example: orderWasAccepted
    WebhookAuthenticationType:
      type: string
      description: The authentication type to use when the webhook url is called
      enum:
        - none
        - secret
      example: none
    PaymentMethod:
      type: string
      description: The payment method
      enum:
        - maestro
        - bancontact
        - visa_mastercard
        - paypal
        - carte_bleue
        - offline_payment
        - payconiq
        - tyro_mastercard
        - free
      example: bancontact
    OrderStatus:
      type: string
      description: The order status
      enum:
        - pending
        - paid
        - readyToPickUpInStore
        - complete
        - canceled
      example: paid
    List:
      type: object
      required:
        - total
        - items
      properties:
        pagination:
          type: object
          required:
            - page
            - size
          properties:
            page:
              type: number
              example: 1
              description: Page number
            size:
              type: number
              example: 10
              description: Page size
          description: Pagination
        total:
          type: number
          example: 1
          description: Total number of items.
        items:
          type: array
          items: {}
          description: List of items
    Currency:
      type: string
      description: Currency
      enum:
        - EUR
        - AUD
        - SGD
        - CZK
    CurrencyOutput:
      type: object
      required:
        - name
        - symbol
      properties:
        name:
          type: string
          example: EUR
          description: name of the currency
        symbol:
          type: string
          example: €
          description: unicode of the currency symbol
    PriceOutput:
      type: object
      required:
        - amountInCents
        - currency
      properties:
        amountInCents:
          type: number
          example: 4000
        currency:
          $ref: '#/components/schemas/CurrencyOutput'
    ShippingMethod:
      type: string
      enum:
        - pickup
        - locker
        - localDelivery
        - serviceDelivery
      example: pickup
    ProductCodeType:
      type: string
      description: The type of product code
      enum:
        - EanCode
        - GtinCode
        - CnkCode
        - Acl13Code
        - Cip13Code
        - CipOrAcl7Code
        - OspCode
        - PznCode
        - PznAustriaCode
        - UdiCode
        - CodeNational
        - PdkCode
        - SuklCode
      example: EanCode
    ProductCodes:
      type: object
      description: List of product codes
      properties:
        EanCode:
          type: array
          items:
            type: string
          example: ['4030539112468', '4030539113007']
        GtinCode:
          type: array
          items:
            type: string
          example: ['08717606032053']
        CnkCode:
          type: array
          items:
            type: string
          example: ['1013168']
        Acl13Code:
          type: array
          items:
            type: string
          example: ['3401123456789']
        Cip13Code:
          type: array
          items:
            type: string
          example: ['3400123456789']
        CipOrAcl7Code:
          type: array
          items:
            type: string
          example: ['1234567']
        OspCode:
          type: array
          items:
            type: string
          example: ['some-code-OspCode']
        PznCode:
          type: array
          items:
            type: string
          example: ['1234567', '12345678']
        PznAustriaCode:
          type: array
          items:
            type: string
          example: ['1234567', '7654321']
        UdiCode:
          type: array
          items:
            type: string
          example: ['1234567']
        CodeNational:
          type: array
          items:
            type: string
          example: ['123456']
        PdkCode:
          type: array
          items:
            type: string
          example: ['1234567']
        SuklCode:
          type: array
          items:
            type: string
          example: ['1234567']
        CustomCode:
          type: array
          items:
            type: string
          example: ['Custom1234567']
    SalesChannelType:
      type: string
      description: The sales channel type
      enum:
        - mobileApplication
        - pos
        - other
      example: pos
    stockType:
      type: string
      description: The stockType type
      enum:
        - inHouse
        - robot
      example: inHouse
    Country:
      type: string
      enum:
        - BE
        - FR
        - AU
        - DE
        - ES
        - AT
        - CZ
        - SG
        - PT
      example: BE
    Locale:
      type: string
      enum:
        - nl_BE
        - fr_BE
        - en_BE
        - de_BE
        - fr_FR
        - en_FR
        - de_DE
        - en_DE
        - en_AU
        - en_ES
        - es_ES
        - en_AT
        - de_AT
        - en_CZ
        - cs_CZ
        - en_SG
        - en_PT
        - pt_PT
      example: nl_BE
    ReservationStatus:
      type: string
      description: The reservation status
      enum:
        - incomplete
        - complete
        - robotReservationFailed
        - deliveryRequested
        - deliveryRequestFailed
        - delivered
        - deliveryFailed
        - pickedUp
        - pickUpFailed
        - canceled
      example: incomplete
    UpdateReservationStatus:
      type: string
      description: The reservation status
      enum:
        - pickedUp
        - canceled
      example: canceled
tags:
  - name: Authentication
    description: >-
      Lochting is committed to providing a secure and user-friendly experience,
      and as part of our authentication process, we utilize JSON Web Tokens
      (JWT). JWT tokens have become a widely adopted industry standard for
      robust authentication and authorization in modern web applications.


      When users access Lochting, their credentials are verified, and upon
      successful authentication, an access token and a refresh token are issued.
      The access token serves as a temporary credential, granting users access
      to protected resources and functionalities within Lochting. **These access
      tokens remain valid for a day**, ensuring a balance between security and
      user convenience.


      Refresh tokens play a pivotal role in maintaining seamless user sessions.
      With a lifespan of **three days**, refresh tokens provide an extended
      duration for accessing Lochting without requiring users to repeatedly log
      in. When an access token expires, users can utilize their refresh token to
      obtain a new access token, ensuring uninterrupted access to Lochting's
      features.


      To obtain an access token, users can easily [contact
      us](https://www.lochting.com/en/contact/) by visiting our official website
      to request their API key. This API key serves as the authentication
      mechanism to retrieve the access token securely. Our dedicated support
      team will promptly assist users in obtaining their API key, ensuring a
      smooth and secure authentication process within Lochting.


      Access to the API is granted based on the scope of the API key. The
      following scopes are available:

      * `orders`

      * `reservations`

      * `shipments`

      * `webhooks`
  - name: Orders
    description: >-
      In the Lochting software, an order represents a sale of products, and in
      certain cases, these products can be reserved in an MT.Matic.


      Depending on the availability and specific logistics arrangements, some
      products may be eligible for reservation in a Meditech Pharma robot.

      This reservation can be collected through the
      [MT.Matic](https://www.lochting.com/en/products/mt-matic/) vending
      machine.


      The MT.MATIC (PRO or SLIM) is an intelligent wall dispenser linked to a
      Meditech pharmacy robot.
  - name: Reservations
    description: >-
      In the Lochting software, we have 2 devices that can make use of
      reservations: MT.Matic and MT.Collect.


      A reservation is a collection of products that are set aside and


      * In the case of MT.Matic: are reserved in the robot and can be collected
      through the MT.Matic vending machine for a specific order or customer.

      * In the case of the MT.Collect: are reserved in the Parcel Locker and can
      be collected through the MT.Collect Parcel Locker for a specific order or
      customer.


      To facilitate the pickup process, a specific code is assigned to each
      reservation. This code serves as a unique identifier and allows the
      customer to access their reserved products. The customer typically
      provides this code at the MT.Matic/MT.Collect, which then retrieves the
      reserved items for the customer to pick up.


      [MT.Matic](https://www.lochting.com/en/products/mt-matic/) refers to our
      automated reservation system, designed to optimize inventory management
      and ensure efficient order fulfillment. The MT.MATIC SLIM is an
      intelligent wall dispenser linked to your Meditech pharmacy robot.
      Customers will still be able to click & collect products and enjoy your
      24/7 pharmacy service.
  - name: Robot
    description: >-
      The Lochting software can be configured to integrate with a product
      storage robot like the Meditech Pharma robot.
  - name: Stock
    description: >-
      In Lochting, stock levels are used to determine the saleability of a
      product on a sales channel (webshop, MT.Matic, ...)


      [MT.Matic](https://www.lochting.com/en/products/mt-matic/) refers to our
      automated reservation system, designed to optimize inventory management
      and ensure efficient order fulfillment. The MT.MATIC SLIM is an
      intelligent wall dispenser linked to your Meditech pharmacy robot.
      Customers will still be able to click & collect products and enjoy your
      24/7 pharmacy service.
  - name: Prices
    description: >-
      In the Lochting software, prices are used to sell products on a sales
      channel (MT.SHOP, MT.MATIC, MT.VISION, MT.COLLECT).

      All prices are considered to be tax included.


      * The MT.SHOP is pharmacy webshop product.

      * The [MT.MATIC](https://www.lochting.com/en/products/mt-matic/) (PRO or
      SLIM) is an intelligent wall dispenser linked to a Meditech pharmacy
      robot.

      * The MT.VISION is a TV advertising screen product.

      * The MT.COLLECT is a Parcel Locker.
  - name: Shipments
    description: >-
      :::note

      At this moment, Lochting shipments are only available for Belgian
      customers.


      In order to start using Lochting shipments, the integration needs to be
      configured for your branch. Please [contact
      us](https://www.lochting.com/en/contact/) so we can set it up for you.
      Make sure to provide us the address from where shipments will be sent.

      :::


      In Lochting shipments can be created from an order. In Belgium, these
      shipments will be sent by the Bpost carrier. It is possible to track the
      shipments and print package slips. Shipments can have a weight up to 10KG.


      A shipment is ready to send when the label has been generated. This can be
      done by using the Shipment label endpoint.
  - name: Webhooks
    description: >-
      A Lochting platform integrator can utilize webhooks to streamline
      processes. Webhooks are automated notifications that enable real-time data
      exchange between the platform and external systems, enhancing integration
      and enabling seamless communication.


      When a webhooks gets triggered, the platform will send a POST request to
      the configured URL. The request will contain a JSON payload with the data
      that is relevant for the event that triggered the webhook.


      An example of a JSON webhook call payload:


      ``` json

      {
          "id": "order-76db8ac0-2d3a-45fc-956a-da4525361492",
          "webhookId": "webhook-be3768e4-8caf-43b6-bb66-32c8cb00cede",
          "webhookType": "orderStatusWasUpdated",
          "on": "2020-02-25 10:20:30"
      }

      ```


      For debugging purposes you can use the Test
      Webhook endpoint to trigger a webhook.


      For increased security, the webhook payload can be signed with a secret.
      The secret is an optional string that can be unique for each webhook. When
      configured, the secret is send with every webhook call. The secret is
      added to the request headers as `X-Webhook-Secret`.
