{
  "openapi": "3.0.2",
  "info": {
    "title": "Blizzfull API",
    "description": "Blizzfull Online Ordering API",
    "version": "2.3",
    "contact": {
      "name": "Blizzfull Engineering",
      "email": "engineering@blizzfull.com"
    }
  },
  "servers": [
    {
      "url": "https://apiv2.blizzfull.com",
      "description": "Production"
    }
  ],
  "tags": [
    {
      "name": "Orders"
    },
    {
      "name": "Items"
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiUser": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Blizzfull-API-User"
      },
      "ApiToken": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Blizzfull-API-Token"
      }
    },
    "schemas": {
      "Menu": {
        "$ref": "https://apiv2.blizzfull.com/schema/blizzfullMenuSchema.json"
      },
      "Order": {
        "type": "object",
        "properties": {
          "itemLastModified": {
            "type": "integer"
          },
          "userItemCost": {
            "type": "number",
            "format": "float"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItem"
            }
          },
          "restaurantID": {
            "type": "string"
          },
          "locationID": {
            "type": "string"
          },
          "time": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "locked": {
            "type": "boolean"
          },
          "shared": {
            "type": "boolean"
          },
          "specialInstructions": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "tip": {
            "type": "number",
            "format": "float"
          },
          "delayedTime": {
            "type": "integer"
          },
          "delivery": {
            "$ref": "#/components/schemas/Delivery"
          },
          "phone": {
            "type": "string"
          },
          "estimatedReadyTime": {
            "type": "integer"
          },
          "phoneExt": {
            "type": "string"
          },
          "totalPaid": {
            "type": "number",
            "format": "float"
          },
          "lastModified": {
            "type": "integer"
          },
          "readyTimeInputValue": {
            "type": "integer"
          },
          "confirmationCode": {
            "type": "integer"
          },
          "subTotalPrice": {
            "type": "number",
            "format": "float"
          },
          "taxExemptAmount": {
            "type": "number",
            "format": "float"
          },
          "taxExemptItemDiscounts": {
            "type": "number",
            "format": "float"
          },
          "subTotalPaid": {
            "type": "number",
            "format": "float"
          },
          "totalUsedDiscounts": {
            "type": "number",
            "format": "float"
          },
          "totalUsedItemDiscounts": {
            "type": "number",
            "format": "float"
          },
          "totalAppliedItemDiscounts": {
            "type": "number",
            "format": "float"
          },
          "lastChargedAmountTip": {
            "type": "string"
          },
          "lastChargedAmountDelivery": {
            "type": "string"
          },
          "lastChargedAmountDiscounts": {
            "type": "string"
          },
          "taxRate": {
            "type": "number",
            "format": "float"
          },
          "receiptPrinted": {
            "type": "boolean"
          },
          "reviewAcceptedBy": {
            "type": "number"
          },
          "deliveryCharge": {
            "type": "number",
            "format": "float"
          },
          "taxOnDelivery": {
            "type": "boolean"
          },
          "tax": {
            "type": "number",
            "format": "float"
          },
          "expectedTotal": {
            "type": "number",
            "format": "float"
          },
          "balanceOwed": {
            "type": "number",
            "format": "float"
          },
          "subTotalPriceWithItemDiscounts": {
            "type": "number",
            "format": "float"
          },
          "accepted": {
            "type": "boolean"
          },
          "curbside": {
            "type": "boolean"
          },
          "contactFree": {
            "type": "boolean"
          },
          "menuVersion": {
            "type": "string"
          },
          "testMode": {
            "type": "boolean"
          },
          "shareNickname": {
            "type": "string"
          },
          "groupOrderEnds": {
            "type": "integer"
          },
          "processingVia": {
            "type": "string"
          },
          "anonymousName": {
            "type": "string"
          },
          "shareMessage": {
            "type": "string"
          },
          "coupons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Coupon"
            }
          },
          "couponVersion": {
            "type": "string"
          },
          "shareType": {
            "type": "string"
          },
          "hasSingleOfferRestriction": {
            "type": "boolean"
          },
          "hasSpecialDeal": {
            "type": "boolean"
          },
          "hasAlcohol": {
            "type": "boolean"
          },
          "faxFees": {
            "type": "number",
            "format": "float"
          },
          "readyForSubmission": {
            "type": "string"
          },
          "primaryFaxID": {
            "type": "string"
          },
          "maxAmount": {
            "type": "integer"
          },
          "lockedUntil": {
            "type": "string"
          },
          "lazy": {
            "type": "boolean"
          },
          "users": {
            "type": "object",
            "description": "Keys are the user ids",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "firstName": {
                  "type": "string"
                },
                "lastName": {
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "active": {
                  "type": "string"
                }
              }
            }
          },
          "multiUser": {
            "type": "boolean"
          },
          "leader": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Transaction"
            }
          }
        }
      },
      "OrderItem": {
        "type": "object",
        "properties": {
          "itemID": {
            "type": "integer"
          },
          "orderItemID": {
            "type": "integer"
          },
          "summary": {
            "type": "object",
            "properties": {
              "options": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "additionalProperties": {
                      "type": "array",
                      "description": "Keys are the selected options. Value is an array of sub option selections",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "description": "Keys are the option groups (normally not displayed)."
              }
            }
          },
          "mask": {
            "type": "object",
            "description": "Nested tree of option sets, option item IDs and their corresponding selections. Also includes nested suboption sets. Tree can be read as follows option set id -> option item id -> selection. DOES NOT contain default selected option items"
          },
          "adjustedMask": {
            "type": "object",
            "description": "Same nested tree as the mask property, but includes default selections"
          },
          "externalOptionMapMask": {
            "type": "object",
            "description": "A list of mapped options, which includes the external IDs, to be used point-of-sale integrations"
          },
          "quantity": {
            "type": "integer"
          },
          "sizeID": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "specialInstructions": {
            "type": "string"
          },
          "price": {
            "type": "number",
            "format": "float"
          },
          "paidAmount": {
            "type": "string"
          },
          "modified": {
            "type": "integer"
          },
          "userID": {
            "type": "string"
          },
          "paidForByUserID": {
            "type": "string"
          },
          "discounts": {
            "type": "number",
            "format": "float"
          },
          "singleOfferRestriction": {
            "type": "boolean"
          },
          "comboID": {
            "type": "string"
          },
          "externalID": {
            "type": "string",
            "description": "The external ID that relates to the ID on the mapped point-of-sale side"
          },
          "externalSizeID": {
            "type": "string",
            "description": "The external size ID that relates to the size ID on the mapped point-of-sale side"
          },
          "points": {
            "type": "integer"
          },
          "loyaltyItemID": {
            "type": "integer"
          },
          "pointsPaid": {
            "type": "string"
          },
          "taxExempt": {
            "type": "boolean"
          },
          "stockTracking": {
            "type": "boolean"
          },
          "paid": {
            "type": "boolean"
          }
        }
      },
      "Coupon": {
        "type": "object",
        "properties": {
          "couponID": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "discount": {
            "type": "string"
          },
          "discountType": {
            "type": "string"
          },
          "conditions": {
            "type": "object",
            "description": "[Key] Coupon condition type [Value] Coupon condition requirement"
          },
          "expires": {
            "type": "string"
          },
          "appliesTo": {
            "type": "string"
          },
          "appliesToIDs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "code": {
            "type": "string"
          },
          "causedAddOf": {
            "type": "string"
          },
          "userID": {
            "type": "string"
          },
          "stackable": {
            "type": "boolean"
          },
          "appliedToOrderItemIDs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "includedSizes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "amountUsed": {
            "type": "string"
          },
          "realizedDiscountValue": {
            "type": "number",
            "format": "float"
          },
          "maxUses": {
            "type": "string"
          },
          "orderCouponID": {
            "type": "integer"
          },
          "autoApplied": {
            "type": "integer"
          },
          "used": {
            "type": "boolean"
          },
          "shareable": {
            "type": "boolean"
          },
          "applicable": {
            "type": "boolean"
          },
          "applicableByOrderItemID": {
            "type": "string"
          },
          "dynamic": {
            "type": "boolean"
          },
          "reusable": {
            "type": "string"
          },
          "lockedUntil": {
            "type": "integer"
          },
          "appliesToMany": {
            "type": "boolean"
          },
          "points": {
            "type": "integer"
          },
          "loyaltyItemLink": {
            "type": "string"
          },
          "usePerCustomer": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "active": {
            "type": "string"
          },
          "owner": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Transaction": {
        "type": "object",
        "properties": {
          "transactionID": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "tax": {
            "type": "string"
          },
          "tip": {
            "type": "string"
          },
          "cashTip": {
            "type": "string"
          },
          "delivery": {
            "type": "string"
          },
          "discounts": {
            "type": "string"
          },
          "userID": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "items": {
            "type": "string"
          },
          "ip": {
            "type": "string"
          },
          "paymentDigits": {
            "type": "string"
          },
          "paymentType": {
            "type": "string"
          },
          "extraCCData": {
            "type": "string"
          },
          "externalTransactionID": {
            "type": "string"
          },
          "transactionTime": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "deliveryCourierTip": {
            "type": "string"
          },
          "deliveryCourierServiceFee": {
            "type": "string"
          },
          "processor": {
            "type": "string"
          },
          "fixedGatewayFees": {
            "type": "string"
          },
          "details": {
            "type": "string"
          },
          "detailsOn": {
            "type": "string"
          },
          "externalPaymentMethod": {
            "type": "string"
          },
          "refundAmount": {
            "type": "string"
          },
          "refundedTransactionID": {
            "type": "string"
          },
          "settled": {
            "type": "string"
          },
          "pointsEarned": {
            "type": "string"
          },
          "fraudPoints": {
            "type": "string"
          },
          "fraudChecks": {
            "type": "string"
          },
          "postSubmissionModeUserInterface": {
            "type": "string"
          },
          "actionable": {
            "type": "boolean"
          }
        }
      },
      "Delivery": {
        "type": "object",
        "properties": {
          "geoLocation": {
            "$ref": "#/components/schemas/GeoLocation"
          },
          "distance": {
            "type": "string",
            "description": "kilometers"
          },
          "street": {
            "type": "string"
          },
          "street2": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "zip": {
            "type": "string"
          },
          "addressID": {
            "type": "string"
          },
          "driverID": {
            "type": "string"
          },
          "deliveryCharge": {
            "type": "number",
            "format": "float"
          },
          "deliveryChargePaid": {
            "type": "boolean"
          },
          "taxOnDelivery": {
            "type": "boolean"
          },
          "validLocations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "courierQuoteID": {
            "type": "string"
          },
          "courierQuote": {
            "type": "number",
            "format": "float"
          },
          "courierDeliveryID": {
            "type": "string"
          },
          "courierID": {
            "type": "integer"
          },
          "courierStatus": {
            "type": "string"
          },
          "courierDriverName": {
            "type": "string"
          },
          "courierTracking": {
            "type": "string"
          },
          "courierPhotoURL": {
            "type": "string"
          },
          "pickupETA": {
            "type": "string"
          },
          "courierFailure": {
            "type": "string"
          },
          "signatureImage": {
            "type": "string"
          }
        }
      },
      "Restaurant": {
        "type": "object",
        "properties": {
          "restaurantID": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "streetAddress": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "zip": {
            "type": "string"
          }
        }
      },
      "RestaurantCreation": {
        "$ref": "https://apiv2.blizzfull.com/schema/blizzfullRestaurantSchema.json"
      },
      "GeoLocation": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "format": "float"
          },
          "longitude": {
            "type": "number",
            "format": "float"
          },
          "entityType": {
            "type": "string"
          },
          "isAddress": {
            "type": "boolean"
          }
        }
      }
    }
  },
  "paths": {
    "/orders/{orderId}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get full order details for a Blizzfull order",
        "parameters": [
          {
            "in": "path",
            "name": "orderId",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Numeric ID of the order to get"
          },
          {
            "in": "query",
            "name": "posToMap",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "String name of POS to map from"
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Order",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "order": {
                      "$ref": "#/components/schemas/Order"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/orders/{orderId}/getWithRestaurant": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get full order details for a Blizzfull order and include the restaurant information as well. Useful for rendering receipts that may require restaurant information on every call",
        "parameters": [
          {
            "in": "path",
            "name": "orderId",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Numeric ID of the order to get"
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Order",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "order": {
                      "$ref": "#/components/schemas/Order"
                    },
                    "restaurant": {
                      "$ref": "#/components/schemas/Restaurant"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/orders/{orderId}/accept": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Accept/Confirm an order with Blizzfull with an ETA. Informs the customer with the ETA and may dispatch a courier if the order type is a delivery with a courier enabled for that zone.",
        "parameters": [
          {
            "in": "path",
            "name": "orderId",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Numeric ID of the order to get"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "eta should be ISO 8601 string in UTC",
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "eta": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Order",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "order": {
                      "$ref": "#/components/schemas/Order"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/orders/poll": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Poll orders for a restaurant using a timestamp. Any order submitted after the timestamp will be returned.",
        "parameters": [
          {
            "in": "query",
            "name": "restaurantID",
            "schema": {
              "type": "integer"
            },
            "required": false,
            "description": "Numeric ID of the restaurant to poll orders from. If your API user is scoped to a specific restaurant, you do not need to provide this value"
          },
          {
            "in": "query",
            "name": "orderList",
            "schema": {
              "type": "integer"
            },
            "required": false,
            "description": "orderList corresponds to the poll type. Returns an order list with complete order objects. Input a standard unix timestamp to poll orders submitted after the supplied timestamp"
          },
          {
            "in": "query",
            "name": "orderListLazy",
            "schema": {
              "type": "integer"
            },
            "required": false,
            "description": "orderListLazy corresponds to the poll type. Returns an order list with lazy (basic) order objects. Input a standard unix timestamp to poll orders submitted after the supplied timestamp"
          },
          {
            "in": "query",
            "name": "posToMap",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "String name of POS to map from"
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Order",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "order": {
                      "$ref": "#/components/schemas/Order"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/orders/getRecent": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Returns orders submitted within the last 12 hours. Usually you will make this call to start, then use /poll using the latest timestamp",
        "parameters": [
          {
            "in": "query",
            "name": "restaurantID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Numeric ID of the restaurant to poll orders from"
          },
          {
            "in": "query",
            "name": "locationID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Numeric ID of the restaurant’s location (for multi-location restaurants). Should almost always be 1"
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Order",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "order": {
                      "$ref": "#/components/schemas/Order"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/orders/getList": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Get all orders based on query parameters",
        "parameters": [
          {
            "in": "query",
            "name": "restaurantID",
            "schema": {
              "type": "integer"
            },
            "required": false,
            "description": "Only supply orders based for the specific restaurant. If this query parameter is excluded, the server will provide all orders across every restaurant assigned to your partnership account"
          },
          {
            "in": "query",
            "name": "locationID",
            "schema": {
              "type": "integer"
            },
            "required": false,
            "description": "Numeric ID of the restaurant’s location (for multi-location restaurants). Should almost always be 1"
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "type": "integer",
              "default": "100 or 500"
            },
            "required": false,
            "description": "Number of orders returned in the call. Defaults to 100 when a restaurant ID is provided. 500 otherwise"
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "type": "integer",
              "default": 0
            },
            "required": false,
            "description": "(Paired with 'limit' parameter). Returns the orders after the specified offset"
          },
          {
            "in": "query",
            "name": "dateFilter",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Comma delimited date constraint, comprised of a start and an end. Multiple time formats are supported but ISO 8601 is preferred.",
            "example": "01/01/2022,12/31/2022"
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Order",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "order": {
                      "$ref": "#/components/schemas/Order"
                    },
                    "restaurant": {
                      "$ref": "#/components/schemas/Restaurant"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/items/getFullMenu": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get the full menu for the restaurant, including categories, items and options/modifiers",
        "parameters": [
          {
            "in": "query",
            "name": "restaurantID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Restaurant to pull menu from"
          },
          {
            "in": "query",
            "name": "locationID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Location ID to pull menu from. Always just use \"1\""
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Item",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/items/getList": {
      "get": {
        "tags": [
          "Items"
        ],
        "summary": "Get simple menu item list for restaurant",
        "parameters": [
          {
            "in": "query",
            "name": "restaurantID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Restaurant to pull menu from"
          },
          {
            "in": "query",
            "name": "locationID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Location ID to pull menu from. Always just use \"1\""
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Item",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/menu/import": {
      "post": {
        "tags": [
          "Menu"
        ],
        "summary": "Import your menu, as JSON, into Blizzfull",
        "requestBody": {
          "description": "JSON menu",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Menu"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "restaurantID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Restaurant to import menu into"
          },
          {
            "in": "query",
            "name": "locationID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Location ID to import menu into. Always just use \"1\""
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Item",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/menu/importExternalPOSMenu/{posName}": {
      "post": {
        "tags": [
          "Menu"
        ],
        "summary": "Import your point-of-sale menu, as JSON, into Blizzfull for mapping",
        "requestBody": {
          "description": "JSON menu",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Menu"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "posName",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "String name of the POS integration"
          },
          {
            "in": "query",
            "name": "restaurantID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Restaurant to import menu into"
          },
          {
            "in": "query",
            "name": "locationID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Location ID to import menu into. Always just use \"1\""
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Item",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/menu/delete": {
      "post": {
        "tags": [
          "Menu"
        ],
        "summary": "Delete the whole menu - Removes all categories, items & options",
        "parameters": [
          {
            "in": "query",
            "name": "restaurantID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Restaurant to delete menu from"
          },
          {
            "in": "query",
            "name": "locationID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Location ID to delete menu from. Always just use \"1\""
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Item",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/restaurants/{restaurantID}": {
      "get": {
        "tags": [
          "Restaurants"
        ],
        "summary": "Get full restaurant data object",
        "parameters": [
          {
            "in": "path",
            "name": "restaurantID",
            "schema": {
              "type": "integer"
            },
            "required": true,
            "description": "Numeric ID of the restaurant to get"
          }
        ],
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Restaurant",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "order": {
                      "$ref": "#/components/schemas/Restaurant"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/restaurants/create": {
      "post": {
        "tags": [
          "Restaurants"
        ],
        "summary": "Create restaurant object",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "https://apiv2.blizzfull.com/schema/blizzfullRestaurantSchema.json"
              }
            }
          }
        },
        "security": [
          {
            "ApiUser": [],
            "ApiToken": []
          }
        ],
        "responses": {
          "200": {
            "description": "Restaurant",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  }
}