---
updatedAt: 2026-07-28T13:49:18.000Z
agentTools:
  projectIndex: https://kitchenhub.readme.io/llms.txt
---

# Pull catalog from connected POS

Retrieve catalog from connected POS

# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "API reference",
    "description": "swagger ui demo.",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.kitchenhub.app",
      "description": "KitchenHub API url"
    }
  ],
  "paths": {
    "/v2/stores/{store_id}/catalog/": {
      "get": {
        "tags": [
          "Menu"
        ],
        "summary": "Pull catalog from connected POS",
        "description": "Retrieve catalog from connected POS",
        "parameters": [
          {
            "name": "store_id",
            "in": "path",
            "description": "KitchenHub id of store",
            "required": true,
            "schema": {
              "title": "store_id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MenuFromPOS"
                }
              }
            },
            "links": {}
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {}
            },
            "links": {}
          },
          "403": {
            "description": "Forbidden. Location is archived",
            "content": {
              "application/json": {}
            },
            "links": {}
          },
          "422": {
            "description": "Validation error",
            "content": {
              "application/json": {}
            },
            "links": {}
          },
          "424": {
            "description": "Error on provider side. Please try again later",
            "content": {
              "application/json": {}
            },
            "links": {}
          },
          "500": {
            "description": "Technical error. Please contact support to resolve this issue",
            "content": {
              "application/json": {}
            },
            "links": {}
          },
          "501": {
            "description": "Provider is not supported or not implemented yet",
            "content": {
              "application/json": {}
            },
            "links": {}
          }
        },
        "deprecated": false,
        "security": [
          {
            "apiKeyAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "shared_library__kh_core_models__enums__DaysOfWeek": {
        "title": "DaysOfWeek",
        "description": "An enumeration.",
        "enum": [
          "MONDAY",
          "TUESDAY",
          "WEDNESDAY",
          "THURSDAY",
          "FRIDAY",
          "SATURDAY",
          "SUNDAY"
        ],
        "type": "string"
      },
      "TaxCategory": {
        "title": "TaxCategory",
        "description": "An enumeration.",
        "enum": [
          "ALCOHOL",
          "NO_TAX",
          "SUGARED_DRINK",
          "BAKED_GOODS",
          "NON_FOOD",
          "GST_ONLY",
          "PST_ONLY",
          "PREPARED_FOOD"
        ],
        "type": "string"
      },
      "PriceRounding": {
        "title": "PriceRounding",
        "description": "An enumeration.",
        "enum": [
          "ONE_CENT",
          "FIVE_CENTS",
          "TEN_CENTS",
          "NINE_CENTS"
        ],
        "type": "string"
      },
      "PriceAdjustment": {
        "title": "PriceAdjustment",
        "type": "object",
        "properties": {
          "proportion": {
            "title": "Proportion",
            "description": "Decimal form of price adjustment percentage",
            "minimum": 0.01,
            "type": "number"
          },
          "rounding": {
            "description": "Price rounding rule",
            "default": "ONE_CENT",
            "allOf": [
              {
                "$ref": "#/components/schemas/PriceRounding"
              }
            ]
          }
        },
        "required": [
          "proportion"
        ]
      },
      "PriceAdjustmentRule": {
        "title": "PriceAdjustmentRule",
        "type": "object",
        "properties": {
          "providers": {
            "title": "Providers",
            "description": "List of provider IDs which the price adjustment must be applied to",
            "minItems": 1,
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "adjustment": {
            "title": "Adjustment",
            "description": "Price adjustment applied to menu of the listed providers",
            "allOf": [
              {
                "$ref": "#/components/schemas/PriceAdjustment"
              }
            ]
          }
        },
        "required": [
          "providers",
          "adjustment"
        ]
      },
      "MenuInfoFromPOS": {
        "title": "MenuInfoFromPOS",
        "type": "object",
        "properties": {
          "name": {
            "title": "Name",
            "description": "Name of the menu.",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "description": "Description of the menu.",
            "type": "string"
          },
          "media_url": {
            "title": "Media Url",
            "description": "URL for media related to the menu.",
            "type": "string"
          },
          "note": {
            "title": "Note",
            "description": "Note related to the menu.",
            "type": "string"
          },
          "pos_id": {
            "title": "Pos Id",
            "description": "ID in the POS system",
            "type": "string"
          },
          "pos_categories": {
            "title": "Pos Categories",
            "description": "List of categories from the pos.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "price_adjustment_rules": {
            "title": "Price Adjustment Rules",
            "description": "Rules for price adjustment",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceAdjustmentRule"
            }
          }
        }
      },
      "CategoryFromPOS": {
        "title": "CategoryFromPOS",
        "type": "object",
        "properties": {
          "title": {
            "title": "Title",
            "description": "Title of the category.",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "description": "Description of the category.",
            "type": "string"
          },
          "is_deactivated": {
            "title": "Is Deactivated",
            "description": "Indicates if the category is deactivated.",
            "default": false,
            "type": "boolean"
          },
          "deactivation_start_date": {
            "title": "Deactivation Start Date",
            "description": "Start date of the deactivation period.",
            "type": "string"
          },
          "deactivation_end_date": {
            "title": "Deactivation End Date",
            "description": "End date of the deactivation period.",
            "type": "string"
          },
          "media_url": {
            "title": "Media Url",
            "description": "URL for media related to the category.",
            "type": "string"
          },
          "pos_id": {
            "title": "Pos Id",
            "description": "ID in the POS system",
            "type": "string"
          },
          "pos_items": {
            "title": "Pos Items",
            "description": "List of items provided by the pos.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pos_availability": {
            "title": "Pos Availability",
            "description": "Availability status from the pos.",
            "type": "string"
          }
        }
      },
      "shared_library__kh_core_models__menu__menu_base__CustomPriceSchema": {
        "title": "CustomPriceSchema",
        "description": "Customization price information for providers. Can be extended by new fields.\n\nFree items allowed. Applicable for item options.",
        "type": "object",
        "properties": {
          "price": {
            "title": "Price",
            "description": "The cost of the item including discounts, delivery etc. Required Field. Should be positive num. 0 is allowed",
            "minimum": 0,
            "type": "number"
          },
          "original_price": {
            "title": "Original item price",
            "description": "The cost of the item for pickup. This price does not include delivery charges. This field should be a positive number. Used only by doordash provider.",
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "price"
        ]
      },
      "ItemFromPOS": {
        "title": "ItemFromPOS",
        "type": "object",
        "properties": {
          "name": {
            "title": "Name",
            "description": "Name of the item.",
            "type": "string"
          },
          "is_deactivated": {
            "title": "Is Deactivated",
            "description": "Indicates if the item is deactivated.",
            "default": false,
            "type": "boolean"
          },
          "description": {
            "title": "Description",
            "description": "Description of the item.",
            "type": "string"
          },
          "internal_notes": {
            "title": "Internal Notes",
            "description": "Internal notes related to the item.",
            "type": "string"
          },
          "deactivation_start_date": {
            "title": "Deactivation Start Date",
            "description": "Start date of the deactivation period.",
            "type": "string"
          },
          "deactivation_end_date": {
            "title": "Deactivation End Date",
            "description": "End date of the deactivation period.",
            "type": "string"
          },
          "tax_rate": {
            "title": "Tax Rate",
            "description": "Tax rate applicable to the item. 5 chars after comma",
            "type": "number"
          },
          "tax_category": {
            "description": "Tax category that an item belongs to (only for Canada)",
            "allOf": [
              {
                "$ref": "#/components/schemas/TaxCategory"
              }
            ]
          },
          "media_url": {
            "title": "Media Url",
            "description": "URL for media related to the item.",
            "type": "string"
          },
          "price": {
            "title": "Price",
            "description": "Current price of the item.",
            "minimum": 0,
            "type": "number"
          },
          "original_price": {
            "title": "Original Price",
            "description": "Original price (pickup price) - without delivery.",
            "minimum": 0,
            "type": "number"
          },
          "min_amount": {
            "title": "Min Amount",
            "description": "Minimum amount that can be ordered.",
            "default": 1,
            "type": "integer"
          },
          "max_amount": {
            "title": "Max Amount",
            "description": "Maximum amount that can be ordered.",
            "default": 3,
            "type": "integer"
          },
          "prices_customization": {
            "title": "Prices Customization",
            "description": "Mapping provider ID to custom prices for this provider.",
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/shared_library__kh_core_models__menu__menu_base__CustomPriceSchema"
            }
          },
          "is_alcohol": {
            "title": "Is Alcohol",
            "description": "Item contains alcohol",
            "default": false,
            "type": "boolean"
          },
          "pos_id": {
            "title": "Pos Id",
            "description": "ID in the POS system",
            "type": "string"
          },
          "partner_id": {
            "title": "Partner Id",
            "description": "Partner id of the item. In some poses can be dublicates. So we need to keep pos_id and create unique partner_id.",
            "type": "string"
          },
          "pos_availability": {
            "title": "Pos Availability",
            "description": "Availability status from the pos.",
            "type": "string"
          },
          "pos_modifiers": {
            "title": "Pos Modifiers",
            "description": "List of modifiers provided by the pos.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ModifierType": {
        "title": "ModifierType",
        "description": "An enumeration.",
        "enum": [
          "variation",
          "size"
        ],
        "type": "string"
      },
      "ModifierFromPOS": {
        "title": "ModifierFromPOS",
        "type": "object",
        "properties": {
          "name": {
            "title": "Name",
            "description": "Name of the modifier.",
            "type": "string"
          },
          "type": {
            "description": "Type of the modifier. Size or variation.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ModifierType"
              }
            ]
          },
          "min_options": {
            "title": "Min Options",
            "description": "Indicates the minimum number of unique options that must be selected when this modifier is selected",
            "default": 0,
            "type": "integer"
          },
          "max_options": {
            "title": "Max Options",
            "description": "Indicates the maximum number of unique options that can be selected when this modifier is selected",
            "default": 3,
            "type": "integer"
          },
          "free_options_quantity": {
            "title": "Free Options Quantity",
            "description": "Indicates how many options are free when this modifier is selected",
            "type": "integer"
          },
          "min_options_quantity": {
            "title": "Min Options Quantity",
            "description": "Indicates the minimum number of options quantity that must be selected when this modifier is selected",
            "type": "integer"
          },
          "max_options_quantity": {
            "title": "Max Options Quantity",
            "description": "Indicates the maximum number of options quantity that can be selected when this modifier is selected",
            "type": "integer"
          },
          "default_options": {
            "title": "Default Options",
            "description": "Default options for the modifier.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "is_required": {
            "title": "Is Required",
            "description": "Indicates if selecting this modifier is required.",
            "default": false,
            "type": "boolean"
          },
          "pos_id": {
            "title": "Pos Id",
            "description": "ID in the POS system",
            "type": "string"
          },
          "partner_id": {
            "title": "Partner Id",
            "description": "Partner id of the modifier. In some poses can be dublicates. So we need to keep pos_id and create unique partner_id.",
            "type": "string"
          },
          "pos_options": {
            "title": "Pos Options",
            "description": "List of options provided by the pos.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "OptionFromPOS": {
        "title": "OptionFromPOS",
        "type": "object",
        "properties": {
          "description": {
            "title": "Description",
            "description": "Description of the option.",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "description": "Name of the option.",
            "type": "string"
          },
          "tax_rate": {
            "title": "Tax Rate",
            "description": "Tax rate applicable to the option. Can be 5 chars afte comma",
            "type": "number"
          },
          "tax_category": {
            "description": "Tax category that an option belongs to (only for Canada)",
            "allOf": [
              {
                "$ref": "#/components/schemas/TaxCategory"
              }
            ]
          },
          "type": {
            "title": "Type",
            "description": "Type of the option.",
            "type": "string"
          },
          "price": {
            "title": "Price",
            "description": "Price of the option.",
            "type": "number"
          },
          "original_price": {
            "title": "Original Price",
            "description": "Original price ???.",
            "type": "number"
          },
          "prices_customization": {
            "title": "Prices Customization",
            "description": "Mapping provider to custom prices for this option.",
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/shared_library__kh_core_models__menu__menu_base__CustomPriceSchema"
            }
          },
          "is_deactivated": {
            "title": "Is Deactivated",
            "description": "Indicates if the option is deactivated.",
            "default": false,
            "type": "boolean"
          },
          "deactivation_start_date": {
            "title": "Deactivation Start Date",
            "description": "Start date of the deactivation period.",
            "type": "string"
          },
          "deactivation_end_date": {
            "title": "Deactivation End Date",
            "description": "End date of the deactivation period.",
            "type": "string"
          },
          "pos_id": {
            "title": "Pos Id",
            "description": "ID in the POS system",
            "type": "string"
          },
          "partner_id": {
            "title": "Partner Id",
            "description": "Partner id of the option. In some poses can be dublicates. So we need to keep pos_id and create unique partner_id.",
            "type": "string"
          },
          "pos_modifiers": {
            "title": "Pos Modifiers",
            "description": "Modifiers related to this option from the partner.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "shared_library__kh_core_models__menu__menu_base__Rule": {
        "title": "Rule",
        "type": "object",
        "properties": {
          "days_of_week": {
            "description": "Days of the week when the rule is applicable.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/shared_library__kh_core_models__enums__DaysOfWeek"
            }
          },
          "start_time": {
            "title": "Start Time",
            "description": "Start time for the rule.",
            "type": "string"
          },
          "end_time": {
            "title": "End Time",
            "description": "End time for the rule.",
            "type": "string"
          }
        },
        "required": [
          "days_of_week",
          "start_time",
          "end_time"
        ]
      },
      "AvailabilityFromPOS": {
        "title": "AvailabilityFromPOS",
        "type": "object",
        "properties": {
          "rules": {
            "title": "Rules",
            "description": "Availability rules for the item.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/shared_library__kh_core_models__menu__menu_base__Rule"
            }
          },
          "pos_id": {
            "title": "Pos Id",
            "description": "Identifier for the availability from the pos.",
            "type": "string"
          }
        }
      },
      "MenuFromPOS": {
        "title": "MenuFromPOS",
        "description": "Use this model to parse pos menu and put to ms-menu",
        "type": "object",
        "properties": {
          "menu": {
            "$ref": "#/components/schemas/MenuInfoFromPOS"
          },
          "categories": {
            "title": "Categories",
            "description": "List of categories from the pos.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CategoryFromPOS"
            }
          },
          "items": {
            "title": "Items",
            "description": "List of items from the pos.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemFromPOS"
            }
          },
          "modifiers": {
            "title": "Modifiers",
            "description": "List of modifiers from the pos.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModifierFromPOS"
            }
          },
          "options": {
            "title": "Options",
            "description": "List of options from the pos.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OptionFromPOS"
            }
          },
          "availabilities": {
            "title": "Availabilities",
            "description": "List of availabilities from the pos.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AvailabilityFromPOS"
            }
          }
        },
        "required": [
          "menu"
        ]
      }
    },
    "securitySchemes": {
      "apiKeyAuth": {
        "type": "apiKey",
        "description": "Enter the token with the `Bearer: ` prefix, e.g. 'Bearer abcde12345'.",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "apiKeyAuth": []
    }
  ]
}
```