Documentation contents

Task API schemas

Every model in the Task API, in alphabetical order. 62 in total.

fulfilmentCreateProductRequest

FieldTypeDescription
namestring
weightnumber (double)
dimensionssharedDimensions
merchantProductIdstring
merchantInventoryItemIdstring
ephemeralboolean
skustring
barcodestring
pricenumber (double)
enabledboolean

fulfilmentFulfilmentType

One of MERCHANT, PROPRIETARY

fulfilmentLineItem

FieldTypeDescription
quantityinteger (int32)
productfulfilmentProduct

fulfilmentProduct

FieldTypeDescription
productIdinteger (int32)
createdAtstring (date-time)
updatedAtstring (date-time)
merchantIdinteger (int32)
namestring
enabledboolean
excludedboolean
ephemeralboolean
skustring
barcodestring
pricenumber (double)
weightnumber (double)
dimensionssharedDimensions
merchantProductIdstring
merchantInventoryItemIdstring
inventoryLevelinteger (int32)
weightSourcestringWhere the measurements came from: PLATFORM (the merchant's store), MERCHANT (typed in by hand) or ESTIMATED (worked out by us when neither supplied one). Absent when the measurement has never been set.
dimensionsSourcestring
shopifyStatusstringShopify's current listing state, for example ACTIVE, DRAFT, ARCHIVED or UNLISTED. It is absent for non-Shopify merchants and products imported before the status field was introduced.
shopifyBundlebooleanTrue when Shopify marks this specific variant as requiring components. This is intentionally separate from a Quiver stock configuration: a native bundle can still need an ops decision before it has stock mapped here.
shopifyBundleConfiguredbooleanSet for native Shopify bundles after Quiver has resolved every Shopify component to physical stock. False means the recipe is known but needs an inventory mapping; absent means this is not a Shopify bundle.
shopifyBundleComponentsfulfilmentShopifyBundleComponent[]The recipe supplied by Shopify for a native bundle, enriched with each component's current Quiver stock mapping. It is informational: Shopify remains the source of truth for the recipe itself.
ageCategoriesfulfilmentProductAgeCategoriesThe age-restricted goods in this product, for door age checks. Absent means it has not been classified yet. It is classified when it is first ordered, never as a whole catalogue.

fulfilmentProductAgeCategories

The age-restricted goods in one product. An empty category list means the product is not age-restricted, and it is stored so it is never asked again.

FieldTypeDescription
categoriessharedAgeRestrictedCategory[]
unconfirmedbooleanThe model could not tell. Support is asked to confirm the category, and until then the product is treated as over-18s only. categories then holds the categories it might be in.
sourcefulfilmentProductAgeCategoriesSource
setBystringThe person or service that set it, for example an email address or "service:lambdas".
setAtstring (date-time)

fulfilmentProductAgeCategoriesSource

Who set a product's age categories. - AGE_CATEGORIES_SET_BY_MODEL: Classified by the product enrichment model. - AGE_CATEGORIES_SET_BY_OPS: Set or corrected by Quiver ops or support. - AGE_CATEGORIES_SET_BY_MERCHANT: Set or corrected by the merchant.

One of AGE_CATEGORIES_SET_BY_MODEL, AGE_CATEGORIES_SET_BY_OPS, AGE_CATEGORIES_SET_BY_MERCHANT

fulfilmentShopifyBundleComponent

FieldTypeDescription
productIdinteger (int32)Quiver's product record for the component. It is absent when Shopify's component no longer resolves to a Quiver product.
merchantProductIdstring
namestring
quantityinteger (int32)
inventoryItemConfigsfulfilmentShopifyBundleComponentInventoryItem[]

fulfilmentShopifyBundleComponentInventoryItem

FieldTypeDescription
inventoryItemIdinteger (int32)
multiplierinteger (int32)

protobufAny

FieldTypeDescription
@typestring

rpcStatus

FieldTypeDescription
codeinteger (int32)
messagestring
detailsprotobufAny[]

sharedAddress

FieldTypeDescription
addressIdinteger (int32)
line1string
line2string
citystring
postcodestring
countrystring
companystring
latitudenumber (double)
longitudenumber (double)
addressTypesharedAddressType
locationTypeLabelstringA short, shared label for an address which does not fit the standard categories, e.g. "School". It is a place type, never delivery guidance.
pinStatussharedAddressPinStatus
pinSourcesharedAddressPinSource
pinProviderQualitystring
pinPartialMatchboolean
pinValidatedAtstring (date-time)
pinConfirmationReasonstring

sharedAddressPinSource

The evidence that selected the current operational pin. Provider-specific precision codes belong in pin_provider_quality; clients should use these stable, human-meaningful source names instead.

One of NAURT, GOOGLE_MAPS, OPERATOR, LEGACY

sharedAddressPinStatus

Whether the coordinates can be used as an operational delivery pin. This is deliberately separate from whether the written address is valid: an order may name a real address while still needing a human to confirm its location.

One of VERIFIED, NEEDS_CONFIRMATION, MANUAL_CONFIRMED, UNAVAILABLE

sharedAddressType

One of HOUSE, APARTMENT, OFFICE, SHOP, RESTAURANT_CAFE, HOTEL, HEALTHCARE, EDUCATION, WAREHOUSE

sharedAgeRestrictedCategory

Goods that may only be handed to someone over a minimum age. The list follows Stuart's age-verified delivery categories (Challenge 25). Each category's minimum age lives with the service that checks it, not here. - VAPES_AND_NICOTINE: Vapes, nicotine pouches and zero-nicotine vapes. - KNIVES_AND_BLADES: Knives, blades, razor blades and axes. - AGE_RATED_GAMES_AND_FILMS: 18-rated games and films.

One of ALCOHOL, TOBACCO, VAPES_AND_NICOTINE, KNIVES_AND_BLADES, FIREWORKS, SOLVENTS, AGE_RATED_GAMES_AND_FILMS, LOTTERY, ENERGY_DRINKS

sharedAgeRestriction

The age restriction on one order or parcel. Absent means not restricted.

FieldTypeDescription
categoriessharedAgeRestrictedCategory[]
minimumAgeinteger (int32)The highest minimum age across the categories (for example 18, or 16 for energy drinks alone).
sourcessharedAgeRestrictionSource[]
flaggedAtstring (date-time)
unconfirmedbooleanTrue when at least one product's category is still waiting for support to confirm it. Until then the order is treated as over-18s only, so minimum_age is at least 18.

sharedAgeRestrictionSource

Where an order's age restriction came from. A client flag is kept apart from one Quiver worked out, because a client contract's indemnity can depend on whether the client itself flagged the order. - MERCHANT_DEFAULT: Not used: merchant-wide defaults were dropped in favour of product categories. - PRODUCT: The categories of the products in the order. - CLIENT_ORDER: Flagged by the client on the order itself.

One of MERCHANT_DEFAULT, PRODUCT, CLIENT_ORDER

sharedCreateAddressRequest

FieldTypeDescription
line1string
line2string
citystring
postcodestring
countrystring
companystring
addressTypesharedAddressType
locationTypeLabelstring

sharedDimensions

FieldTypeDescription
heightnumber (double)
widthnumber (double)
depthnumber (double)

sharedMode

One of PRODUCTION, SANDBOX

sharedPaginationParameters

FieldTypeDescription
pageTokenstring
pageSizeinteger (int32)
countboolean

sharedRateCode

- QUIV_DEL_IM: Immediate delivery - QUIV_DEL_WN: Window delivery - QUIV_DEL_SD: Same day delivery - QUIV_DEL_ND: Next day delivery - QUIV_RET: Return - QUIV_DEL_RET: Delivery and return - QUIV_COL: Collect from store

One of QUIV_DEL_IM, QUIV_DEL_WN, QUIV_DEL_SD, QUIV_DEL_ND, QUIV_RET, QUIV_DEL_RET, QUIV_COL

sharedTaskStatus

One of NOT_STARTED, READY_FOR_COLLECTION, OUT_FOR_COLLECTION, COLLECTED, OUT_FOR_DELIVERY, COMPLETED, FAILED, CANCELLED

sharedTaskSubstatus

One of UNDELIVERABLE, ATTEMPT

sharedTaskType

One of DELIVERY, RETURN, COLLECTION

sharedTaskUpdate

FieldTypeDescription
idinteger (int32)
createdAtstring (date-time)
taskIdinteger (int32)
userGroupsharedUserGroup
valueobject

sharedTaskUpdateValue

FieldTypeDescription
fromobject
toobject

sharedUpdateAddressRequest

FieldTypeDescription
addressIdinteger (int32)
latitudenumber (double)
longitudenumber (double)
addressTypesharedAddressType
locationTypeLabelstring

sharedUserGroup

One of CUSTOMER, MERCHANT, QUIVER, CONTROLLER

sharedWindow

TODO: Change to DateTimeWindow

FieldTypeDescription
fromstring (date-time)
tostring (date-time)

taskBatchDownloadLabelsResponse

FieldTypeDescription
urlstring

taskBatchDownloadTasksRequest

FieldTypeDescription
taskIdsinteger (int32)[]List of tasks to download
quantitiesinteger (int32)[]List of quantities for each task. This should be the same length as task_ids.
documentSizetaskDocumentSize

taskContact

FieldTypeDescription
idinteger (int32)
createdAtstring (date-time)
updatedAtstring (date-time)
firstNamestring
lastNamestring
companystring
emailAddressstring
phoneNumberstring

taskCreateContactRequest

FieldTypeDescription
firstNamestring
lastNamestring
companystring
emailAddressstring
phoneNumberstring

taskCreateExpectedWindowRequest

FieldTypeDescription
fromstring (date-time)
tostring (date-time)

taskCreateLineItemRequest

FieldTypeDescription
quantityinteger (int32)
productIdinteger (int32)
merchantProductIdstring
productfulfilmentCreateProductRequest
subscriptionboolean

taskCreateOrderRequest

FieldTypeDescription
lineItemstaskCreateLineItemRequest[]
merchantOrderIdstring
merchantOrderNamestring
pricetaskOrderPrice

taskCreateTaskPartRequest

FieldTypeDescription
addressIdinteger (int32)
addresssharedCreateAddressRequest
merchantLocationIdstringFor a collection, the merchant's external location identifier for the selected collection location. Obtain it from the fulfilment location response and pass the same value when booking.
datestring
windowsharedWindow
instructionsstring

taskCreateTaskRequest

FieldTypeDescription
deliveryTypetaskDeliveryType
collectiontaskCreateTaskPartRequestProvide this part when booking a store collection. Use the selected location's merchantLocationId and the QUIV_COL rate from /quotes.
deliverytaskCreateTaskPartRequest
customerrequiredtaskCreateContactRequest
orderrequiredtaskCreateOrderRequest
purchasertaskCreateContactRequest
customerProfileIdinteger (int32)
notestring
linkedTasksinteger (int32)[]
rateCodesharedRateCodeThe rate code returned by /quotes. Use QUIV_COL for store collection.

taskDeliveryType

One of IMMEDIATE, SAME_DAY, NEXT_DAY, WINDOW

taskDocumentSize

One of A6, A7

taskEligibleWindows

FieldTypeDescription
windowTypetaskWindowType
windowssharedWindow[]

taskExpectedWindow

FieldTypeDescription
createdAtstring (date-time)
fromstring (date-time)
tostring (date-time)
isCustomerAtHomeboolean

taskOrder

FieldTypeDescription
idinteger (int32)
createdAtstring (date-time)
updatedAtstring (date-time)
lineItemsfulfilmentLineItem[]
merchantOrderIdstring
merchantOrderNamestring
pricetaskOrderPrice
notestring
isBigboolean

taskOrderPrice

FieldTypeDescription
totalnumber (double)
subtotalnumber (double)
deliverynumber (double)

taskQueryDeliveriesResponse

FieldTypeDescription
deliveriestaskTask[]
countinteger (int32)

taskQueryReturnsResponse

FieldTypeDescription
returnstaskTask[]
countinteger (int32)

taskQuote

A quote can contain delivery rates, collection rates, or both. A collection rate is returned only for an enabled location with stock for the full basket.

FieldTypeDescription
eligibilitytaskQuoteEligibility
ratestaskRate[]

taskQuoteEligibility

One of PARTIAL, FULL

taskRate

A delivery or store-collection option returned by CreateQuote. For a collection rate, rate_code is QUIV_COL and the name/description identify the selected location and its current collection readiness.

FieldTypeDescription
rateCodesharedRateCode
errorstring
namestring
descriptionstringFor collection, this may include the location address and the next available local collection window after the configured cutoff.
pricenumber (double)
windowsharedWindow
eligibleWindowstaskEligibleWindows
co2Savingsnumber (double)

taskTask

FieldTypeDescription
taskIdinteger (int32)
createdAtstring (date-time)
updatedAtstring (date-time)
taskTypesharedTaskType
merchantNamestring
modesharedMode
statustaskTaskStatusUpdate
fulfilmentTypefulfilmentFulfilmentType
deliveryTypetaskDeliveryType
collectiontaskTaskPart
deliverytaskTaskPart
ordertaskOrder
customertaskContact
purchasertaskContact
customerProfileIdinteger (int32)
trackingIdstring
trackingUrlstring
trackingAccessKeystring
surchargeboolean
co2Savingsnumber (double)
notestaskTaskNote[]
statusUpdatestaskTaskStatusUpdate[]
updatessharedTaskUpdate[]
rateCodesharedRateCode
linkedTasksinteger (int32)[]
readyForCollectionboolean
onTimeboolean
onTimeDeviationMinutesinteger (int32)
attemptstaskTaskAttempt[]
ageRestrictionsharedAgeRestrictionSet when the order holds age-restricted goods (merchant default, product override or a client flag). Absent means not restricted.

taskTaskAttempt

FieldTypeDescription
taskAttemptIdinteger (int32)
taskIdinteger (int32)
parentTaskAttemptIdinteger (int32)
taskAttemptTypetaskTaskAttemptType
attemptNumberinteger (int32)Numbered within the attempt type, so Ops can read "Delivery attempt 1" and, if needed later, "Recovery attempt 2".
statustaskTaskAttemptStatus
reviewNotestring
outcomeNotestring
createdAtstring (date-time)
updatedAtstring (date-time)

taskTaskAttemptStatus

One of PENDING, IN_PROGRESS, COMPLETED, FAILED, CANCELLED

taskTaskAttemptType

A durable operational leg of a task. It is intentionally distinct from a courier job: one attempt can have one or more courier jobs, while attempts preserve the reviewed history of a delivery, recovery, or re-delivery.

One of DELIVERY, RECOVERY, RE_DELIVERY

taskTaskNote

FieldTypeDescription
taskNoteIdinteger (int32)
createdAtstring (date-time)
updatedAtstring (date-time)
deletedAtstring (date-time)
taskIdinteger (int32)
userGroupsharedUserGroup
valuestring

taskTaskPart

FieldTypeDescription
addresssharedAddress
datestring
windowsharedWindow
expectedWindowtaskExpectedWindow
instructionsstring
originalDatestring
committedWindowsharedWindow

taskTaskStatusUpdate

In controller service this is used as the create request as well as the type

FieldTypeDescription
taskStatusIdinteger (int32)
createdAtstring (date-time)
userGroupsharedUserGroup
taskIdinteger (int32)
valuesharedTaskStatus
subvaluesharedTaskSubstatus
notestring

taskUpdateContactRequest

FieldTypeDescription
idinteger (int32)
firstNamestring
lastNamestring
companystring
emailAddressstring
phoneNumberstring

taskUpdateExpectedWindowRequest

FieldTypeDescription
isCustomerAtHomeboolean

taskUpdateOrderRequest

FieldTypeDescription
lineItemstaskCreateLineItemRequest[]
pricetaskOrderPrice
isBigboolean

taskUpdateTaskPartRequest

FieldTypeDescription
addressIdinteger (int32)
addresssharedCreateAddressRequest
datestring
windowsharedWindow
windowUpdateNotestring
createExpectedWindowtaskCreateExpectedWindowRequest
instructionsstring
committedWindowsharedWindow
addressUpdatesharedUpdateAddressRequest
updateExpectedWindowtaskUpdateExpectedWindowRequest

taskWindowType

One of FIXED, SELECTABLE

Quiver Solutions Limited ยท Registered in England and Wales, company number 16961611 ยท 27 Old Gloucester Street, London WC1N 3AX

How We Work
Pricing
Reviews
Become a Courier
Jobs
3