@deliverart/sdk-js-menu
Menu management package for the DeliverArt JavaScript SDK. Provides methods for managing menu versions, menu items, categories, modifiers, and price overrides.
Installation
npm install @deliverart/sdk-js-menu @deliverart/sdk-js-core
# or
pnpm add @deliverart/sdk-js-menu @deliverart/sdk-js-core
# or
yarn add @deliverart/sdk-js-menu @deliverart/sdk-js-core
Features
- Menu Versions: Retrieve menu versions and their details
- Menu Items: Full CRUD operations for menu items
- Menu Item Categories: Manage menu item categories
- Menu Item Modifiers: Retrieve menu item modifiers and their details
- Menu Item Price Overrides: Manage price overrides for menu items
Usage
Menu Versions
Get Menu Versions
import { GetMenuVersions } from '@deliverart/sdk-js-menu'
const menuVersions = await client.call(new GetMenuVersions({
query: {
page: 1,
itemsPerPage: 20,
}
}))
Get Menu Version Details
import { GetMenuVersionDetails } from '@deliverart/sdk-js-menu'
const menuVersion = await client.call(new GetMenuVersionDetails('menu-version-id'))
MenuItemDto.compositions contains the menu item ids for removable base
ingredients/components. When creating order removals, reference one of those ids
in the writable order item removals array.
Menu Items
Get Menu Items
import { GetMenuItems } from '@deliverart/sdk-js-menu'
const menuItems = await client.call(new GetMenuItems({
query: {
page: 1,
itemsPerPage: 20,
}
}))
Get Menu Item Details
import { GetMenuItemDetails } from '@deliverart/sdk-js-menu'
const menuItem = await client.call(new GetMenuItemDetails('menu-item-id'))
Create Menu Item
import { CreateMenuItem } from '@deliverart/sdk-js-menu'
const newMenuItem = await client.call(new CreateMenuItem({
name: [
{ locale: 'en', value: 'Margherita Pizza' },
{ locale: 'it', value: 'Pizza Margherita' }
],
description: [
{ locale: 'en', value: 'Classic tomato and mozzarella' },
{ locale: 'it', value: 'Classica pomodoro e mozzarella' }
],
price: 12.99,
category: '/api/menu-item-categories/123',
// ... other fields
}))
Update Menu Item
import { UpdateMenuItem } from '@deliverart/sdk-js-menu'
const updated = await client.call(new UpdateMenuItem('menu-item-id', {
price: 13.99,
}))
Delete Menu Item
import { DeleteMenuItem } from '@deliverart/sdk-js-menu'
await client.call(new DeleteMenuItem('menu-item-id'))
Menu Item Categories
Get Menu Item Categories
import { GetMenuItemCategories } from '@deliverart/sdk-js-menu'
const categories = await client.call(new GetMenuItemCategories({
query: {
page: 1,
itemsPerPage: 20,
}
}))
Get Menu Item Category Details
import { GetMenuItemCategoryDetails } from '@deliverart/sdk-js-menu'
const category = await client.call(new GetMenuItemCategoryDetails('category-id'))
Create Menu Item Category
import { CreateMenuItemCategory } from '@deliverart/sdk-js-menu'
const newCategory = await client.call(new CreateMenuItemCategory({
name: [
{ locale: 'en', text: 'Pizzas' },
{ locale: 'it', text: 'Pizze' }
],
pointOfSale: '/point_of_sales/123e4567-e89b-12d3-a456-426614174000',
// ... other fields
}))
Update Menu Item Category
import { UpdateMenuItemCategory } from '@deliverart/sdk-js-menu'
const updated = await client.call(new UpdateMenuItemCategory('category-id', {
name: [
{ locale: 'en', value: 'Updated Category' }
]
}))
Delete Menu Item Category
import { DeleteMenuItemCategory } from '@deliverart/sdk-js-menu'
await client.call(new DeleteMenuItemCategory('category-id'))
Menu Item Modifiers
Get Menu Item Modifiers
import { GetMenuItemModifiers } from '@deliverart/sdk-js-menu'
const modifiers = await client.call(new GetMenuItemModifiers({
query: {
page: 1,
itemsPerPage: 20,
}
}))
Get Menu Item Modifier Details
import { GetMenuItemModifierDetails } from '@deliverart/sdk-js-menu'
const modifier = await client.call(new GetMenuItemModifierDetails('modifier-id'))
Menu Item Price Overrides
Manage price overrides for specific menu items, points of sale, or time periods.
import {
GetMenuItemPriceOverrides,
GetMenuItemPriceOverrideDetails,
CreateMenuItemPriceOverride,
UpdateMenuItemPriceOverride,
DeleteMenuItemPriceOverride
} from '@deliverart/sdk-js-menu'
// Get price overrides
const overrides = await client.call(new GetMenuItemPriceOverrides({
query: {
page: 1,
itemsPerPage: 20,
}
}))
// Create a price override
const override = await client.call(new CreateMenuItemPriceOverride({
menuItem: '/api/menu-items/123',
price: 15.99,
pointOfSale: '/api/point-of-sales/456',
// ... other fields
}))
License
MIT
Search menu names
All item (including ITEM, CHOICE and BUNDLE), category and modifier list
requests accept query.name. It matches a case-insensitive substring in any
translated name. Spaces, accents and punctuation are preserved, % and _
are literal characters, and blank input is ignored. Existing nameSort filters
on items/categories remain available for compatibility.
const products = await client.call(new GetMenuItemsFromPointOfSale(posId, {
query: { name: 'Pizza Margherita', type: 'ITEM', page: 1 },
}))
const modifiers = await client.call(new GetMenuItemModifiersFromPointOfSale(posId, {
query: { name: 'Extra cheese', scope: 'global', page: 1 },
}))
Use the POS-scoped requests in Hub and retain the active type/scope and other filters when changing a search. Reset the page to 1 after changing filters.
Contextual VAT on price overrides
Price override reads, nested native variants and MenuPriceOverrideDto expose
taxRate: number | null. null inherits the referenced menu item's VAT; an
explicit 0 is zero percent. Values range from 0 to 100. Missing fields on older
read payloads normalize to null.
Create and PATCH inputs may supply taxRate. Leave it omitted when editing only
a price: the API preserves an existing contextual rate. Send null only when
explicitly restoring inheritance. Updating an override does not change the
referenced menu item's global VAT.