KDS_API.json

📘

To start testing please follow the instructions in Github Swagger UI Editor

{
  "openapi": "3.1.0",
  "info": {
    "title": "KDS API",
    "description": " Deliverect allows restaurants to directly connect channels like UberEats, Takeaway.com, Glovo and others with their POS system. More info on features and platforms supported on [https://deliverect.com/](https://deliverect.com/) This API can be used to integrate additional channels or POS systems, but also by bigger restaurants",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.staging.deliverect.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Authentication",
      "description": " "
    },
    {
      "name": "Endpoints",
      "description": "(Deliverect Enpoints)"
    }
  ],
  "paths": {
    "/oauth/token": {
      "post": {
        "tags": ["Authentication"],
        "summary": "Machine 2 Machine Access Token",
        "requestBody": {
          "content": {
            "*/*": {
              "schema": {
                "type": "string",
                "examples": [
                  {
                    "client_id": "{{clientId}}",
                    "client_secret": "{{clientSecret}}",
                    "audience": "https://api.deliverect.com",
                    "grant_type": "token"
                  }
                ]
              }
            }
          }
        },
        "parameters": [
          {
            "name": "content-type",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "example": "application/json"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "Date": {
                "schema": {
                  "type": "string",
                  "examples": ["Wed, 20 Feb 2019 13:18:00 GMT"]
                }
              },
              "Content-Type": {
                "schema": {
                  "type": "string",
                  "examples": ["application/json"]
                }
              },
              "Content-Length": {
                "schema": {
                  "type": "integer",
                  "examples": ["828"]
                }
              },
              "Connection": {
                "schema": {
                  "type": "string",
                  "examples": ["keep-alive"]
                }
              },
              "X-Auth0-RequestId": {
                "schema": {
                  "type": "string",
                  "examples": ["521b1266bf81fec2fb6b"]
                }
              },
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "integer",
                  "examples": ["30"]
                }
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "integer",
                  "examples": ["29"]
                }
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "integer",
                  "examples": ["1550668681"]
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "examples": [
                    "private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
                  ]
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "examples": ["no-cache"]
                }
              },
              "Strict-Transport-Security": {
                "schema": {
                  "type": "string",
                  "examples": ["max-age=15724800"]
                }
              },
              "X-Robots-Tag": {
                "schema": {
                  "type": "string",
                  "examples": ["noindex, nofollow, nosnippet, noarchive"]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "access_token": "ey**-**-Q",
                  "expires_at": 1620899002,
                  "token_type": "Bearer",
                  "scope": "genericPOS provisioning"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "headers": {
              "Date": {
                "schema": {
                  "type": "string",
                  "examples": ["Wed, 20 Feb 2019 13:11:39 GMT"]
                }
              },
              "Content-Type": {
                "schema": {
                  "type": "string",
                  "examples": ["application/json"]
                }
              },
              "Content-Length": {
                "schema": {
                  "type": "integer",
                  "examples": ["60"]
                }
              },
              "Connection": {
                "schema": {
                  "type": "string",
                  "examples": ["keep-alive"]
                }
              },
              "X-Auth0-RequestId": {
                "schema": {
                  "type": "string",
                  "examples": ["1bb8a6bbea0c249b00dd"]
                }
              },
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "integer",
                  "examples": ["30"]
                }
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "integer",
                  "examples": ["29"]
                }
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "integer",
                  "examples": ["1550668300"]
                }
              },
              "WWW-Authenticate": {
                "schema": {
                  "type": "string",
                  "examples": ["Basic realm={{Users}}"]
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "examples": [
                    "private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "error": "access_denied",
                  "error_description": "Unauthorized"
                }
              }
            }
          }
        }
      }
    },
    "/kds/orderStatus/{orderId}": {
      "post": {
        "tags": ["Endpoints"],
        "summary": "Update Order Status",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "examples": [
                  {
                    "orderId": "6239****835f",
                    "status": 50,
                    "reason": "Order is being prepared."
                  }
                ]
              }
            }
          }
        },
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {}
            }
          }
        }
      }
    },
    "/orderStatus/{orderId}": {
      "post": {
        "tags": ["Endpoints"],
        "summary": "Update order status",
        "description": "This endpoint allows a POS to update the status of an order at each stage in its preparation. It also allows for the modification of the pickupTime",
        "requestBody": {
          "content": {
            "*/*": {
              "schema": {
                "type": "string",
                "examples": [
                  {
                    "orderId": "5d****e3448c290010****53",
                    "status": 10,
                    "reason": "new order",
                    "timeStamp": "2019-09-05 07:44:15.000Z",
                    "receiptId": "1234"
                  }
                ]
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "Content-Type",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "example": "application/json"
          },
          {
            "name": "orderId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "example-0": {
                    "summary": "NEW order",
                    "value": {
                      "result": "OK"
                    }
                  },
                  "example-1": {
                    "summary": "Order CANCELED",
                    "value": {
                      "result": "OK"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "description": "default",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                },
                "example": null
              }
            }
          }
        }
      }
    },
    "/products/snoozeByTags": {
      "post": {
        "tags": ["Endpoints"],
        "summary": "Mark products out of stock by tag",
        "description": "Mark products out of stock for a certain amount of time based on their tag and location. You can use the same call to unsnooze product passing `snoozeEnd` time in the past. ##### NOTE Please note, that here and later all dates and times, coming from/to Deliverect are UTC.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "examples": [
                  {
                    "account": "{{account_id}}",
                    "location": "{{location_id}}",
                    "tags": [1],
                    "snoozeStart": "2019-03-06T15:45:00.000Z",
                    "snoozeEnd": "2019-03-07T15:45:00.000Z"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "default",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                },
                "examples": {
                  "example-0": {
                    "summary": "Single tag for all locations",
                    "value": null
                  },
                  "example-1": {
                    "summary": "Single tag for one location",
                    "value": null
                  },
                  "example-2": {
                    "summary": "Multiple tags for all locations",
                    "value": null
                  },
                  "example-3": {
                    "summary": "Multiple tag for one location",
                    "value": null
                  }
                }
              }
            }
          }
        }
      }
    },
    "/products/snoozeByPlus": {
      "post": {
        "tags": ["Endpoints"],
        "summary": "Mark products out of stock by PLU",
        "description": "Mark products out of stock for a certain amount of time based on their PLU and location. You can use the same call to unsnooze product passing `snoozeEnd` time in the past.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "examples": [
                  {
                    "account": "{{account_id}}",
                    "location": "{{location_id}}",
                    "plus": ["PLU1"],
                    "snoozeStart": "2019-03-06T15:45:00.000Z",
                    "snoozeEnd": "2019-03-07T15:45:00.000Z"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "default",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                },
                "examples": {
                  "example-0": {
                    "summary": "Multiple PLUs across all locations",
                    "value": null
                  },
                  "example-1": {
                    "summary": "Multiple PLUs for one location",
                    "value": null
                  },
                  "example-2": {
                    "summary": "Single PLU for one location",
                    "value": null
                  },
                  "example-3": {
                    "summary": "Single PLU across all locations",
                    "value": null
                  }
                }
              }
            }
          }
        }
      }
    },
    "/allAllergens/": {
      "get": {
        "tags": ["Endpoints"],
        "summary": "Allergens and tags",
        "description": "This allows a channel to get allergens and tags existing in Deliverect.",
        "parameters": [
          {
            "name": "Authorization",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "example": "{authToken}"
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": [
                  {
                    "name": "Alcohol",
                    "allergenId": 1
                  },
                  {
                    "name": "Halal",
                    "allergenId": 2
                  },
                  {
                    "name": "Kosher",
                    "allergenId": 3
                  },
                  {
                    "name": "Vegan",
                    "allergenId": 4
                  },
                  {
                    "name": "Vegetarian",
                    "allergenId": 5
                  }
                ]
              }
            }
          }
        }
      }
    }
  },
  "webhooks": {
    "/yourwebhook.com/products": {
      "get": {
        "tags": ["Partner Webhooks"],
        "summary": "-  Your KDS will receive this type of request every time a user pushes products from within Deliverect.",
        "description": "Your KDS will receive this type of request every time a user pushes products from within Deliverect.Using these products you can match products in orders coming from Deliverect.",
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {}
              }
            }
          }
        }
      }
    },
    "/yourwebhook.com/orders": {
      "get": {
        "tags": ["Partner Webhooks"],
        "summary": "- An order represents what a customer ordered using a channe",
        "description": "An order represents what a customer ordered using a channel",
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "orderId": "6239****835f",
                  "account": "620d****0f77",
                  "location": "620d1****0f79",
                  "channelOrderId": "31yr****vyz1",
                  "channelOrderDisplayId": "1z3pW****xCZQ4",
                  "posReceiptId": "",
                  "orderType": 3,
                  "channel": 10000,
                  "pickupTime": "2022-03-03T13:03:00Z",
                  "deliveryIsAsap": false,
                  "note": "",
                  "items": [
                    {
                      "plu": "CMB-02",
                      "name": "Vegetarian Rames",
                      "quantity": 1,
                      "subItems": [
                        {
                          "plu": "VEG-01",
                          "name": "Vegetables Sayur Lodeh",
                          "quantity": 1,
                          "subItems": []
                        },
                        {
                          "plu": "VEG-02",
                          "name": "Vegetables Mix Tumisan",
                          "quantity": 1,
                          "subItems": []
                        },
                        {
                          "plu": "DRN-02",
                          "name": "Coca Cola Zero Sugar",
                          "itemRemark": "Iced.",
                          "quantity": 1,
                          "subItems": []
                        }
                      ],
                      "itemRemark": "No garlic sauce"
                    }
                  ],
                  "packaging": {
                    "includeCutlery": false
                  },
                  "brandId": "60ba****4c57",
                  "brandName": "Space Bar",
                  "remake": false,
                  "customerName": "MD1",
                  "status": 1
                }
              }
            }
          }
        }
      }
    },
    "/yourwebhook.com/register": {
      "post": {
        "tags": ["Partner Webhooks"],
        "summary": "- Registration of a KDS in Deliverect",
        "description": "Webhook called during registration of a KDS in Deliverect. For instance, when a new customer enables a KDS for a location, you will receive the register event.",
        "requestBody": {
          "content": {}
        },
        "responses": {
          "default": {
            "description": "default",
            "headers": {
              "Content-Type": {
                "schema": {
                  "type": "string",
                  "examples": ["application/json"]
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "productSyncUrl": "https://integrator.com/productSyncUrl",
                  "orderWebhookUrl": "https://integrator.com/orderWebhookUrl",
                  "orderStatusUpdateUrl": "https://integrator.com/orderStatusUpdateUrl"
                }
              }
            }
          }
        }
      }
    }
  },
  "x-readme": {
    "explorer-enabled": true,
    "proxy-enabled": true
  }
}