@deliverart/sdk-js-order
v2.22.1
Published
Deliverart JavaScript SDK for Order Management
Downloads
2,933
Readme
@deliverart/sdk-js-order
Order management package for the DeliverArt JavaScript SDK.
Installation
npm install @deliverart/sdk-js-order @deliverart/sdk-js-core
# or
pnpm add @deliverart/sdk-js-order @deliverart/sdk-js-coreExported Types
Core Types
type OrderType = 'delivery' | 'collection' | 'kitchen'
type OrderStatus = 'pending' | 'confirmed' | 'rejected'
type OrderPreparationStatus = 'to_prepare' | 'in_preparation' | 'done'
type OrderSource = 'application' | 'ecommerce' | 'partner'
type OrderPlanningMode = 'PLANNED' | 'FORCED'Models
OrderOrderDetailsDeliveryOrderCollectionOrderTakeAwayOrder(deprecated alias)KitchenOrderDeliveryOrderDetailsCollectionOrderDetailsTakeAwayOrderDetails(deprecated alias)KitchenOrderDetailsWritableOrderWritableUpdateOrderOrderMenuItemOrderMenuItemDetailsOrderMenuItemModifierOrderMenuItemModifierDetailsBundleBundleDetailsWritableBundleFeeSimulationOrderRescheduleWindowOrderRescheduleOptionOrderRescheduleReferenceBundle
Typed Inputs and Outputs
Order and OrderDetails are discriminated by type.
deliveryorders expose delivery-specific fields likeaddress,requestedDeliveryTime,finalDeliveryTime,deliveryStartedAt,deliveredAtcollectionorders expose collection-specific fields likerequestedCollectionTime,finalCollectionTime,collectedAtkitchenorders exclude both delivery and collection scheduling fields- all order read models also expose scheduling metadata such as
scheduledWindowStart,scheduledWindowEnd,schedulingVersionandplanningMode - delivery read models additionally expose
estimatedRouteDurationSeconds,estimatedRouteDistanceMetersandstopSequence
CreateOrderInput and CalculateOrderFeesInput are also discriminated by type.
deliveryaccepts fields such asaddress,customerAddress,locationData,referenceBundle,deliveryTimecollectionacceptscollectionTime- the legacy alias
take_awayis still accepted on write for backward compatibility kitchendoes not accept delivery or collection scheduling fields- all writable order inputs also accept
forceScheduling?: booleanfor internal operator-only retries that bypass slot/capacity validation
UpdateOrderInput keeps common editable fields and enforces mutually exclusive delivery / collection scheduling fields.
Order Requests
CreateOrder
import { CreateOrder } from '@deliverart/sdk-js-order'
const order = await sdk.call(
new CreateOrder({
type: 'delivery',
source: 'application',
pointOfSale: '/point_of_sales/123e4567-e89b-12d3-a456-426614174000',
customer: '/customers/123e4567-e89b-12d3-a456-426614174001',
customerInfo: {
firstName: 'John',
lastName: 'Doe',
email: '[email protected]',
phoneNumber: '+39123456789',
},
address: {
line1: 'Via Roma 1',
city: 'Milano',
postalCode: '20100',
country: 'IT',
},
deliveryTime: '2026-03-22T19:30:00+01:00',
items: [
{
menuItem: '/menu_items/123e4567-e89b-12d3-a456-426614174002',
salesMode: null,
variant: null,
quantity: 2,
notes: 'No onions',
removals: [],
modifiers: [],
},
],
}),
)Response: OrderDetails
Useful response fields after create/update
scheduledWindowStartscheduledWindowEndplanningModeschedulingVersion- for
delivery:estimatedRouteDurationSeconds,estimatedRouteDistanceMeters,stopSequence
planningMode can be:
PLANNEDFORCED
CalculateOrderFees
import { CalculateOrderFees } from '@deliverart/sdk-js-order'
const fees = await sdk.call(
new CalculateOrderFees({
type: 'collection',
source: 'application',
pointOfSale: '/point_of_sales/123e4567-e89b-12d3-a456-426614174000',
collectionTime: '2026-03-22T20:00:00+01:00',
items: [
{
menuItem: '/menu_items/123e4567-e89b-12d3-a456-426614174002',
salesMode: null,
variant: null,
quantity: 1,
notes: null,
removals: [],
modifiers: [],
},
],
}),
)Response: FeeSimulation
GetOrders
import { GetOrders } from '@deliverart/sdk-js-order'
const orders = await sdk.call(
new GetOrders({
query: {
type: ['delivery', 'collection'],
status: ['pending', 'confirmed'],
preparationStatus: 'to_prepare',
'order[createdAt]': 'desc',
page: 1,
},
}),
)Main query params
type?: OrderType | OrderType[]source?: OrderSource | OrderSource[]status?: OrderStatus | OrderStatus[]preparationStatus?: OrderPreparationStatus | OrderPreparationStatus[]paymentMethod?: PaymentMethod | PaymentMethod[]paymentStatus?: PaymentStatus | PaymentStatus[]partner?: OrderPartner | OrderPartner[]partnerIdentifier?: string | string[]isRead?: booleanexists[acceptedAt]?: booleanexists[preparationEndedAt]?: booleanexists[collectedAt]?: booleanexists[deliveredAt]?: booleanpage?: number
Response: Paginated<Order>
GetOrderDetails
import { GetOrderDetails } from '@deliverart/sdk-js-order'
const order = await sdk.call(new GetOrderDetails('123e4567-e89b-12d3-a456-426614174003'))Response: OrderDetails
GetPointOfSaleOrders
import { GetPointOfSaleOrders } from '@deliverart/sdk-js-order'
const orders = await sdk.call(
new GetPointOfSaleOrders('123e4567-e89b-12d3-a456-426614174000', {
query: {
status: 'pending',
page: 1,
},
}),
)Response: Paginated<Order>
GetCustomerOrders
import { GetCustomerOrders } from '@deliverart/sdk-js-order'
const orders = await sdk.call(
new GetCustomerOrders('123e4567-e89b-12d3-a456-426614174001', {
query: {
status: 'confirmed',
page: 1,
},
}),
)Response: Paginated<Order>
UpdateOrder
import { UpdateOrder } from '@deliverart/sdk-js-order'
const updated = await sdk.call(
new UpdateOrder('123e4567-e89b-12d3-a456-426614174003', {
notes: 'Updated notes',
deliveryTime: '2026-03-22T20:15:00+01:00',
}),
)Response: OrderDetails
GetOrderRescheduleOptions
import { GetOrderRescheduleOptions } from '@deliverart/sdk-js-order'
const windows = await sdk.call(
new GetOrderRescheduleOptions('123e4567-e89b-12d3-a456-426614174003', {
query: {
date: '2026-03-22',
includeInvalid: true,
},
}),
)Query params
date?: stringsearchFrom?: stringincludeInvalid?: boolean
Response: OrderRescheduleWindow[]
Each option contains:
scheduledAtrangeStartrangeEndstatusavailableinvalidReasonreferenceBundles
status can be:
keep_current_bundlecreate_new_bundlemove_to_reference_bundleunavailable
invalidReason can be:
store_closedno_capacityoutside_lead_timejourney_outside_window
Lifecycle and Payment Requests
import {
AdvanceOrderPreparationStatus,
ConfirmOrder,
MarkOrderAsCollected,
MarkOrderAsRead,
PayOrder,
RejectOrder,
} from '@deliverart/sdk-js-order'
await sdk.call(new ConfirmOrder('123e4567-e89b-12d3-a456-426614174003'))
await sdk.call(new AdvanceOrderPreparationStatus('123e4567-e89b-12d3-a456-426614174003'))
await sdk.call(new MarkOrderAsRead('123e4567-e89b-12d3-a456-426614174003'))
await sdk.call(new MarkOrderAsCollected('123e4567-e89b-12d3-a456-426614174003'))
await sdk.call(new RejectOrder('123e4567-e89b-12d3-a456-426614174003'))
await sdk.call(new PayOrder('123e4567-e89b-12d3-a456-426614174003', 'cash'))Available requests
ConfirmOrderRejectOrderAdvanceOrderPreparationStatusMarkOrderAsReadMarkOrderAsCollectedPayOrderDeleteOrderGetOrderRescheduleOptionsGenerateOrderBundle
Order Menu Items
GetOrderMenuItems
import { GetOrderMenuItems } from '@deliverart/sdk-js-order'
const items = await sdk.call(
new GetOrderMenuItems({
query: {
type: ['ITEM', 'BUNDLE'],
action: 'add',
'order[createdAt]': 'desc',
page: 1,
},
}),
)Response: Paginated<OrderMenuItem>
GetOrderMenuItemDetails
import { GetOrderMenuItemDetails } from '@deliverart/sdk-js-order'
const item = await sdk.call(
new GetOrderMenuItemDetails('123e4567-e89b-12d3-a456-426614174004'),
)Response: OrderMenuItemDetails
GetOrderMenuItemModifiers
import { GetOrderMenuItemModifiers } from '@deliverart/sdk-js-order'
const modifiers = await sdk.call(
new GetOrderMenuItemModifiers({
query: {
'order[createdAt]': 'desc',
page: 1,
},
}),
)Response: Paginated<OrderMenuItemModifier>
GetOrderMenuItemModifierDetails
import { GetOrderMenuItemModifierDetails } from '@deliverart/sdk-js-order'
const modifier = await sdk.call(
new GetOrderMenuItemModifierDetails('123e4567-e89b-12d3-a456-426614174005'),
)Response: OrderMenuItemModifierDetails
Bundles
Bundle and BundleDetails are discriminated by type.
REGULARFORCED
Bundle read models also expose:
capacityUsedplannedStopsrouteDurationSecondsrouteDistanceMetersslackSecondsplannerVersion
CreateBundle
import { CreateBundle } from '@deliverart/sdk-js-order'
const bundle = await sdk.call(
new CreateBundle({
pointOfSale: '/point_of_sales/123e4567-e89b-12d3-a456-426614174000',
deliverable: true,
ready: false,
}),
)Response: BundleDetails
GenerateOrderBundle
import { GenerateOrderBundle } from '@deliverart/sdk-js-order'
const order = await sdk.call(
new GenerateOrderBundle('123e4567-e89b-12d3-a456-426614174003'),
)Response: OrderDetails
Use this only for orders that currently have no bundle.
GetBundles
import { GetBundles } from '@deliverart/sdk-js-order'
const bundles = await sdk.call(
new GetBundles({
query: {
status: ['pending', 'busy'],
type: 'REGULAR',
'order[createdAt]': 'desc',
page: 1,
},
}),
)Response: Paginated<Bundle>
GetBundleDetails
import { GetBundleDetails } from '@deliverart/sdk-js-order'
const bundle = await sdk.call(new GetBundleDetails('123e4567-e89b-12d3-a456-426614174006'))Response: BundleDetails
GetBundlesFromPointOfSale
import { GetBundlesFromPointOfSale } from '@deliverart/sdk-js-order'
const bundles = await sdk.call(
new GetBundlesFromPointOfSale('123e4567-e89b-12d3-a456-426614174000', {
query: {
ready: false,
page: 1,
},
}),
)Response: Paginated<Bundle>
UpdateBundle
import { UpdateBundle } from '@deliverart/sdk-js-order'
const updated = await sdk.call(
new UpdateBundle('123e4567-e89b-12d3-a456-426614174006', {
ready: true,
}),
)Response: BundleDetails
Available requests
CreateBundleGetBundlesGetBundlesFromPointOfSaleGetBundleDetailsUpdateBundleDeleteBundle
License
MIT
