@deliverart/sdk-js-delivery
v2.8.17
Published
Deliverart JavaScript SDK for Delivery Management
Readme
@deliverart/sdk-js-delivery
Delivery management package for the DeliverArt JavaScript SDK.
Installation
npm install @deliverart/sdk-js-delivery @deliverart/sdk-js-coreExported Types
Core Types
Delivery- Delivery informationDeliveryDetails- Extended delivery with order and driverDeliveryPosition- GPS tracking positionDeliveryFee- Delivery fee configurationDeliveryStatus- Delivery status
Delivery Status Types
type DeliveryStatus =
| 'PENDING'
| 'ASSIGNED'
| 'PICKING_UP'
| 'IN_TRANSIT'
| 'DELIVERED'
| 'FAILED'
| 'CANCELLED'IRI Types
DeliveryIri- Delivery IRI (/deliveries/:id)DeliveryPositionIri- Position IRI (/delivery_positions/:id)DeliveryFeeIri- Fee IRI (/delivery_fees/:id)
Available Requests
Deliveries
CreateDelivery
import { CreateDelivery } from '@deliverart/sdk-js-delivery';
const delivery = await sdk.call(new CreateDelivery({
order: '/orders/123',
driver: '/users/456',
pickupAddress: {
street: 'Via Restaurant 1',
city: 'Milano',
postalCode: '20100',
country: 'IT',
location: {
latitude: 45.464664,
longitude: 9.188540
}
},
deliveryAddress: {
street: 'Via Customer 10',
city: 'Milano',
postalCode: '20100',
country: 'IT',
location: {
latitude: 45.478664,
longitude: 9.201540
}
},
estimatedPickupTime: '2024-12-25T19:00:00+00:00',
estimatedDeliveryTime: '2024-12-25T19:30:00+00:00'
}));Input Parameters:
order: string(required) - Order IRIdriver?: string(optional) - Driver user IRIpickupAddress: Address(required) - Restaurant/pickup addressdeliveryAddress: Address(required) - Customer delivery addressestimatedPickupTime?: string(optional) - Estimated pickup time (ISO 8601)estimatedDeliveryTime?: string(optional) - Estimated delivery time (ISO 8601)distance?: number(optional) - Distance in metersfee?: number(optional) - Delivery fee in cents
GetDeliveries
import { GetDeliveries } from '@deliverart/sdk-js-delivery';
const deliveries = await sdk.call(new GetDeliveries({
query: {
'status[]': ['IN_TRANSIT', 'ASSIGNED'],
driver: '/users/456',
'order[estimatedDeliveryTime]': 'asc',
page: 1
}
}));Query Parameters:
order?: string- Filter by orderdriver?: string- Filter by driverstatus[]?: DeliveryStatus[]- Filter by statusescreatedAt[before]?: string- Created before datecreatedAt[after]?: string- Created after dateorder[estimatedDeliveryTime]?: 'asc' | 'desc'- Sort by delivery timepage?: number- Page number
GetDeliveryDetails
import { GetDeliveryDetails } from '@deliverart/sdk-js-delivery';
const delivery = await sdk.call(new GetDeliveryDetails('delivery-123'));UpdateDelivery
import { UpdateDelivery } from '@deliverart/sdk-js-delivery';
const updated = await sdk.call(new UpdateDelivery('delivery-123', {
status: 'IN_TRANSIT',
actualPickupTime: '2024-12-25T19:05:00+00:00'
}));Delivery Positions (GPS Tracking)
CreateDeliveryPosition
import { CreateDeliveryPosition } from '@deliverart/sdk-js-delivery';
const position = await sdk.call(new CreateDeliveryPosition({
delivery: '/deliveries/123',
latitude: 45.470664,
longitude: 9.195540,
accuracy: 10,
heading: 45,
speed: 15
}));Input Parameters:
delivery: string(required) - Delivery IRIlatitude: number(required) - GPS latitudelongitude: number(required) - GPS longitudeaccuracy?: number(optional) - Position accuracy in metersheading?: number(optional) - Direction in degrees (0-360)speed?: number(optional) - Speed in km/h
GetDeliveryPositions
import { GetDeliveryPositions } from '@deliverart/sdk-js-delivery';
const positions = await sdk.call(new GetDeliveryPositions({
query: {
delivery: '/deliveries/123',
'order[createdAt]': 'asc'
}
}));Delivery Fees
CreateDeliveryFee
import { CreateDeliveryFee } from '@deliverart/sdk-js-delivery';
const fee = await sdk.call(new CreateDeliveryFee({
pointOfSale: '/point_of_sales/123',
minDistance: 0,
maxDistance: 5000, // 5km in meters
baseFee: 300, // 3 EUR in cents
perKmFee: 50 // 0.50 EUR per km
}));GetDeliveryFees
import { GetDeliveryFees } from '@deliverart/sdk-js-delivery';
const fees = await sdk.call(new GetDeliveryFees({
query: {
pointOfSale: '/point_of_sales/123'
}
}));Complete Usage Example
import { sdk } from './lib/sdk';
import {
CreateDelivery,
UpdateDelivery,
CreateDeliveryPosition,
GetDeliveries
} from '@deliverart/sdk-js-delivery';
async function deliveryWorkflow() {
// Create delivery
const delivery = await sdk.call(new CreateDelivery({
order: '/orders/123',
driver: '/users/456',
pickupAddress: {
street: 'Via Restaurant 1',
city: 'Milano',
postalCode: '20100',
country: 'IT',
location: { latitude: 45.464664, longitude: 9.188540 }
},
deliveryAddress: {
street: 'Via Customer 10',
city: 'Milano',
postalCode: '20100',
country: 'IT',
location: { latitude: 45.478664, longitude: 9.201540 }
}
}));
// Driver picks up order
await sdk.call(new UpdateDelivery(delivery.id, {
status: 'PICKING_UP',
actualPickupTime: new Date().toISOString()
}));
// Driver starts delivery
await sdk.call(new UpdateDelivery(delivery.id, {
status: 'IN_TRANSIT'
}));
// Track position
await sdk.call(new CreateDeliveryPosition({
delivery: `/deliveries/${delivery.id}`,
latitude: 45.470664,
longitude: 9.195540,
speed: 25,
heading: 90
}));
// Complete delivery
await sdk.call(new UpdateDelivery(delivery.id, {
status: 'DELIVERED',
actualDeliveryTime: new Date().toISOString()
}));
}License
MIT
@deliverart/sdk-js-menu
Menu and menu items management package for the DeliverArt JavaScript SDK.
Installation
npm install @deliverart/sdk-js-menu @deliverart/sdk-js-coreExported Types
Core Types
MenuItem- Menu item basic informationMenuItemDetails- Extended menu item with variants and modifiersMenuItemCategory- Menu item categoryMenuItemModifier- Item modifier (e.g., extra cheese, no onions)MenuItemPriceOverride- Price variant for menu itemsMenuVersion- Menu version for point of sale
IRI Types
MenuItemIri- Menu item IRI (/menu_items/:id)MenuItemCategoryIri- Category IRI (/menu_item_categories/:id)MenuItemModifierIri- Modifier IRI (/menu_item_modifiers/:id)MenuItemPriceOverrideIri- Price override IRI (/menu_item_price_overrides/:id)MenuVersionIri- Menu version IRI (/menu_versions/:id)
Available Requests
Menu Items
CreateMenuItem
import { CreateMenuItem } from '@deliverart/sdk-js-menu';
const item = await sdk.call(new CreateMenuItem({
name: [
{ locale: 'it_IT', text: 'Margherita' },
{ locale: 'en_US', text: 'Margherita' }
],
description: [
{ locale: 'it_IT', text: 'Pizza con pomodoro e mozzarella' },
{ locale: 'en_US', text: 'Pizza with tomato and mozzarella' }
],
type: 'PIZZA',
category: '/menu_item_categories/123',
company: '/companies/456',
price: 850, // In cents
taxRate: 10,
available: true
}));Input Parameters:
name: LocaleItem[](required) - Localized namesdescription: LocaleItem[](optional) - Localized descriptionstype: string(required) - Item type (e.g., 'PIZZA', 'PASTA', 'DRINK')category: string(required) - Category IRIcompany: string(required) - Company IRIprice: number(required) - Base price in centstaxRate: number(required) - Tax rate percentageavailable: boolean(optional) - Availability statusimage?: string(optional) - Image IRI
GetMenuItems
import { GetMenuItems } from '@deliverart/sdk-js-menu';
const items = await sdk.call(new GetMenuItems({
query: {
company: '/companies/123',
category: '/menu_item_categories/456',
available: true,
'order[name]': 'asc',
page: 1
}
}));Query Parameters:
company?: string- Filter by companycategory?: string- Filter by categorytype?: string- Filter by typeavailable?: boolean- Filter by availabilityorder[name]?: 'asc' | 'desc'- Sort by nameorder[price]?: 'asc' | 'desc'- Sort by pricepage?: number- Page number
GetMenuItemDetails
import { GetMenuItemDetails } from '@deliverart/sdk-js-menu';
const item = await sdk.call(new GetMenuItemDetails('item-123'));UpdateMenuItem
import { UpdateMenuItem } from '@deliverart/sdk-js-menu';
const updated = await sdk.call(new UpdateMenuItem('item-123', {
price: 900,
available: false
}));DeleteMenuItem
import { DeleteMenuItem } from '@deliverart/sdk-js-menu';
await sdk.call(new DeleteMenuItem('item-123'));Menu Item Categories
CreateMenuItemCategory
import { CreateMenuItemCategory } from '@deliverart/sdk-js-menu';
const category = await sdk.call(new CreateMenuItemCategory({
name: [
{ locale: 'it_IT', text: 'Pizze' },
{ locale: 'en_US', text: 'Pizzas' }
],
company: '/companies/123',
position: 1
}));GetMenuItemCategories
import { GetMenuItemCategories } from '@deliverart/sdk-js-menu';
const categories = await sdk.call(new GetMenuItemCategories({
query: {
company: '/companies/123',
'order[position]': 'asc'
}
}));UpdateMenuItemCategory
import { UpdateMenuItemCategory } from '@deliverart/sdk-js-menu';
const updated = await sdk.call(new UpdateMenuItemCategory('category-123', {
position: 2
}));DeleteMenuItemCategory
import { DeleteMenuItemCategory } from '@deliverart/sdk-js-menu';
await sdk.call(new DeleteMenuItemCategory('category-123'));Menu Item Modifiers
CreateMenuItemModifier
import { CreateMenuItemModifier } from '@deliverart/sdk-js-menu';
const modifier = await sdk.call(new CreateMenuItemModifier({
name: [
{ locale: 'it_IT', text: 'Mozzarella extra' },
{ locale: 'en_US', text: 'Extra mozzarella' }
],
company: '/companies/123',
price: 150, // In cents
taxRate: 10,
available: true
}));GetMenuItemModifiers
import { GetMenuItemModifiers } from '@deliverart/sdk-js-menu';
const modifiers = await sdk.call(new GetMenuItemModifiers({
query: {
company: '/companies/123',
available: true
}
}));Menu Item Price Overrides (Variants)
CreateMenuItemPriceOverride
import { CreateMenuItemPriceOverride } from '@deliverart/sdk-js-menu';
const variant = await sdk.call(new CreateMenuItemPriceOverride({
menuItem: '/menu_items/123',
name: [
{ locale: 'it_IT', text: 'Grande' },
{ locale: 'en_US', text: 'Large' }
],
price: 1200,
available: true
}));GetMenuItemPriceOverrides
import { GetMenuItemPriceOverrides } from '@deliverart/sdk-js-menu';
const variants = await sdk.call(new GetMenuItemPriceOverrides({
query: {
menuItem: '/menu_items/123'
}
}));Menu Versions
Menu versions allow you to assign different menus to different sales modes or points of sale.
CreateMenuVersion
import { CreateMenuVersion } from '@deliverart/sdk-js-menu';
const version = await sdk.call(new CreateMenuVersion({
name: 'Delivery Menu',
pointOfSale: '/point_of_sales/123',
salesMode: '/sales_modes/456',
items: [
'/menu_items/1',
'/menu_items/2',
'/menu_items/3'
]
}));GetMenuVersions
import { GetMenuVersions } from '@deliverart/sdk-js-menu';
const versions = await sdk.call(new GetMenuVersions({
query: {
pointOfSale: '/point_of_sales/123'
}
}));Complete Usage Example
import { sdk } from './lib/sdk';
import {
CreateMenuItemCategory,
CreateMenuItem,
CreateMenuItemModifier,
CreateMenuItemPriceOverride,
GetMenuItems
} from '@deliverart/sdk-js-menu';
async function setupMenu() {
// Create category
const category = await sdk.call(new CreateMenuItemCategory({
name: [
{ locale: 'it_IT', text: 'Pizze' },
{ locale: 'en_US', text: 'Pizzas' }
],
company: '/companies/123',
position: 1
}));
// Create menu item
const pizza = await sdk.call(new CreateMenuItem({
name: [
{ locale: 'it_IT', text: 'Margherita' },
{ locale: 'en_US', text: 'Margherita' }
],
description: [
{ locale: 'it_IT', text: 'Pomodoro e mozzarella' }
],
type: 'PIZZA',
category: `/menu_item_categories/${category.id}`,
company: '/companies/123',
price: 850,
taxRate: 10,
available: true
}));
// Create modifier
const modifier = await sdk.call(new CreateMenuItemModifier({
name: [
{ locale: 'it_IT', text: 'Mozzarella extra' }
],
company: '/companies/123',
price: 150,
taxRate: 10,
available: true
}));
// Create size variant
const largeVariant = await sdk.call(new CreateMenuItemPriceOverride({
menuItem: `/menu_items/${pizza.id}`,
name: [
{ locale: 'it_IT', text: 'Grande' }
],
price: 1200,
available: true
}));
// Get all pizzas
const pizzas = await sdk.call(new GetMenuItems({
query: {
category: `/menu_item_categories/${category.id}`,
available: true
}
}));
console.log(`Found ${pizzas.pagination.totalItems} pizzas`);
}License
MIT
