SKU Manager API
Public API for SKU Manager. Use API keys for authentication.
Include your API key in the Authorization header: Authorization: Bearer skm_live_your_key_here
Rate Limits
API keys are rate-limited per minute. The default limit is 100 requests/minute. When exceeded, the API returns a RATE_LIMITED error with a retryAfter value in seconds.
Scopes
An API key can only do what its scopes allow. Each operation below shows the scope it requires. Choose scopes when you create the key.
Your organization ID
Some operations ask for an organizationId. Read it from currentApiKey.
Schema
Introspection is turned off in production. Download the schema from schema.graphql to generate types.
Paging
products returns 25 rows unless you say otherwise. Pass limit and offset in its filter.
Finding products
Filter products instead of paging through the catalogue. searchTerm matches words in the title, description, brand and variant SKUs and titles. skuPattern finds SKUs containing some text. brand finds an exact brand. All three ignore case. skus finds SKUs that match exactly.
Units
Send weight in grams and dimensions in millimetres. Any other weightUnit or dimensionUnit is refused, because a converted value is never guessed.
Prices, weight and dimensions are decimal strings, such as "19.95" and "18", so no precision is lost. A JSON number is refused.
Setting stock
A product's quantity is calculated from its inventory records, so createProduct refuses it. Set opening stock with updateInventory. When stock arrives against a purchase order, use an inventory receipt.
Adding images
Use addProductImageFromUrl for an image at a public https address. It must finish within 12 seconds, so use the steps below for a slow host or a large file. To send a file:
- Call
requestProductImageUpload. - POST the file to the returned
urlasmultipart/form-data, with every entry offieldsfirst and the file last. - Call
confirmProductImageUpload, withaltTextandsortOrderif you want them. It checks the file and adds it to the product. Checksuccess;imageIdis the new image.
If the file is stored but can't be added, success is false and fileId is set. Pass it to addProductImage to try again.
Sales channels
A new product is not sent to any channel until you connect it:
- Find the channel with
salesChannels. - Call
connectProductToChannel. This queues a push that creates the product on the channel. - Read
Product.storeConnectionsfor the result. To push again, callsyncProductToChanneland follow its job withchannelSyncJob. Calling it straight after connecting is safe: the two pushes run one after the other.
Choose where the product appears, such as Online Store or Point of Sale, with setProductChannelSurfaces, and read it back from Product.storeConnections.surfaces: isIncluded is true on the surfaces the product is on, and isPublished is true where shoppers can see it now. A draft is on its surfaces with isPublished false everywhere. salesChannels gives each channel's defaultSurfaceIds, where a new product appears unless you set it.
A product's status decides what shoppers see: DRAFT and ARCHIVED stay hidden, while ACTIVE and UNLISTED are visible. Once connected, every later save is pushed too.
channels:read reads channels and where a product can appear on them. channels:update connects and pushes products and sets where they appear with setProductChannelSurfaces. Changing a product's status needs products:update, like any other product field, and is pushed to every channel the product is on. Deleting a connected product removes it from the channel, so it needs channels:update as well as products:delete.
A product with stock on hand can't be deleted. Set each variant to zero with updateInventory first. When stock is the only reason, the refusal has the error code HAS_STOCK, and extensions.variants lists each variant ID with its quantity. A product on an open order, holding a reservation or used in a kit is refused too, with no specific code yet.
Terms of Service
API Endpoints
https://api.skumanager.com/graphql
Queries
availableStoreLocations
Description
Get available store locations from connected platforms
Required scope: warehouse:read
Response
Returns [StoreLocation!]
Arguments
| Name | Description |
|---|---|
organizationId - ID!
|
Example
Query
query availableStoreLocations($organizationId: ID!) {
availableStoreLocations(organizationId: $organizationId) {
address
city
country
id
isActive
metadata
name
postalCode
state
storeConnectionId
storeType
}
}
Variables
{"organizationId": "4"}
Response
{
"data": {
"availableStoreLocations": [
{
"address": "abc123",
"city": "xyz789",
"country": "xyz789",
"id": "abc123",
"isActive": true,
"metadata": {},
"name": "xyz789",
"postalCode": "abc123",
"state": "abc123",
"storeConnectionId": "4",
"storeType": "AMAZON"
}
]
}
}
channelSyncJob
Description
Check a product push, using the job ID syncProductToChannel returns.
Required scope: channels:read
Response
Returns a ChannelSyncJob
Arguments
| Name | Description |
|---|---|
jobId - ID!
|
Example
Query
query channelSyncJob($jobId: ID!) {
channelSyncJob(jobId: $jobId) {
completedAt
createdAt
error
id
status
}
}
Variables
{"jobId": 4}
Response
{
"data": {
"channelSyncJob": {
"completedAt": "abc123",
"createdAt": "xyz789",
"error": "abc123",
"id": 4,
"status": "abc123"
}
}
}
currentApiKey
Description
The key making this request, including your organization ID.
Response
Returns a CurrentApiKey
Example
Query
query currentApiKey {
currentApiKey {
organizationId
rateLimitPerMin
scopes
}
}
Response
{
"data": {
"currentApiKey": {
"organizationId": "4",
"rateLimitPerMin": 123,
"scopes": ["xyz789"]
}
}
}
customerOrderInvoicePdf
Description
The tax invoice PDF for an order link. Null unless the link is valid, this browser has verified the order email, and an invoice is available.
Response
Returns a CustomerOrderInvoicePdf
Arguments
| Name | Description |
|---|---|
token - String!
|
Example
Query
query customerOrderInvoicePdf($token: String!) {
customerOrderInvoicePdf(token: $token) {
base64
filename
}
}
Variables
{"token": "xyz789"}
Response
{
"data": {
"customerOrderInvoicePdf": {
"base64": "xyz789",
"filename": "xyz789"
}
}
}
customerOrderView
Description
The customer view of an order, by its access-link token. Null when the link is not valid. Personal details are included only once this browser has verified the order email. preview: true skips recording the "viewed" stamp — for staff previewing the page a customer would see (SKU-1879), not a permission: any caller may pass it.
Response
Returns a CustomerOrderView
Example
Query
query customerOrderView(
$preview: Boolean,
$token: String!
) {
customerOrderView(
preview: $preview,
token: $token
) {
details {
...CustomerOrderDetailsFragment
}
items {
...CustomerOrderItemFragment
}
orderDate
orderNumber
organization {
...CustomerOrderOrganizationFragment
}
packages {
...CustomerOrderPackageFragment
}
status
unshippedItems {
...CustomerOrderItemFragment
}
verification {
...CustomerOrderVerificationFragment
}
}
}
Variables
{"preview": true, "token": "abc123"}
Response
{
"data": {
"customerOrderView": {
"details": CustomerOrderDetails,
"items": [CustomerOrderItem],
"orderDate": "xyz789",
"orderNumber": "abc123",
"organization": CustomerOrderOrganization,
"packages": [CustomerOrderPackage],
"status": "CANCELLED",
"unshippedItems": [CustomerOrderItem],
"verification": CustomerOrderVerification
}
}
}
getWebAuthnConfig
Description
Get WebAuthn/Passkey configuration (public - no auth required). Used by frontend for consistent RP ID across all passkey registration flows.
Response
Returns a RelyingParty
Example
Query
query getWebAuthnConfig {
getWebAuthnConfig {
id
name
}
}
Response
{
"data": {
"getWebAuthnConfig": {
"id": "xyz789",
"name": "xyz789"
}
}
}
inventoryReceipt
Description
Get inventory receipt by ID
Required scope: inventory:receive
Response
Returns an InventoryReceipt
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query inventoryReceipt($id: ID!) {
inventoryReceipt(id: $id) {
InventoryReceiptItems {
...InventoryReceiptItemFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrder {
...PurchaseOrderFragment
}
ReceivedBy {
...UserFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
createdAt
discrepancyNotes
hasDiscrepancies
id
itemCount
notes
organizationId
purchaseOrderId
receiptNumber
receivedByEmailSnapshot
receivedByIdSnapshot
receivedByNameSnapshot
receivedByUserId
receivedDate
status
totalQuantityExpected
totalQuantityReceived
updatedAt
varianceQuantity
warehouseLocationId
}
}
Variables
{"id": "4"}
Response
{
"data": {
"inventoryReceipt": {
"InventoryReceiptItems": [InventoryReceiptItem],
"Organization": Organization,
"PurchaseOrder": PurchaseOrder,
"ReceivedBy": User,
"WarehouseLocation": WarehouseLocation,
"createdAt": "xyz789",
"discrepancyNotes": "abc123",
"hasDiscrepancies": false,
"id": 4,
"itemCount": 987,
"notes": "abc123",
"organizationId": "4",
"purchaseOrderId": "xyz789",
"receiptNumber": "xyz789",
"receivedByEmailSnapshot": "xyz789",
"receivedByIdSnapshot": 4,
"receivedByNameSnapshot": "xyz789",
"receivedByUserId": "4",
"receivedDate": "xyz789",
"status": "CANCELLED",
"totalQuantityExpected": 123,
"totalQuantityReceived": 987,
"updatedAt": "xyz789",
"varianceQuantity": 123,
"warehouseLocationId": 4
}
}
}
inventoryReceipts
Description
Get inventory receipts with filters
Required scope: inventory:receive
Response
Returns [InventoryReceipt!]
Example
Query
query inventoryReceipts(
$endDate: String,
$organizationId: ID!,
$purchaseOrderId: ID,
$startDate: String,
$status: String,
$warehouseLocationId: ID
) {
inventoryReceipts(
endDate: $endDate,
organizationId: $organizationId,
purchaseOrderId: $purchaseOrderId,
startDate: $startDate,
status: $status,
warehouseLocationId: $warehouseLocationId
) {
InventoryReceiptItems {
...InventoryReceiptItemFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrder {
...PurchaseOrderFragment
}
ReceivedBy {
...UserFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
createdAt
discrepancyNotes
hasDiscrepancies
id
itemCount
notes
organizationId
purchaseOrderId
receiptNumber
receivedByEmailSnapshot
receivedByIdSnapshot
receivedByNameSnapshot
receivedByUserId
receivedDate
status
totalQuantityExpected
totalQuantityReceived
updatedAt
varianceQuantity
warehouseLocationId
}
}
Variables
{
"endDate": "xyz789",
"organizationId": 4,
"purchaseOrderId": "4",
"startDate": "xyz789",
"status": "abc123",
"warehouseLocationId": 4
}
Response
{
"data": {
"inventoryReceipts": [
{
"InventoryReceiptItems": [InventoryReceiptItem],
"Organization": Organization,
"PurchaseOrder": PurchaseOrder,
"ReceivedBy": User,
"WarehouseLocation": WarehouseLocation,
"createdAt": "xyz789",
"discrepancyNotes": "abc123",
"hasDiscrepancies": false,
"id": "4",
"itemCount": 987,
"notes": "abc123",
"organizationId": "4",
"purchaseOrderId": "abc123",
"receiptNumber": "xyz789",
"receivedByEmailSnapshot": "xyz789",
"receivedByIdSnapshot": 4,
"receivedByNameSnapshot": "abc123",
"receivedByUserId": 4,
"receivedDate": "abc123",
"status": "CANCELLED",
"totalQuantityExpected": 123,
"totalQuantityReceived": 123,
"updatedAt": "abc123",
"varianceQuantity": 987,
"warehouseLocationId": "4"
}
]
}
}
listAgents
Description
List the desktop agent installs registered for an organization, with the devices each one owns. Used by the org Agents management view to review and remove stale/decommissioned agents.
Required scope: devices:read
Response
Returns [Agent!]
Example
Query
query listAgents(
$limit: Int,
$offset: Int,
$orgId: String
) {
listAgents(
limit: $limit,
offset: $offset,
orgId: $orgId
) {
agentUid
agentVersion
createdAt
devices {
...DeviceFragment
}
id
lastSeen
name
orgId
updatedAt
}
}
Variables
{
"limit": 50,
"offset": 0,
"orgId": "abc123"
}
Response
{
"data": {
"listAgents": [
{
"agentUid": "abc123",
"agentVersion": "xyz789",
"createdAt": "xyz789",
"devices": [Device],
"id": "4",
"lastSeen": "xyz789",
"name": "xyz789",
"orgId": "abc123",
"updatedAt": "abc123"
}
]
}
}
listDevices
Description
List all devices registered for an organization
Required scope: devices:read
Response
Returns [Device!]
Example
Query
query listDevices(
$limit: Int,
$offset: Int,
$orgId: String
) {
listDevices(
limit: $limit,
offset: $offset,
orgId: $orgId
) {
agent {
...AgentFragment
}
agentDeviceId
apiKeyId
capabilities
config
createdAt
id
lastSeen
lastWeightAt
lastWeightStatus
mediaProfile {
...MediaProfileFragment
}
name
orgId
printJobs {
...PrintJobFragment
}
status
type
updatedAt
weightGrams
}
}
Variables
{
"limit": 50,
"offset": 0,
"orgId": "xyz789"
}
Response
{
"data": {
"listDevices": [
{
"agent": Agent,
"agentDeviceId": "abc123",
"apiKeyId": "xyz789",
"capabilities": {},
"config": {},
"createdAt": "xyz789",
"id": 4,
"lastSeen": "abc123",
"lastWeightAt": "xyz789",
"lastWeightStatus": "ERROR",
"mediaProfile": MediaProfile,
"name": "abc123",
"orgId": "abc123",
"printJobs": [PrintJob],
"status": "OFFLINE",
"type": "PRINTER",
"updatedAt": "xyz789",
"weightGrams": 987.65
}
]
}
}
listPrintJobs
Description
List print jobs for a device, optionally filtered by status. Paginated, ordered newest-first (createdAt DESC).
Required scope: devices:read
Response
Returns [PrintJob!]
Arguments
| Name | Description |
|---|---|
deviceId - String!
|
|
limit - Int
|
Max results (default 50, max 200). Default = 50 |
offset - Int
|
Skip N results. Default = 0 |
status - PrintJobStatus
|
Example
Query
query listPrintJobs(
$deviceId: String!,
$limit: Int,
$offset: Int,
$status: PrintJobStatus
) {
listPrintJobs(
deviceId: $deviceId,
limit: $limit,
offset: $offset,
status: $status
) {
copies
createdAt
device {
...DeviceFragment
}
deviceId
error
format
id
leaseExpiresAt
orgId
pages
payloadSizeBytes
status
updatedAt
}
}
Variables
{
"deviceId": "xyz789",
"limit": 50,
"offset": 0,
"status": "DISPATCHED"
}
Response
{
"data": {
"listPrintJobs": [
{
"copies": 987,
"createdAt": "abc123",
"device": Device,
"deviceId": "abc123",
"error": "xyz789",
"format": "PDF",
"id": "4",
"leaseExpiresAt": "xyz789",
"orgId": "abc123",
"pages": "xyz789",
"payloadSizeBytes": 987,
"status": "DISPATCHED",
"updatedAt": "abc123"
}
]
}
}
order
Example
Query
query order($id: ID!) {
order(id: $id) {
Customer {
...CustomerFragment
}
FulfillmentPackages {
...FulfillmentPackageFragment
}
OrderComments {
...OrderCommentFragment
}
OrderLineItems {
...OrderLineItemFragment
}
Organization {
...OrganizationFragment
}
WarehouseAllocation {
...OrderWarehouseAllocationFragment
}
billingAddress
billingAddress2
billingCity
billingCompany
billingCountry
billingCountryCode
billingFirstName
billingLastName
billingPostalCode
billingState
cancelReason
cancelStaffNote
cancelledAt
capturedAmount
carrier
closedAt
confirmed
createdAt
currency
currentShippingCost
customerIp
customerNotes
deliveredAt
discountAmount
discountCodes
email
exchangeRate
fulfilledAt
fulfillmentStatus
grossProfit {
...OrderGrossProfitFragment
}
id
importChargesCollectedAmount
importChargesCollectedBy
importChargesCollection
importChargesConflict
importChargesFactSource
importChargesResolvedCollection
importChargesResolvedSource
importChargesShopifyMixed
importChargesShopifyReported
internalNotes
internalOrderNumber
lastSyncedAt
monthlyOrderCap {
...OrderCapStatusFragment
}
notifyCustomerOnRefund
orderDate
orderNumber
organizationId
paidAt
paymentGateway
paymentMethod
paymentStatus
phone
presentmentCapturedAmount
presentmentCurrency
presentmentCurrentShippingCost
presentmentDiscountAmount
presentmentRefundedAmount
presentmentShippingCost
presentmentShippingDiscountAmount
presentmentSubtotal
presentmentTaxAmount
presentmentTotalAmount
processedAt
refundedAmount
refunds
resolvedShippingService {
...ResolvedShippingServiceFragment
}
restockOnCancel
riskAssessmentDetails
riskLevel
riskRecommendation
shippingAddress
shippingAddress2
shippingCity
shippingCompany
shippingCost
shippingCountry
shippingCountryCode
shippingDiscountAmount
shippingFirstName
shippingLastName
shippingLines
shippingMethod
shippingPostalCode
shippingState
shopifyLastCancelError
shopifyLastCancelSyncAt
shopifyOrderId
shopifyOrderNumber
source
status
storeId
subtotal
syncError
syncStatus
tags
taxAmount
taxLines {
...OrderTaxLineFragment
}
taxesIncluded
timeline {
...OrderTimelineEventFragment
}
totalAmount
trackingNumber
trackingUrl
transactions
updatedAt
}
}
Variables
{"id": 4}
Response
{
"data": {
"order": {
"Customer": Customer,
"FulfillmentPackages": [FulfillmentPackage],
"OrderComments": [OrderComment],
"OrderLineItems": [OrderLineItem],
"Organization": Organization,
"WarehouseAllocation": OrderWarehouseAllocation,
"billingAddress": "abc123",
"billingAddress2": "abc123",
"billingCity": "abc123",
"billingCompany": "abc123",
"billingCountry": "xyz789",
"billingCountryCode": "xyz789",
"billingFirstName": "abc123",
"billingLastName": "abc123",
"billingPostalCode": "abc123",
"billingState": "abc123",
"cancelReason": "abc123",
"cancelStaffNote": "xyz789",
"cancelledAt": "xyz789",
"capturedAmount": "abc123",
"carrier": "abc123",
"closedAt": "abc123",
"confirmed": false,
"createdAt": "abc123",
"currency": "abc123",
"currentShippingCost": "abc123",
"customerIp": "xyz789",
"customerNotes": "abc123",
"deliveredAt": "abc123",
"discountAmount": "xyz789",
"discountCodes": {},
"email": "abc123",
"exchangeRate": "abc123",
"fulfilledAt": "xyz789",
"fulfillmentStatus": "CANCELLED",
"grossProfit": OrderGrossProfit,
"id": "4",
"importChargesCollectedAmount": "abc123",
"importChargesCollectedBy": "MERCHANT",
"importChargesCollection": "COLLECTED",
"importChargesConflict": true,
"importChargesFactSource": "API",
"importChargesResolvedCollection": "COLLECTED",
"importChargesResolvedSource": "API",
"importChargesShopifyMixed": true,
"importChargesShopifyReported": "COLLECTED",
"internalNotes": "xyz789",
"internalOrderNumber": 987,
"lastSyncedAt": "abc123",
"monthlyOrderCap": OrderCapStatus,
"notifyCustomerOnRefund": true,
"orderDate": "xyz789",
"orderNumber": "abc123",
"organizationId": "4",
"paidAt": "abc123",
"paymentGateway": "abc123",
"paymentMethod": "abc123",
"paymentStatus": "AUTHORIZED",
"phone": "abc123",
"presentmentCapturedAmount": "abc123",
"presentmentCurrency": "abc123",
"presentmentCurrentShippingCost": "abc123",
"presentmentDiscountAmount": "xyz789",
"presentmentRefundedAmount": "xyz789",
"presentmentShippingCost": "xyz789",
"presentmentShippingDiscountAmount": "abc123",
"presentmentSubtotal": "abc123",
"presentmentTaxAmount": "xyz789",
"presentmentTotalAmount": "abc123",
"processedAt": "xyz789",
"refundedAmount": "abc123",
"refunds": {},
"resolvedShippingService": ResolvedShippingService,
"restockOnCancel": true,
"riskAssessmentDetails": {},
"riskLevel": "xyz789",
"riskRecommendation": "xyz789",
"shippingAddress": "abc123",
"shippingAddress2": "abc123",
"shippingCity": "abc123",
"shippingCompany": "xyz789",
"shippingCost": "xyz789",
"shippingCountry": "abc123",
"shippingCountryCode": "xyz789",
"shippingDiscountAmount": "abc123",
"shippingFirstName": "abc123",
"shippingLastName": "abc123",
"shippingLines": {},
"shippingMethod": "xyz789",
"shippingPostalCode": "abc123",
"shippingState": "abc123",
"shopifyLastCancelError": "abc123",
"shopifyLastCancelSyncAt": "abc123",
"shopifyOrderId": "abc123",
"shopifyOrderNumber": "abc123",
"source": "abc123",
"status": "CANCELLED",
"storeId": "4",
"subtotal": "xyz789",
"syncError": "xyz789",
"syncStatus": "ERROR",
"tags": ["abc123"],
"taxAmount": "abc123",
"taxLines": [OrderTaxLine],
"taxesIncluded": false,
"timeline": [OrderTimelineEvent],
"totalAmount": "xyz789",
"trackingNumber": "abc123",
"trackingUrl": "xyz789",
"transactions": {},
"updatedAt": "xyz789"
}
}
}
orderCount
Description
Get total count of orders for the organization, with optional filters for pagination
Required scope: orders:read
Response
Returns an Int
Arguments
| Name | Description |
|---|---|
customerId - ID
|
Filter by customer |
fulfillmentStatus - String
|
Filter by fulfillment status |
orderedFrom - DateTime
|
Only orders whose orderDate is at or after this instant (ISO 8601). |
organizationId - ID!
|
|
paymentStatus - String
|
Filter by payment status |
presentmentCurrencies - [String!]
|
|
search - String
|
Search by order number or customer name |
shopCurrencies - [String!]
|
|
status - String
|
Filter by order status |
statusFilter - String
|
Predefined filter: all, ready, unfulfilled, unpaid, pickable, partialPicked, picked, fulfilled, hold, cancelled. Any other value is parsed as a comma-separated list of OrderStatus enum members (e.g. "DRAFT,PENDING"); an unrecognised value is rejected. |
warehouseLocationId - ID
|
Filter by allocated warehouse |
withoutCustomer - Boolean
|
true: only orders with no customer; false: only orders with one; omitted: both. |
Example
Query
query orderCount(
$customerId: ID,
$fulfillmentStatus: String,
$orderedFrom: DateTime,
$organizationId: ID!,
$paymentStatus: String,
$presentmentCurrencies: [String!],
$search: String,
$shopCurrencies: [String!],
$status: String,
$statusFilter: String,
$warehouseLocationId: ID,
$withoutCustomer: Boolean
) {
orderCount(
customerId: $customerId,
fulfillmentStatus: $fulfillmentStatus,
orderedFrom: $orderedFrom,
organizationId: $organizationId,
paymentStatus: $paymentStatus,
presentmentCurrencies: $presentmentCurrencies,
search: $search,
shopCurrencies: $shopCurrencies,
status: $status,
statusFilter: $statusFilter,
warehouseLocationId: $warehouseLocationId,
withoutCustomer: $withoutCustomer
)
}
Variables
{
"customerId": 4,
"fulfillmentStatus": "abc123",
"orderedFrom": "2007-12-03T10:15:30Z",
"organizationId": "4",
"paymentStatus": "xyz789",
"presentmentCurrencies": ["xyz789"],
"search": "abc123",
"shopCurrencies": ["abc123"],
"status": "abc123",
"statusFilter": "xyz789",
"warehouseLocationId": "4",
"withoutCustomer": true
}
Response
{"data": {"orderCount": 123}}
orderStatusCounts
Description
Get counts for all order status categories in a single query
Response
Returns an OrderStatusCounts
Example
Query
query orderStatusCounts(
$organizationId: ID!,
$warehouseLocationId: ID
) {
orderStatusCounts(
organizationId: $organizationId,
warehouseLocationId: $warehouseLocationId
) {
all
cancelled
fulfilled
hold
partialPicked
pickable
picked
ready
unfulfilled
unpaid
}
}
Variables
{
"organizationId": "4",
"warehouseLocationId": 4
}
Response
{
"data": {
"orderStatusCounts": {
"all": 123,
"cancelled": 987,
"fulfilled": 987,
"hold": 987,
"partialPicked": 987,
"pickable": 987,
"picked": 987,
"ready": 987,
"unfulfilled": 123,
"unpaid": 987
}
}
}
orders
Response
Returns [Order!]
Arguments
| Name | Description |
|---|---|
customerId - ID
|
|
fulfillmentStatus - String
|
Filter by fulfillment status |
limit - Int
|
Records per page (max 100, default 25). Default = 25 |
offset - Int
|
Number of records to skip for pagination. Default = 0 |
orderedFrom - DateTime
|
Only orders whose orderDate is at or after this instant (ISO 8601). |
organizationId - ID!
|
|
paymentStatus - String
|
Filter by payment status |
presentmentCurrencies - [String!]
|
|
search - String
|
Search by order number or customer name |
shopCurrencies - [String!]
|
|
shopifyOrderIds - [String!]
|
Filter to exactly these Shopify order IDs. When supplied, bypasses limit/offset pagination entirely and returns every matching row — for sync callers (SKU-1385) that already know which orders they need and must not silently miss one to the default/max page size. Accepts at most 250 ids per call; a longer list is rejected. |
sortBy - String
|
Sort field: order, external, date, customer, total, fulfillment |
sortDirection - String
|
Sort direction: asc or desc (default: desc) |
status - String
|
|
statusFilter - String
|
Predefined filter: all, ready, unfulfilled, unpaid, pickable, partialPicked, picked, fulfilled, hold, cancelled. Any other value is parsed as a comma-separated list of OrderStatus enum members (e.g. "DRAFT,PENDING"); an unrecognised value is rejected. |
warehouseLocationId - ID
|
Filter by allocated warehouse (for warehouse context filtering) |
withoutCustomer - Boolean
|
true: only orders with no customer; false: only orders with one; omitted: both. |
Example
Query
query orders(
$customerId: ID,
$fulfillmentStatus: String,
$limit: Int,
$offset: Int,
$orderedFrom: DateTime,
$organizationId: ID!,
$paymentStatus: String,
$presentmentCurrencies: [String!],
$search: String,
$shopCurrencies: [String!],
$shopifyOrderIds: [String!],
$sortBy: String,
$sortDirection: String,
$status: String,
$statusFilter: String,
$warehouseLocationId: ID,
$withoutCustomer: Boolean
) {
orders(
customerId: $customerId,
fulfillmentStatus: $fulfillmentStatus,
limit: $limit,
offset: $offset,
orderedFrom: $orderedFrom,
organizationId: $organizationId,
paymentStatus: $paymentStatus,
presentmentCurrencies: $presentmentCurrencies,
search: $search,
shopCurrencies: $shopCurrencies,
shopifyOrderIds: $shopifyOrderIds,
sortBy: $sortBy,
sortDirection: $sortDirection,
status: $status,
statusFilter: $statusFilter,
warehouseLocationId: $warehouseLocationId,
withoutCustomer: $withoutCustomer
) {
Customer {
...CustomerFragment
}
FulfillmentPackages {
...FulfillmentPackageFragment
}
OrderComments {
...OrderCommentFragment
}
OrderLineItems {
...OrderLineItemFragment
}
Organization {
...OrganizationFragment
}
WarehouseAllocation {
...OrderWarehouseAllocationFragment
}
billingAddress
billingAddress2
billingCity
billingCompany
billingCountry
billingCountryCode
billingFirstName
billingLastName
billingPostalCode
billingState
cancelReason
cancelStaffNote
cancelledAt
capturedAmount
carrier
closedAt
confirmed
createdAt
currency
currentShippingCost
customerIp
customerNotes
deliveredAt
discountAmount
discountCodes
email
exchangeRate
fulfilledAt
fulfillmentStatus
grossProfit {
...OrderGrossProfitFragment
}
id
importChargesCollectedAmount
importChargesCollectedBy
importChargesCollection
importChargesConflict
importChargesFactSource
importChargesResolvedCollection
importChargesResolvedSource
importChargesShopifyMixed
importChargesShopifyReported
internalNotes
internalOrderNumber
lastSyncedAt
monthlyOrderCap {
...OrderCapStatusFragment
}
notifyCustomerOnRefund
orderDate
orderNumber
organizationId
paidAt
paymentGateway
paymentMethod
paymentStatus
phone
presentmentCapturedAmount
presentmentCurrency
presentmentCurrentShippingCost
presentmentDiscountAmount
presentmentRefundedAmount
presentmentShippingCost
presentmentShippingDiscountAmount
presentmentSubtotal
presentmentTaxAmount
presentmentTotalAmount
processedAt
refundedAmount
refunds
resolvedShippingService {
...ResolvedShippingServiceFragment
}
restockOnCancel
riskAssessmentDetails
riskLevel
riskRecommendation
shippingAddress
shippingAddress2
shippingCity
shippingCompany
shippingCost
shippingCountry
shippingCountryCode
shippingDiscountAmount
shippingFirstName
shippingLastName
shippingLines
shippingMethod
shippingPostalCode
shippingState
shopifyLastCancelError
shopifyLastCancelSyncAt
shopifyOrderId
shopifyOrderNumber
source
status
storeId
subtotal
syncError
syncStatus
tags
taxAmount
taxLines {
...OrderTaxLineFragment
}
taxesIncluded
timeline {
...OrderTimelineEventFragment
}
totalAmount
trackingNumber
trackingUrl
transactions
updatedAt
}
}
Variables
{
"customerId": "4",
"fulfillmentStatus": "abc123",
"limit": 25,
"offset": 0,
"orderedFrom": "2007-12-03T10:15:30Z",
"organizationId": "4",
"paymentStatus": "xyz789",
"presentmentCurrencies": ["abc123"],
"search": "abc123",
"shopCurrencies": ["xyz789"],
"shopifyOrderIds": ["xyz789"],
"sortBy": "xyz789",
"sortDirection": "xyz789",
"status": "xyz789",
"statusFilter": "abc123",
"warehouseLocationId": 4,
"withoutCustomer": true
}
Response
{
"data": {
"orders": [
{
"Customer": Customer,
"FulfillmentPackages": [FulfillmentPackage],
"OrderComments": [OrderComment],
"OrderLineItems": [OrderLineItem],
"Organization": Organization,
"WarehouseAllocation": OrderWarehouseAllocation,
"billingAddress": "abc123",
"billingAddress2": "xyz789",
"billingCity": "abc123",
"billingCompany": "abc123",
"billingCountry": "abc123",
"billingCountryCode": "xyz789",
"billingFirstName": "xyz789",
"billingLastName": "abc123",
"billingPostalCode": "abc123",
"billingState": "xyz789",
"cancelReason": "abc123",
"cancelStaffNote": "xyz789",
"cancelledAt": "xyz789",
"capturedAmount": "xyz789",
"carrier": "abc123",
"closedAt": "abc123",
"confirmed": false,
"createdAt": "abc123",
"currency": "xyz789",
"currentShippingCost": "xyz789",
"customerIp": "xyz789",
"customerNotes": "xyz789",
"deliveredAt": "abc123",
"discountAmount": "abc123",
"discountCodes": {},
"email": "xyz789",
"exchangeRate": "abc123",
"fulfilledAt": "abc123",
"fulfillmentStatus": "CANCELLED",
"grossProfit": OrderGrossProfit,
"id": 4,
"importChargesCollectedAmount": "xyz789",
"importChargesCollectedBy": "MERCHANT",
"importChargesCollection": "COLLECTED",
"importChargesConflict": false,
"importChargesFactSource": "API",
"importChargesResolvedCollection": "COLLECTED",
"importChargesResolvedSource": "API",
"importChargesShopifyMixed": false,
"importChargesShopifyReported": "COLLECTED",
"internalNotes": "xyz789",
"internalOrderNumber": 987,
"lastSyncedAt": "abc123",
"monthlyOrderCap": OrderCapStatus,
"notifyCustomerOnRefund": true,
"orderDate": "xyz789",
"orderNumber": "xyz789",
"organizationId": 4,
"paidAt": "abc123",
"paymentGateway": "abc123",
"paymentMethod": "xyz789",
"paymentStatus": "AUTHORIZED",
"phone": "xyz789",
"presentmentCapturedAmount": "abc123",
"presentmentCurrency": "xyz789",
"presentmentCurrentShippingCost": "abc123",
"presentmentDiscountAmount": "abc123",
"presentmentRefundedAmount": "abc123",
"presentmentShippingCost": "xyz789",
"presentmentShippingDiscountAmount": "abc123",
"presentmentSubtotal": "abc123",
"presentmentTaxAmount": "abc123",
"presentmentTotalAmount": "abc123",
"processedAt": "abc123",
"refundedAmount": "abc123",
"refunds": {},
"resolvedShippingService": ResolvedShippingService,
"restockOnCancel": false,
"riskAssessmentDetails": {},
"riskLevel": "xyz789",
"riskRecommendation": "xyz789",
"shippingAddress": "abc123",
"shippingAddress2": "abc123",
"shippingCity": "abc123",
"shippingCompany": "abc123",
"shippingCost": "abc123",
"shippingCountry": "xyz789",
"shippingCountryCode": "abc123",
"shippingDiscountAmount": "abc123",
"shippingFirstName": "xyz789",
"shippingLastName": "abc123",
"shippingLines": {},
"shippingMethod": "xyz789",
"shippingPostalCode": "abc123",
"shippingState": "abc123",
"shopifyLastCancelError": "xyz789",
"shopifyLastCancelSyncAt": "abc123",
"shopifyOrderId": "xyz789",
"shopifyOrderNumber": "abc123",
"source": "xyz789",
"status": "CANCELLED",
"storeId": "4",
"subtotal": "xyz789",
"syncError": "xyz789",
"syncStatus": "ERROR",
"tags": ["xyz789"],
"taxAmount": "abc123",
"taxLines": [OrderTaxLine],
"taxesIncluded": true,
"timeline": [OrderTimelineEvent],
"totalAmount": "abc123",
"trackingNumber": "xyz789",
"trackingUrl": "abc123",
"transactions": {},
"updatedAt": "xyz789"
}
]
}
}
passwordSetupLinkStatus
Description
Status of an invitation or password-reset link, so the reset page can show an expired link immediately instead of asking for a password it already knows will be rejected. Returns UNKNOWN when the check is declined (rate limited or limiter unavailable) — treat that as unchecked, not as a bad link.
Required scope: orders:read
Response
Returns a PasswordSetupLinkStatus
Arguments
| Name | Description |
|---|---|
token - String!
|
Example
Query
query passwordSetupLinkStatus($token: String!) {
passwordSetupLinkStatus(token: $token)
}
Variables
{"token": "xyz789"}
Response
{"data": {"passwordSetupLinkStatus": "EXPIRED"}}
product
Description
Get product by ID
Required scope: products:read
Example
Query
query product($id: ID!) {
product(id: $id) {
Organization {
...OrganizationFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
ProductStoreConnection {
...ProductStoreConnectionFragment
}
SourcingListings {
...SourcingListingFragment
}
allowBackorder
assemblyMode
availableQuantity
barcode
basePrice
brand
bundleComponentCount
bundleDiscountPercent
bundleItems {
...ProductBundleItemFragment
}
bundlePricing
bundledIn {
...ProductBundleItemFragment
}
category
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
defaultVariant {
...ProductVariantFragment
}
description
dimensionUnit
displayTitle
effectiveAssemblyMode
handle
hasOnlyDefaultVariant
height
hsCode
id
images {
...ProductImageFragment
}
isActive
isActiveSKU
isGiftCard
kitInventoryMode
length
lowStockThreshold
metaDescription
metaTitle
option1Name
option2Name
option3Name
optionDefinitions {
...ProductOptionDefinitionFragment
}
organizationId
primaryImage {
...ProductImageFragment
}
primaryImageId
productLocationInventories {
...ProductLocationInventoryFragment
}
productType
productVariants {
...ProductVariantFragment
}
provinceOfOrigin
publishedAt
purchasableItemId
quantity
requiresShipping
reservedQuantity
sku
skuType
slug
status
stockStatus
storeConnections {
...ProductStoreConnectionFragment
}
supplier {
...SupplierFragment
}
supplierId
tags
taxCode
taxable
title
totalQuantity
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
type
updatedAt
warehouseLocation
weight
weightUnit
width
}
}
Variables
{"id": 4}
Response
{
"data": {
"product": {
"Organization": Organization,
"ProductLocationInventory": [
ProductLocationInventory
],
"ProductStoreConnection": [ProductStoreConnection],
"SourcingListings": [SourcingListing],
"allowBackorder": false,
"assemblyMode": "BOTH",
"availableQuantity": 123,
"barcode": "abc123",
"basePrice": "abc123",
"brand": "xyz789",
"bundleComponentCount": 123,
"bundleDiscountPercent": "abc123",
"bundleItems": [ProductBundleItem],
"bundlePricing": "CALCULATED",
"bundledIn": [ProductBundleItem],
"category": "abc123",
"compareAtPrice": "xyz789",
"costPrice": "xyz789",
"countryOfOrigin": "abc123",
"createdAt": "abc123",
"customsDescription": "xyz789",
"defaultVariant": ProductVariant,
"description": "abc123",
"dimensionUnit": "CM",
"displayTitle": "xyz789",
"effectiveAssemblyMode": "BOTH",
"handle": "xyz789",
"hasOnlyDefaultVariant": false,
"height": "xyz789",
"hsCode": "xyz789",
"id": "4",
"images": [ProductImage],
"isActive": true,
"isActiveSKU": false,
"isGiftCard": true,
"kitInventoryMode": "ACTIVE",
"length": "xyz789",
"lowStockThreshold": 123,
"metaDescription": "xyz789",
"metaTitle": "xyz789",
"option1Name": "abc123",
"option2Name": "xyz789",
"option3Name": "xyz789",
"optionDefinitions": [ProductOptionDefinition],
"organizationId": "4",
"primaryImage": ProductImage,
"primaryImageId": "xyz789",
"productLocationInventories": [
ProductLocationInventory
],
"productType": "abc123",
"productVariants": [ProductVariant],
"provinceOfOrigin": "xyz789",
"publishedAt": "xyz789",
"purchasableItemId": "abc123",
"quantity": 987,
"requiresShipping": true,
"reservedQuantity": 123,
"sku": "abc123",
"skuType": "BUNDLE",
"slug": "abc123",
"status": "ACTIVE",
"stockStatus": "ALWAYS_IN_STOCK",
"storeConnections": [ProductStoreConnection],
"supplier": Supplier,
"supplierId": "xyz789",
"tags": ["xyz789"],
"taxCode": "abc123",
"taxable": false,
"title": "xyz789",
"totalQuantity": 987,
"trackInventory": false,
"trackInventoryNeedsRestoration": false,
"trackInventoryUserSet": false,
"type": "BUNDLE",
"updatedAt": "abc123",
"warehouseLocation": "xyz789",
"weight": "xyz789",
"weightUnit": "GRAMS",
"width": "xyz789"
}
}
}
productImages
Description
Get images for a product
Required scope: products:read
Response
Returns [ProductImage!]
Arguments
| Name | Description |
|---|---|
productId - ID!
|
Example
Query
query productImages($productId: ID!) {
productImages(productId: $productId) {
altText
createdAt
file {
...FileFragment
}
fileId
fileSize
height
id
imageUrl
product {
...ProductFragment
}
productId
shopifyImageId
shopifyImageLegacyId
shopifyPosition
sortOrder
sourceUrl
status
thumbnails
updatedAt
url
width
}
}
Variables
{"productId": 4}
Response
{
"data": {
"productImages": [
{
"altText": "xyz789",
"createdAt": "abc123",
"file": File,
"fileId": 4,
"fileSize": 123,
"height": 123,
"id": "4",
"imageUrl": "xyz789",
"product": Product,
"productId": "4",
"shopifyImageId": "xyz789",
"shopifyImageLegacyId": "xyz789",
"shopifyPosition": 123,
"sortOrder": 987,
"sourceUrl": "xyz789",
"status": "xyz789",
"thumbnails": {},
"updatedAt": "xyz789",
"url": "xyz789",
"width": 123
}
]
}
}
productLocationInventory
Description
Get product inventory at specific warehouse location
Required scope: inventory:read
Response
Returns a ProductLocationInventory
Example
Query
query productLocationInventory(
$locationId: ID,
$productId: ID!,
$productVariantId: ID!,
$warehouseLocationId: ID!
) {
productLocationInventory(
locationId: $locationId,
productId: $productId,
productVariantId: $productVariantId,
warehouseLocationId: $warehouseLocationId
) {
Product {
...ProductFragment
}
ProductVariant {
...ProductVariantFragment
}
WarehouseArea {
...WarehouseAreaFragment
}
WarehouseBay {
...WarehouseBayFragment
}
WarehouseBin {
...WarehouseBinFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
binType
createdAt
id
isPreferred
lastCountDate
lastSyncAt
locationId
locationPath
lowStockThreshold
productId
productVariantId
quantity
syncErrors
syncStatus
updatedAt
warehouseAreaId
warehouseBayId
warehouseBinId
warehouseLocationId
}
}
Variables
{
"locationId": "4",
"productId": "4",
"productVariantId": 4,
"warehouseLocationId": "4"
}
Response
{
"data": {
"productLocationInventory": {
"Product": Product,
"ProductVariant": ProductVariant,
"WarehouseArea": WarehouseArea,
"WarehouseBay": WarehouseBay,
"WarehouseBin": WarehouseBin,
"WarehouseLocation": WarehouseLocation,
"binType": "abc123",
"createdAt": "xyz789",
"id": 4,
"isPreferred": false,
"lastCountDate": "xyz789",
"lastSyncAt": "abc123",
"locationId": "4",
"locationPath": "abc123",
"lowStockThreshold": 987,
"productId": "4",
"productVariantId": "abc123",
"quantity": 987,
"syncErrors": {},
"syncStatus": "ERROR",
"updatedAt": "xyz789",
"warehouseAreaId": "abc123",
"warehouseBayId": "abc123",
"warehouseBinId": "abc123",
"warehouseLocationId": "4"
}
}
}
productVariant
Description
Get a single product variant by ID
Required scope: products:read
Response
Returns a ProductVariant
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query productVariant($id: ID!) {
productVariant(id: $id) {
Product {
...ProductFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
PurchasableItem {
...PurchasableItemFragment
}
allowBackorder
availableQuantity
barcode
basePrice
calculatedCost
calculatedCostIsPartial
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
dimensionUnit
height
hsCode
id
length
lowStockThreshold
onHandQuantity
option1Value
option2Value
option3Value
organizationId
position
primaryImage {
...ProductImageFragment
}
primaryImageId
productId
provinceOfOrigin
purchasableItemId
qrCode
quantity
requiresShipping
reservedQuantity
sku
stockStatus
taxCode
taxable
title
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
updatedAt
weight
weightUnit
width
}
}
Variables
{"id": 4}
Response
{
"data": {
"productVariant": {
"Product": Product,
"ProductLocationInventory": [
ProductLocationInventory
],
"PurchasableItem": PurchasableItem,
"allowBackorder": true,
"availableQuantity": 987,
"barcode": "xyz789",
"basePrice": "abc123",
"calculatedCost": "abc123",
"calculatedCostIsPartial": true,
"compareAtPrice": "xyz789",
"costPrice": "xyz789",
"countryOfOrigin": "abc123",
"createdAt": "abc123",
"customsDescription": "xyz789",
"dimensionUnit": "CM",
"height": "abc123",
"hsCode": "xyz789",
"id": "4",
"length": "abc123",
"lowStockThreshold": 123,
"onHandQuantity": 987,
"option1Value": "abc123",
"option2Value": "xyz789",
"option3Value": "abc123",
"organizationId": 4,
"position": 987,
"primaryImage": ProductImage,
"primaryImageId": "abc123",
"productId": "4",
"provinceOfOrigin": "xyz789",
"purchasableItemId": "4",
"qrCode": "xyz789",
"quantity": 987,
"requiresShipping": true,
"reservedQuantity": 987,
"sku": "abc123",
"stockStatus": "ALWAYS_IN_STOCK",
"taxCode": "abc123",
"taxable": true,
"title": "abc123",
"trackInventory": false,
"trackInventoryNeedsRestoration": false,
"trackInventoryUserSet": true,
"updatedAt": "xyz789",
"weight": "abc123",
"weightUnit": "GRAMS",
"width": "abc123"
}
}
}
productVariantBySku
Description
Find a product variant by SKU within an organization
Required scope: products:read
Response
Returns a ProductVariant
Example
Query
query productVariantBySku(
$organizationId: ID!,
$sku: String!
) {
productVariantBySku(
organizationId: $organizationId,
sku: $sku
) {
Product {
...ProductFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
PurchasableItem {
...PurchasableItemFragment
}
allowBackorder
availableQuantity
barcode
basePrice
calculatedCost
calculatedCostIsPartial
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
dimensionUnit
height
hsCode
id
length
lowStockThreshold
onHandQuantity
option1Value
option2Value
option3Value
organizationId
position
primaryImage {
...ProductImageFragment
}
primaryImageId
productId
provinceOfOrigin
purchasableItemId
qrCode
quantity
requiresShipping
reservedQuantity
sku
stockStatus
taxCode
taxable
title
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
updatedAt
weight
weightUnit
width
}
}
Variables
{"organizationId": 4, "sku": "abc123"}
Response
{
"data": {
"productVariantBySku": {
"Product": Product,
"ProductLocationInventory": [
ProductLocationInventory
],
"PurchasableItem": PurchasableItem,
"allowBackorder": true,
"availableQuantity": 123,
"barcode": "abc123",
"basePrice": "abc123",
"calculatedCost": "abc123",
"calculatedCostIsPartial": false,
"compareAtPrice": "abc123",
"costPrice": "xyz789",
"countryOfOrigin": "xyz789",
"createdAt": "xyz789",
"customsDescription": "xyz789",
"dimensionUnit": "CM",
"height": "xyz789",
"hsCode": "xyz789",
"id": 4,
"length": "xyz789",
"lowStockThreshold": 987,
"onHandQuantity": 123,
"option1Value": "abc123",
"option2Value": "abc123",
"option3Value": "xyz789",
"organizationId": 4,
"position": 987,
"primaryImage": ProductImage,
"primaryImageId": "abc123",
"productId": "4",
"provinceOfOrigin": "xyz789",
"purchasableItemId": "4",
"qrCode": "xyz789",
"quantity": 987,
"requiresShipping": true,
"reservedQuantity": 987,
"sku": "abc123",
"stockStatus": "ALWAYS_IN_STOCK",
"taxCode": "xyz789",
"taxable": true,
"title": "abc123",
"trackInventory": false,
"trackInventoryNeedsRestoration": true,
"trackInventoryUserSet": true,
"updatedAt": "xyz789",
"weight": "xyz789",
"weightUnit": "GRAMS",
"width": "abc123"
}
}
}
productVariants
Description
Get all variants for a product
Required scope: products:read
Response
Returns [ProductVariant!]
Example
Query
query productVariants(
$organizationId: ID!,
$productId: ID!
) {
productVariants(
organizationId: $organizationId,
productId: $productId
) {
Product {
...ProductFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
PurchasableItem {
...PurchasableItemFragment
}
allowBackorder
availableQuantity
barcode
basePrice
calculatedCost
calculatedCostIsPartial
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
dimensionUnit
height
hsCode
id
length
lowStockThreshold
onHandQuantity
option1Value
option2Value
option3Value
organizationId
position
primaryImage {
...ProductImageFragment
}
primaryImageId
productId
provinceOfOrigin
purchasableItemId
qrCode
quantity
requiresShipping
reservedQuantity
sku
stockStatus
taxCode
taxable
title
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
updatedAt
weight
weightUnit
width
}
}
Variables
{"organizationId": 4, "productId": 4}
Response
{
"data": {
"productVariants": [
{
"Product": Product,
"ProductLocationInventory": [
ProductLocationInventory
],
"PurchasableItem": PurchasableItem,
"allowBackorder": true,
"availableQuantity": 123,
"barcode": "abc123",
"basePrice": "xyz789",
"calculatedCost": "xyz789",
"calculatedCostIsPartial": true,
"compareAtPrice": "abc123",
"costPrice": "abc123",
"countryOfOrigin": "xyz789",
"createdAt": "abc123",
"customsDescription": "xyz789",
"dimensionUnit": "CM",
"height": "abc123",
"hsCode": "abc123",
"id": "4",
"length": "xyz789",
"lowStockThreshold": 987,
"onHandQuantity": 987,
"option1Value": "abc123",
"option2Value": "abc123",
"option3Value": "abc123",
"organizationId": "4",
"position": 123,
"primaryImage": ProductImage,
"primaryImageId": "abc123",
"productId": "4",
"provinceOfOrigin": "abc123",
"purchasableItemId": "4",
"qrCode": "xyz789",
"quantity": 987,
"requiresShipping": true,
"reservedQuantity": 123,
"sku": "abc123",
"stockStatus": "ALWAYS_IN_STOCK",
"taxCode": "xyz789",
"taxable": false,
"title": "abc123",
"trackInventory": true,
"trackInventoryNeedsRestoration": true,
"trackInventoryUserSet": false,
"updatedAt": "xyz789",
"weight": "abc123",
"weightUnit": "GRAMS",
"width": "xyz789"
}
]
}
}
productWarehouseInventory
Description
Get all warehouse inventory records for a product
Required scope: inventory:read
Response
Returns [ProductLocationInventory!]
Example
Query
query productWarehouseInventory(
$organizationId: ID,
$productId: ID!,
$productVariantId: ID!
) {
productWarehouseInventory(
organizationId: $organizationId,
productId: $productId,
productVariantId: $productVariantId
) {
Product {
...ProductFragment
}
ProductVariant {
...ProductVariantFragment
}
WarehouseArea {
...WarehouseAreaFragment
}
WarehouseBay {
...WarehouseBayFragment
}
WarehouseBin {
...WarehouseBinFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
binType
createdAt
id
isPreferred
lastCountDate
lastSyncAt
locationId
locationPath
lowStockThreshold
productId
productVariantId
quantity
syncErrors
syncStatus
updatedAt
warehouseAreaId
warehouseBayId
warehouseBinId
warehouseLocationId
}
}
Variables
{
"organizationId": 4,
"productId": "4",
"productVariantId": "4"
}
Response
{
"data": {
"productWarehouseInventory": [
{
"Product": Product,
"ProductVariant": ProductVariant,
"WarehouseArea": WarehouseArea,
"WarehouseBay": WarehouseBay,
"WarehouseBin": WarehouseBin,
"WarehouseLocation": WarehouseLocation,
"binType": "abc123",
"createdAt": "xyz789",
"id": 4,
"isPreferred": false,
"lastCountDate": "xyz789",
"lastSyncAt": "abc123",
"locationId": 4,
"locationPath": "xyz789",
"lowStockThreshold": 987,
"productId": "4",
"productVariantId": "abc123",
"quantity": 123,
"syncErrors": {},
"syncStatus": "ERROR",
"updatedAt": "abc123",
"warehouseAreaId": "xyz789",
"warehouseBayId": "xyz789",
"warehouseBinId": "abc123",
"warehouseLocationId": "4"
}
]
}
}
products
Description
Get products with filtering
Required scope: products:read
Response
Returns [Product!]
Arguments
| Name | Description |
|---|---|
filter - ProductFilterInput
|
Example
Query
query products($filter: ProductFilterInput) {
products(filter: $filter) {
Organization {
...OrganizationFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
ProductStoreConnection {
...ProductStoreConnectionFragment
}
SourcingListings {
...SourcingListingFragment
}
allowBackorder
assemblyMode
availableQuantity
barcode
basePrice
brand
bundleComponentCount
bundleDiscountPercent
bundleItems {
...ProductBundleItemFragment
}
bundlePricing
bundledIn {
...ProductBundleItemFragment
}
category
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
defaultVariant {
...ProductVariantFragment
}
description
dimensionUnit
displayTitle
effectiveAssemblyMode
handle
hasOnlyDefaultVariant
height
hsCode
id
images {
...ProductImageFragment
}
isActive
isActiveSKU
isGiftCard
kitInventoryMode
length
lowStockThreshold
metaDescription
metaTitle
option1Name
option2Name
option3Name
optionDefinitions {
...ProductOptionDefinitionFragment
}
organizationId
primaryImage {
...ProductImageFragment
}
primaryImageId
productLocationInventories {
...ProductLocationInventoryFragment
}
productType
productVariants {
...ProductVariantFragment
}
provinceOfOrigin
publishedAt
purchasableItemId
quantity
requiresShipping
reservedQuantity
sku
skuType
slug
status
stockStatus
storeConnections {
...ProductStoreConnectionFragment
}
supplier {
...SupplierFragment
}
supplierId
tags
taxCode
taxable
title
totalQuantity
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
type
updatedAt
warehouseLocation
weight
weightUnit
width
}
}
Variables
{"filter": ProductFilterInput}
Response
{
"data": {
"products": [
{
"Organization": Organization,
"ProductLocationInventory": [
ProductLocationInventory
],
"ProductStoreConnection": [
ProductStoreConnection
],
"SourcingListings": [SourcingListing],
"allowBackorder": false,
"assemblyMode": "BOTH",
"availableQuantity": 123,
"barcode": "xyz789",
"basePrice": "abc123",
"brand": "xyz789",
"bundleComponentCount": 123,
"bundleDiscountPercent": "abc123",
"bundleItems": [ProductBundleItem],
"bundlePricing": "CALCULATED",
"bundledIn": [ProductBundleItem],
"category": "xyz789",
"compareAtPrice": "abc123",
"costPrice": "abc123",
"countryOfOrigin": "xyz789",
"createdAt": "xyz789",
"customsDescription": "abc123",
"defaultVariant": ProductVariant,
"description": "xyz789",
"dimensionUnit": "CM",
"displayTitle": "abc123",
"effectiveAssemblyMode": "BOTH",
"handle": "abc123",
"hasOnlyDefaultVariant": false,
"height": "xyz789",
"hsCode": "abc123",
"id": 4,
"images": [ProductImage],
"isActive": true,
"isActiveSKU": false,
"isGiftCard": false,
"kitInventoryMode": "ACTIVE",
"length": "xyz789",
"lowStockThreshold": 987,
"metaDescription": "xyz789",
"metaTitle": "xyz789",
"option1Name": "abc123",
"option2Name": "xyz789",
"option3Name": "abc123",
"optionDefinitions": [ProductOptionDefinition],
"organizationId": 4,
"primaryImage": ProductImage,
"primaryImageId": "xyz789",
"productLocationInventories": [
ProductLocationInventory
],
"productType": "abc123",
"productVariants": [ProductVariant],
"provinceOfOrigin": "abc123",
"publishedAt": "xyz789",
"purchasableItemId": "abc123",
"quantity": 123,
"requiresShipping": false,
"reservedQuantity": 123,
"sku": "xyz789",
"skuType": "BUNDLE",
"slug": "abc123",
"status": "ACTIVE",
"stockStatus": "ALWAYS_IN_STOCK",
"storeConnections": [ProductStoreConnection],
"supplier": Supplier,
"supplierId": "xyz789",
"tags": ["xyz789"],
"taxCode": "xyz789",
"taxable": true,
"title": "xyz789",
"totalQuantity": 987,
"trackInventory": false,
"trackInventoryNeedsRestoration": true,
"trackInventoryUserSet": true,
"type": "BUNDLE",
"updatedAt": "xyz789",
"warehouseLocation": "abc123",
"weight": "xyz789",
"weightUnit": "GRAMS",
"width": "abc123"
}
]
}
}
purchaseOrder
Description
Get purchase order by ID
Required scope: purchase-orders:read
Response
Returns a PurchaseOrder
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query purchaseOrder($id: ID!) {
purchaseOrder(id: $id) {
CreatedBy {
...UserFragment
}
CreatedByUser {
...UserFragment
}
InventoryReceipts {
...InventoryReceiptFragment
}
LastModifiedBy {
...UserFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrderItems {
...PurchaseOrderItemFragment
}
Supplier {
...SupplierFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
actualDeliveryDate
approvedAt
approvedBy
createdAt
createdByUserEmailSnapshot
createdByUserId
createdByUserIdSnapshot
createdByUserNameSnapshot
currency
exchangeRate
expectedDeliveryDate
id
internalNotes
internalPoNumber
isFullyReceived
itemCount
lastModifiedByUserEmailSnapshot
lastModifiedByUserId
lastModifiedByUserIdSnapshot
lastModifiedByUserNameSnapshot
notes
orderDate
organizationId
otherCosts
paymentTerms
pdfFileId
pdfGeneratedAt
pdfUrl
poNumber
receiptCount
remainingQuantity
sendCount
sentAt
sentTo
shipToWarehouseId
shippingAddress
shippingCity
shippingCost
shippingCountry
shippingMethod
shippingPostalCode
shippingState
status
subtotal
supplierId
taxAmount
totalCost
totalQuantityOrdered
totalQuantityReceived
trackingNumber
trackingUrl
updatedAt
}
}
Variables
{"id": 4}
Response
{
"data": {
"purchaseOrder": {
"CreatedBy": User,
"CreatedByUser": User,
"InventoryReceipts": [InventoryReceipt],
"LastModifiedBy": User,
"Organization": Organization,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"WarehouseLocation": WarehouseLocation,
"actualDeliveryDate": "xyz789",
"approvedAt": "abc123",
"approvedBy": "xyz789",
"createdAt": "xyz789",
"createdByUserEmailSnapshot": "abc123",
"createdByUserId": 4,
"createdByUserIdSnapshot": "4",
"createdByUserNameSnapshot": "abc123",
"currency": "abc123",
"exchangeRate": "abc123",
"expectedDeliveryDate": "xyz789",
"id": "4",
"internalNotes": "xyz789",
"internalPoNumber": 123,
"isFullyReceived": true,
"itemCount": 987,
"lastModifiedByUserEmailSnapshot": "abc123",
"lastModifiedByUserId": "4",
"lastModifiedByUserIdSnapshot": 4,
"lastModifiedByUserNameSnapshot": "abc123",
"notes": "xyz789",
"orderDate": "xyz789",
"organizationId": 4,
"otherCosts": "abc123",
"paymentTerms": "xyz789",
"pdfFileId": "xyz789",
"pdfGeneratedAt": "xyz789",
"pdfUrl": "xyz789",
"poNumber": "abc123",
"receiptCount": 987,
"remainingQuantity": 123,
"sendCount": 987,
"sentAt": "xyz789",
"sentTo": "xyz789",
"shipToWarehouseId": 4,
"shippingAddress": "xyz789",
"shippingCity": "abc123",
"shippingCost": "abc123",
"shippingCountry": "abc123",
"shippingMethod": "xyz789",
"shippingPostalCode": "abc123",
"shippingState": "xyz789",
"status": "CANCELLED",
"subtotal": "xyz789",
"supplierId": 4,
"taxAmount": "abc123",
"totalCost": "xyz789",
"totalQuantityOrdered": 987,
"totalQuantityReceived": 123,
"trackingNumber": "xyz789",
"trackingUrl": "abc123",
"updatedAt": "abc123"
}
}
}
purchaseOrders
Description
Get purchase orders with filters
Required scope: purchase-orders:read
Response
Returns [PurchaseOrder!]
Example
Query
query purchaseOrders(
$currencies: [String!],
$endDate: String,
$organizationId: ID!,
$startDate: String,
$status: String,
$supplierId: ID
) {
purchaseOrders(
currencies: $currencies,
endDate: $endDate,
organizationId: $organizationId,
startDate: $startDate,
status: $status,
supplierId: $supplierId
) {
CreatedBy {
...UserFragment
}
CreatedByUser {
...UserFragment
}
InventoryReceipts {
...InventoryReceiptFragment
}
LastModifiedBy {
...UserFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrderItems {
...PurchaseOrderItemFragment
}
Supplier {
...SupplierFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
actualDeliveryDate
approvedAt
approvedBy
createdAt
createdByUserEmailSnapshot
createdByUserId
createdByUserIdSnapshot
createdByUserNameSnapshot
currency
exchangeRate
expectedDeliveryDate
id
internalNotes
internalPoNumber
isFullyReceived
itemCount
lastModifiedByUserEmailSnapshot
lastModifiedByUserId
lastModifiedByUserIdSnapshot
lastModifiedByUserNameSnapshot
notes
orderDate
organizationId
otherCosts
paymentTerms
pdfFileId
pdfGeneratedAt
pdfUrl
poNumber
receiptCount
remainingQuantity
sendCount
sentAt
sentTo
shipToWarehouseId
shippingAddress
shippingCity
shippingCost
shippingCountry
shippingMethod
shippingPostalCode
shippingState
status
subtotal
supplierId
taxAmount
totalCost
totalQuantityOrdered
totalQuantityReceived
trackingNumber
trackingUrl
updatedAt
}
}
Variables
{
"currencies": ["abc123"],
"endDate": "abc123",
"organizationId": 4,
"startDate": "xyz789",
"status": "xyz789",
"supplierId": 4
}
Response
{
"data": {
"purchaseOrders": [
{
"CreatedBy": User,
"CreatedByUser": User,
"InventoryReceipts": [InventoryReceipt],
"LastModifiedBy": User,
"Organization": Organization,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"WarehouseLocation": WarehouseLocation,
"actualDeliveryDate": "xyz789",
"approvedAt": "abc123",
"approvedBy": "xyz789",
"createdAt": "xyz789",
"createdByUserEmailSnapshot": "abc123",
"createdByUserId": "4",
"createdByUserIdSnapshot": 4,
"createdByUserNameSnapshot": "xyz789",
"currency": "xyz789",
"exchangeRate": "xyz789",
"expectedDeliveryDate": "abc123",
"id": "4",
"internalNotes": "xyz789",
"internalPoNumber": 987,
"isFullyReceived": true,
"itemCount": 123,
"lastModifiedByUserEmailSnapshot": "abc123",
"lastModifiedByUserId": "4",
"lastModifiedByUserIdSnapshot": "4",
"lastModifiedByUserNameSnapshot": "xyz789",
"notes": "xyz789",
"orderDate": "abc123",
"organizationId": 4,
"otherCosts": "abc123",
"paymentTerms": "xyz789",
"pdfFileId": "xyz789",
"pdfGeneratedAt": "xyz789",
"pdfUrl": "abc123",
"poNumber": "abc123",
"receiptCount": 987,
"remainingQuantity": 123,
"sendCount": 987,
"sentAt": "abc123",
"sentTo": "abc123",
"shipToWarehouseId": 4,
"shippingAddress": "xyz789",
"shippingCity": "abc123",
"shippingCost": "abc123",
"shippingCountry": "abc123",
"shippingMethod": "abc123",
"shippingPostalCode": "xyz789",
"shippingState": "abc123",
"status": "CANCELLED",
"subtotal": "xyz789",
"supplierId": "4",
"taxAmount": "abc123",
"totalCost": "xyz789",
"totalQuantityOrdered": 123,
"totalQuantityReceived": 123,
"trackingNumber": "xyz789",
"trackingUrl": "abc123",
"updatedAt": "xyz789"
}
]
}
}
salesChannelSurfaces
Description
List the places a channel can show a product, such as Online Store or Point of Sale.
Required scope: channels:read
Response
Returns [ShopifyStorePublication!]
Arguments
| Name | Description |
|---|---|
channelId - ID!
|
Example
Query
query salesChannelSurfaces($channelId: ID!) {
salesChannelSurfaces(channelId: $channelId) {
shopifyPublicationId
title
}
}
Variables
{"channelId": 4}
Response
{
"data": {
"salesChannelSurfaces": [
{
"shopifyPublicationId": "4",
"title": "xyz789"
}
]
}
}
salesChannels
Description
List your organization's connected sales channels.
Required scope: channels:read
Response
Returns [SalesChannel!]
Example
Query
query salesChannels {
salesChannels {
defaultSurfaceIds
domain
id
isActive
name
status
type
}
}
Response
{
"data": {
"salesChannels": [
{
"defaultSurfaceIds": [4],
"domain": "xyz789",
"id": 4,
"isActive": false,
"name": "abc123",
"status": "xyz789",
"type": "xyz789"
}
]
}
}
sourcingListing
Description
A single sourcing listing.
Required scope: suppliers:read
Response
Returns a SourcingListing
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query sourcingListing($id: ID!) {
sourcingListing(id: $id) {
PriceBreaks {
...SourcingListingPriceBreakFragment
}
Product {
...ProductFragment
}
ProductVariant {
...ProductVariantFragment
}
PurchaseOrderItems {
...PurchaseOrderItemFragment
}
Supplier {
...SupplierFragment
}
createdAt
currency
freeShippingThreshold
id
isActive
isPrimary
lastOrderedAt
lastVerifiedAt
leadTimeDays
listingUrl
minimumOrderQuantity
notes
organizationId
packSize
productId
productVariantId
quoteAt {
...SourcingQuoteFragment
}
shippingFee
supplierId
supplierProductName
supplierSku
updatedAt
}
}
Variables
{"id": "4"}
Response
{
"data": {
"sourcingListing": {
"PriceBreaks": [SourcingListingPriceBreak],
"Product": Product,
"ProductVariant": ProductVariant,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"createdAt": "xyz789",
"currency": "xyz789",
"freeShippingThreshold": "abc123",
"id": "4",
"isActive": false,
"isPrimary": false,
"lastOrderedAt": "xyz789",
"lastVerifiedAt": "xyz789",
"leadTimeDays": 123,
"listingUrl": "abc123",
"minimumOrderQuantity": 123,
"notes": "abc123",
"organizationId": 4,
"packSize": 123,
"productId": "4",
"productVariantId": "4",
"quoteAt": SourcingQuote,
"shippingFee": "abc123",
"supplierId": 4,
"supplierProductName": "abc123",
"supplierSku": "xyz789",
"updatedAt": "abc123"
}
}
}
sourcingListings
Description
Sourcing listings for a product, variant or supplier. Queried by product/variant rather than hung off Supplier, because a listing may have no supplier at all.
Required scope: suppliers:read
Response
Returns [SourcingListing!]
Arguments
| Name | Description |
|---|---|
includeProductLevel - Boolean
|
With productVariantId, also return the product-level listings that variant inherits. |
isActive - Boolean
|
|
limit - Int
|
Records per page (max 200, default 50). Default = 50 |
offset - Int
|
Default = 0 |
productId - ID
|
|
productVariantId - ID
|
|
supplierId - ID
|
|
unlinkedOnly - Boolean
|
Only listings with no supplier record. |
Example
Query
query sourcingListings(
$includeProductLevel: Boolean,
$isActive: Boolean,
$limit: Int,
$offset: Int,
$productId: ID,
$productVariantId: ID,
$supplierId: ID,
$unlinkedOnly: Boolean
) {
sourcingListings(
includeProductLevel: $includeProductLevel,
isActive: $isActive,
limit: $limit,
offset: $offset,
productId: $productId,
productVariantId: $productVariantId,
supplierId: $supplierId,
unlinkedOnly: $unlinkedOnly
) {
PriceBreaks {
...SourcingListingPriceBreakFragment
}
Product {
...ProductFragment
}
ProductVariant {
...ProductVariantFragment
}
PurchaseOrderItems {
...PurchaseOrderItemFragment
}
Supplier {
...SupplierFragment
}
createdAt
currency
freeShippingThreshold
id
isActive
isPrimary
lastOrderedAt
lastVerifiedAt
leadTimeDays
listingUrl
minimumOrderQuantity
notes
organizationId
packSize
productId
productVariantId
quoteAt {
...SourcingQuoteFragment
}
shippingFee
supplierId
supplierProductName
supplierSku
updatedAt
}
}
Variables
{
"includeProductLevel": false,
"isActive": true,
"limit": 50,
"offset": 0,
"productId": "4",
"productVariantId": 4,
"supplierId": "4",
"unlinkedOnly": false
}
Response
{
"data": {
"sourcingListings": [
{
"PriceBreaks": [SourcingListingPriceBreak],
"Product": Product,
"ProductVariant": ProductVariant,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"createdAt": "xyz789",
"currency": "xyz789",
"freeShippingThreshold": "abc123",
"id": 4,
"isActive": true,
"isPrimary": false,
"lastOrderedAt": "xyz789",
"lastVerifiedAt": "xyz789",
"leadTimeDays": 123,
"listingUrl": "xyz789",
"minimumOrderQuantity": 987,
"notes": "abc123",
"organizationId": 4,
"packSize": 123,
"productId": 4,
"productVariantId": "4",
"quoteAt": SourcingQuote,
"shippingFee": "abc123",
"supplierId": 4,
"supplierProductName": "abc123",
"supplierSku": "xyz789",
"updatedAt": "abc123"
}
]
}
}
supplier
Description
Get supplier by ID
Required scope: suppliers:read
Example
Query
query supplier($id: ID!) {
supplier(id: $id) {
Organization {
...OrganizationFragment
}
PurchaseOrders {
...PurchaseOrderFragment
}
SourcingListings {
...SourcingListingFragment
}
address
city
code
contactEmail
contactName
contactPhone
country
countryCode
createdAt
currency
description
id
isActive
leadTimeDays
metadata
minimumOrderValue
name
notes
organizationId
paymentTerms
postalCode
productCount
purchaseOrderCount
purchasePortalUrl
rating
shippingMethod
state
updatedAt
website
}
}
Variables
{"id": "4"}
Response
{
"data": {
"supplier": {
"Organization": Organization,
"PurchaseOrders": [PurchaseOrder],
"SourcingListings": [SourcingListing],
"address": "abc123",
"city": "abc123",
"code": "xyz789",
"contactEmail": "xyz789",
"contactName": "abc123",
"contactPhone": "abc123",
"country": "abc123",
"countryCode": "xyz789",
"createdAt": "xyz789",
"currency": "xyz789",
"description": "abc123",
"id": "4",
"isActive": false,
"leadTimeDays": 987,
"metadata": "abc123",
"minimumOrderValue": "xyz789",
"name": "abc123",
"notes": "abc123",
"organizationId": "4",
"paymentTerms": "abc123",
"postalCode": "abc123",
"productCount": 123,
"purchaseOrderCount": 987,
"purchasePortalUrl": "abc123",
"rating": 123,
"shippingMethod": "abc123",
"state": "xyz789",
"updatedAt": "abc123",
"website": "xyz789"
}
}
}
supplierCount
Description
Get total count of suppliers for the organization, with optional filters for pagination
Required scope: suppliers:read
Response
Returns an Int
Example
Query
query supplierCount(
$isActive: Boolean,
$organizationId: ID!,
$searchTerm: String
) {
supplierCount(
isActive: $isActive,
organizationId: $organizationId,
searchTerm: $searchTerm
)
}
Variables
{
"isActive": false,
"organizationId": 4,
"searchTerm": "abc123"
}
Response
{"data": {"supplierCount": 987}}
suppliers
Description
Get suppliers with optional filters and pagination
Required scope: suppliers:read
Response
Returns [Supplier!]
Arguments
| Name | Description |
|---|---|
isActive - Boolean
|
|
limit - Int
|
Records per page (max 100, default 25). Default = 25 |
offset - Int
|
Number of records to skip for pagination. Default = 0 |
organizationId - ID!
|
|
searchTerm - String
|
|
sortBy - String
|
Sort field: name, code, contactName, city, country, createdAt |
sortDirection - String
|
Sort direction: asc or desc (default: asc) |
Example
Query
query suppliers(
$isActive: Boolean,
$limit: Int,
$offset: Int,
$organizationId: ID!,
$searchTerm: String,
$sortBy: String,
$sortDirection: String
) {
suppliers(
isActive: $isActive,
limit: $limit,
offset: $offset,
organizationId: $organizationId,
searchTerm: $searchTerm,
sortBy: $sortBy,
sortDirection: $sortDirection
) {
Organization {
...OrganizationFragment
}
PurchaseOrders {
...PurchaseOrderFragment
}
SourcingListings {
...SourcingListingFragment
}
address
city
code
contactEmail
contactName
contactPhone
country
countryCode
createdAt
currency
description
id
isActive
leadTimeDays
metadata
minimumOrderValue
name
notes
organizationId
paymentTerms
postalCode
productCount
purchaseOrderCount
purchasePortalUrl
rating
shippingMethod
state
updatedAt
website
}
}
Variables
{
"isActive": false,
"limit": 25,
"offset": 0,
"organizationId": 4,
"searchTerm": "abc123",
"sortBy": "xyz789",
"sortDirection": "xyz789"
}
Response
{
"data": {
"suppliers": [
{
"Organization": Organization,
"PurchaseOrders": [PurchaseOrder],
"SourcingListings": [SourcingListing],
"address": "xyz789",
"city": "xyz789",
"code": "abc123",
"contactEmail": "abc123",
"contactName": "abc123",
"contactPhone": "xyz789",
"country": "xyz789",
"countryCode": "abc123",
"createdAt": "abc123",
"currency": "xyz789",
"description": "xyz789",
"id": 4,
"isActive": false,
"leadTimeDays": 987,
"metadata": "abc123",
"minimumOrderValue": "xyz789",
"name": "xyz789",
"notes": "xyz789",
"organizationId": 4,
"paymentTerms": "xyz789",
"postalCode": "abc123",
"productCount": 123,
"purchaseOrderCount": 123,
"purchasePortalUrl": "xyz789",
"rating": 987,
"shippingMethod": "xyz789",
"state": "abc123",
"updatedAt": "xyz789",
"website": "xyz789"
}
]
}
}
unlinkedStoreLocations
Description
Shopify locations with no active warehouse link, fetched live from Shopify (SKU-1311). Inventory at these locations does not sync and is not counted anywhere.
Required scope: warehouse:read
Response
Returns an UnlinkedStoreLocationsResult
Arguments
| Name | Description |
|---|---|
organizationId - ID!
|
Example
Query
query unlinkedStoreLocations($organizationId: ID!) {
unlinkedStoreLocations(organizationId: $organizationId) {
stores {
...UnlinkedStoreLocationsStoreFragment
}
}
}
Variables
{"organizationId": 4}
Response
{
"data": {
"unlinkedStoreLocations": {
"stores": [UnlinkedStoreLocationsStore]
}
}
}
variantsWarehouseInventory
Description
Get all warehouse inventory records for all child variants of a parent product
Required scope: inventory:read
Response
Returns [ProductLocationInventory!]
Arguments
| Name | Description |
|---|---|
parentProductId - ID!
|
Example
Query
query variantsWarehouseInventory($parentProductId: ID!) {
variantsWarehouseInventory(parentProductId: $parentProductId) {
Product {
...ProductFragment
}
ProductVariant {
...ProductVariantFragment
}
WarehouseArea {
...WarehouseAreaFragment
}
WarehouseBay {
...WarehouseBayFragment
}
WarehouseBin {
...WarehouseBinFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
binType
createdAt
id
isPreferred
lastCountDate
lastSyncAt
locationId
locationPath
lowStockThreshold
productId
productVariantId
quantity
syncErrors
syncStatus
updatedAt
warehouseAreaId
warehouseBayId
warehouseBinId
warehouseLocationId
}
}
Variables
{"parentProductId": 4}
Response
{
"data": {
"variantsWarehouseInventory": [
{
"Product": Product,
"ProductVariant": ProductVariant,
"WarehouseArea": WarehouseArea,
"WarehouseBay": WarehouseBay,
"WarehouseBin": WarehouseBin,
"WarehouseLocation": WarehouseLocation,
"binType": "xyz789",
"createdAt": "abc123",
"id": 4,
"isPreferred": false,
"lastCountDate": "xyz789",
"lastSyncAt": "xyz789",
"locationId": 4,
"locationPath": "xyz789",
"lowStockThreshold": 987,
"productId": "4",
"productVariantId": "xyz789",
"quantity": 123,
"syncErrors": {},
"syncStatus": "ERROR",
"updatedAt": "xyz789",
"warehouseAreaId": "abc123",
"warehouseBayId": "abc123",
"warehouseBinId": "xyz789",
"warehouseLocationId": 4
}
]
}
}
warehouseLocation
Description
Get warehouse location by ID
Required scope: warehouse:read
Response
Returns a WarehouseLocation
Example
Query
query warehouseLocation(
$id: ID!,
$organizationId: ID!
) {
warehouseLocation(
id: $id,
organizationId: $organizationId
) {
address
areaLabel
areas {
...WarehouseAreaFragment
}
bayLabel
binLabel
binNamingPattern
city
contactEmail
contactName
contactPhone
country
countryCode
createdAt
defaultBayNumLevels
description
id
isActive
isPrimary
labelReturnAddressType
labelSenderAddressType
mailingAddress {
...AddressFragment
}
metadata
name
organizationId
physicalAddress {
...AddressFragment
}
postalCode
rowLabel
shelfLabel
showOnContactPage
state
stationeryStock {
...StationeryLocationStockFragment
}
storeConnections {
...WarehouseStoreConnectionFragment
}
updatedAt
}
}
Variables
{"id": 4, "organizationId": "4"}
Response
{
"data": {
"warehouseLocation": {
"address": "abc123",
"areaLabel": "xyz789",
"areas": [WarehouseArea],
"bayLabel": "abc123",
"binLabel": "abc123",
"binNamingPattern": "abc123",
"city": "abc123",
"contactEmail": "abc123",
"contactName": "abc123",
"contactPhone": "xyz789",
"country": "abc123",
"countryCode": "abc123",
"createdAt": "xyz789",
"defaultBayNumLevels": 987,
"description": "abc123",
"id": "4",
"isActive": true,
"isPrimary": false,
"labelReturnAddressType": "MAILING",
"labelSenderAddressType": "MAILING",
"mailingAddress": Address,
"metadata": {},
"name": "abc123",
"organizationId": 4,
"physicalAddress": Address,
"postalCode": "abc123",
"rowLabel": "xyz789",
"shelfLabel": "xyz789",
"showOnContactPage": true,
"state": "xyz789",
"stationeryStock": [StationeryLocationStock],
"storeConnections": [WarehouseStoreConnection],
"updatedAt": "abc123"
}
}
}
warehouseLocations
Description
Get all warehouse locations for organization
Required scope: warehouse:read
Response
Returns [WarehouseLocation!]
Arguments
| Name | Description |
|---|---|
organizationId - ID!
|
Example
Query
query warehouseLocations($organizationId: ID!) {
warehouseLocations(organizationId: $organizationId) {
address
areaLabel
areas {
...WarehouseAreaFragment
}
bayLabel
binLabel
binNamingPattern
city
contactEmail
contactName
contactPhone
country
countryCode
createdAt
defaultBayNumLevels
description
id
isActive
isPrimary
labelReturnAddressType
labelSenderAddressType
mailingAddress {
...AddressFragment
}
metadata
name
organizationId
physicalAddress {
...AddressFragment
}
postalCode
rowLabel
shelfLabel
showOnContactPage
state
stationeryStock {
...StationeryLocationStockFragment
}
storeConnections {
...WarehouseStoreConnectionFragment
}
updatedAt
}
}
Variables
{"organizationId": 4}
Response
{
"data": {
"warehouseLocations": [
{
"address": "xyz789",
"areaLabel": "xyz789",
"areas": [WarehouseArea],
"bayLabel": "abc123",
"binLabel": "xyz789",
"binNamingPattern": "abc123",
"city": "xyz789",
"contactEmail": "abc123",
"contactName": "abc123",
"contactPhone": "abc123",
"country": "xyz789",
"countryCode": "xyz789",
"createdAt": "xyz789",
"defaultBayNumLevels": 123,
"description": "abc123",
"id": "4",
"isActive": true,
"isPrimary": true,
"labelReturnAddressType": "MAILING",
"labelSenderAddressType": "MAILING",
"mailingAddress": Address,
"metadata": {},
"name": "abc123",
"organizationId": "4",
"physicalAddress": Address,
"postalCode": "abc123",
"rowLabel": "xyz789",
"shelfLabel": "xyz789",
"showOnContactPage": false,
"state": "abc123",
"stationeryStock": [StationeryLocationStock],
"storeConnections": [WarehouseStoreConnection],
"updatedAt": "abc123"
}
]
}
}
Mutations
addProductImage
Description
Add an uploaded file to a product as an image. confirmProductImageUpload already does this, so it is only needed to retry; a file the product already shows returns that image.
Required scope: products:update
Response
Returns a ProductImage
Arguments
| Name | Description |
|---|---|
input - AddProductImageInput!
|
Example
Query
mutation addProductImage($input: AddProductImageInput!) {
addProductImage(input: $input) {
altText
createdAt
file {
...FileFragment
}
fileId
fileSize
height
id
imageUrl
product {
...ProductFragment
}
productId
shopifyImageId
shopifyImageLegacyId
shopifyPosition
sortOrder
sourceUrl
status
thumbnails
updatedAt
url
width
}
}
Variables
{"input": AddProductImageInput}
Response
{
"data": {
"addProductImage": {
"altText": "xyz789",
"createdAt": "xyz789",
"file": File,
"fileId": 4,
"fileSize": 987,
"height": 123,
"id": 4,
"imageUrl": "xyz789",
"product": Product,
"productId": "4",
"shopifyImageId": "xyz789",
"shopifyImageLegacyId": "abc123",
"shopifyPosition": 123,
"sortOrder": 123,
"sourceUrl": "abc123",
"status": "abc123",
"thumbnails": {},
"updatedAt": "xyz789",
"url": "abc123",
"width": 123
}
}
}
addProductImageFromUrl
Description
Fetch an image from a public https URL and add it to a product, in one call.
Required scope: products:update
Response
Returns a ProductImage
Arguments
| Name | Description |
|---|---|
input - AddProductImageFromUrlInput!
|
Example
Query
mutation addProductImageFromUrl($input: AddProductImageFromUrlInput!) {
addProductImageFromUrl(input: $input) {
altText
createdAt
file {
...FileFragment
}
fileId
fileSize
height
id
imageUrl
product {
...ProductFragment
}
productId
shopifyImageId
shopifyImageLegacyId
shopifyPosition
sortOrder
sourceUrl
status
thumbnails
updatedAt
url
width
}
}
Variables
{"input": AddProductImageFromUrlInput}
Response
{
"data": {
"addProductImageFromUrl": {
"altText": "abc123",
"createdAt": "abc123",
"file": File,
"fileId": 4,
"fileSize": 987,
"height": 987,
"id": 4,
"imageUrl": "abc123",
"product": Product,
"productId": 4,
"shopifyImageId": "xyz789",
"shopifyImageLegacyId": "abc123",
"shopifyPosition": 987,
"sortOrder": 987,
"sourceUrl": "xyz789",
"status": "abc123",
"thumbnails": {},
"updatedAt": "xyz789",
"url": "xyz789",
"width": 987
}
}
}
addPurchaseOrderItem
Description
Add an item to a purchase order
Required scope: purchase-orders:update
Response
Returns a PurchaseOrderItem
Arguments
| Name | Description |
|---|---|
input - AddPurchaseOrderItemInput!
|
Example
Query
mutation addPurchaseOrderItem($input: AddPurchaseOrderItemInput!) {
addPurchaseOrderItem(input: $input) {
InventoryReceiptItems {
...InventoryReceiptItemFragment
}
Product {
...ProductFragment
}
PurchasableItem {
...PurchasableItemFragment
}
PurchaseOrder {
...PurchaseOrderFragment
}
SourcingListing {
...SourcingListingFragment
}
createdAt
id
itemName
itemSku
itemType
lineTotal
notes
productId
productVariantId
purchasableItemId
purchaseOrderId
quantityOrdered
quantityOutstanding
quantityReceived
sourcingListingId
supplierSku
unitCost
unitCostOverridden
updatedAt
}
}
Variables
{"input": AddPurchaseOrderItemInput}
Response
{
"data": {
"addPurchaseOrderItem": {
"InventoryReceiptItems": [InventoryReceiptItem],
"Product": Product,
"PurchasableItem": PurchasableItem,
"PurchaseOrder": PurchaseOrder,
"SourcingListing": SourcingListing,
"createdAt": "xyz789",
"id": 4,
"itemName": "abc123",
"itemSku": "xyz789",
"itemType": "xyz789",
"lineTotal": "abc123",
"notes": "abc123",
"productId": 4,
"productVariantId": 4,
"purchasableItemId": 4,
"purchaseOrderId": "4",
"quantityOrdered": 123,
"quantityOutstanding": 123,
"quantityReceived": 123,
"sourcingListingId": "4",
"supplierSku": "abc123",
"unitCost": "abc123",
"unitCostOverridden": false,
"updatedAt": "xyz789"
}
}
}
addReceiptItem
Description
Add an item to an inventory receipt
Required scope: inventory:receive
Response
Returns an InventoryReceiptItem
Arguments
| Name | Description |
|---|---|
input - AddReceiptItemInput!
|
Example
Query
mutation addReceiptItem($input: AddReceiptItemInput!) {
addReceiptItem(input: $input) {
InventoryReceipt {
...InventoryReceiptFragment
}
Product {
...ProductFragment
}
PurchasableItem {
...PurchasableItemFragment
}
PurchaseOrderItem {
...PurchaseOrderItemFragment
}
WarehouseBin {
...WarehouseBinFragment
}
batchNumber
binLocation
createdAt
expiryDate
id
inventoryReceiptId
itemName
itemSku
itemType
lineTotal
lotNumber
notes
productId
purchasableItemId
purchaseOrderItemId
quantityAccepted
quantityDamaged
quantityExpected
quantityReceived
quantityRejected
unitCost
updatedAt
varianceReason
warehouseBinId
}
}
Variables
{"input": AddReceiptItemInput}
Response
{
"data": {
"addReceiptItem": {
"InventoryReceipt": InventoryReceipt,
"Product": Product,
"PurchasableItem": PurchasableItem,
"PurchaseOrderItem": PurchaseOrderItem,
"WarehouseBin": WarehouseBin,
"batchNumber": "abc123",
"binLocation": "xyz789",
"createdAt": "abc123",
"expiryDate": "xyz789",
"id": 4,
"inventoryReceiptId": "4",
"itemName": "abc123",
"itemSku": "xyz789",
"itemType": "xyz789",
"lineTotal": "xyz789",
"lotNumber": "abc123",
"notes": "xyz789",
"productId": "abc123",
"purchasableItemId": "xyz789",
"purchaseOrderItemId": "xyz789",
"quantityAccepted": 123,
"quantityDamaged": 987,
"quantityExpected": 987,
"quantityReceived": 123,
"quantityRejected": 987,
"unitCost": "xyz789",
"updatedAt": "xyz789",
"varianceReason": "abc123",
"warehouseBinId": "xyz789"
}
}
}
cancelPurchaseOrder
Description
Cancel a purchase order
Required scope: purchase-orders:delete
Response
Returns a PurchaseOrder
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
mutation cancelPurchaseOrder($id: ID!) {
cancelPurchaseOrder(id: $id) {
CreatedBy {
...UserFragment
}
CreatedByUser {
...UserFragment
}
InventoryReceipts {
...InventoryReceiptFragment
}
LastModifiedBy {
...UserFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrderItems {
...PurchaseOrderItemFragment
}
Supplier {
...SupplierFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
actualDeliveryDate
approvedAt
approvedBy
createdAt
createdByUserEmailSnapshot
createdByUserId
createdByUserIdSnapshot
createdByUserNameSnapshot
currency
exchangeRate
expectedDeliveryDate
id
internalNotes
internalPoNumber
isFullyReceived
itemCount
lastModifiedByUserEmailSnapshot
lastModifiedByUserId
lastModifiedByUserIdSnapshot
lastModifiedByUserNameSnapshot
notes
orderDate
organizationId
otherCosts
paymentTerms
pdfFileId
pdfGeneratedAt
pdfUrl
poNumber
receiptCount
remainingQuantity
sendCount
sentAt
sentTo
shipToWarehouseId
shippingAddress
shippingCity
shippingCost
shippingCountry
shippingMethod
shippingPostalCode
shippingState
status
subtotal
supplierId
taxAmount
totalCost
totalQuantityOrdered
totalQuantityReceived
trackingNumber
trackingUrl
updatedAt
}
}
Variables
{"id": "4"}
Response
{
"data": {
"cancelPurchaseOrder": {
"CreatedBy": User,
"CreatedByUser": User,
"InventoryReceipts": [InventoryReceipt],
"LastModifiedBy": User,
"Organization": Organization,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"WarehouseLocation": WarehouseLocation,
"actualDeliveryDate": "abc123",
"approvedAt": "xyz789",
"approvedBy": "abc123",
"createdAt": "xyz789",
"createdByUserEmailSnapshot": "abc123",
"createdByUserId": "4",
"createdByUserIdSnapshot": 4,
"createdByUserNameSnapshot": "abc123",
"currency": "xyz789",
"exchangeRate": "xyz789",
"expectedDeliveryDate": "abc123",
"id": 4,
"internalNotes": "abc123",
"internalPoNumber": 123,
"isFullyReceived": false,
"itemCount": 123,
"lastModifiedByUserEmailSnapshot": "abc123",
"lastModifiedByUserId": 4,
"lastModifiedByUserIdSnapshot": 4,
"lastModifiedByUserNameSnapshot": "abc123",
"notes": "xyz789",
"orderDate": "abc123",
"organizationId": "4",
"otherCosts": "abc123",
"paymentTerms": "abc123",
"pdfFileId": "xyz789",
"pdfGeneratedAt": "xyz789",
"pdfUrl": "xyz789",
"poNumber": "abc123",
"receiptCount": 123,
"remainingQuantity": 123,
"sendCount": 123,
"sentAt": "xyz789",
"sentTo": "xyz789",
"shipToWarehouseId": 4,
"shippingAddress": "abc123",
"shippingCity": "xyz789",
"shippingCost": "abc123",
"shippingCountry": "abc123",
"shippingMethod": "xyz789",
"shippingPostalCode": "xyz789",
"shippingState": "xyz789",
"status": "CANCELLED",
"subtotal": "abc123",
"supplierId": "4",
"taxAmount": "xyz789",
"totalCost": "abc123",
"totalQuantityOrdered": 123,
"totalQuantityReceived": 987,
"trackingNumber": "abc123",
"trackingUrl": "abc123",
"updatedAt": "abc123"
}
}
}
clearPreferredBin
Description
Clear a variant's preferred (home) bin at a warehouse location.
Required scope: inventory:update
Response
Returns a ClearPreferredBinResult
Example
Query
mutation clearPreferredBin(
$productVariantId: ID!,
$warehouseLocationId: ID!
) {
clearPreferredBin(
productVariantId: $productVariantId,
warehouseLocationId: $warehouseLocationId
) {
message
success
}
}
Variables
{
"productVariantId": "4",
"warehouseLocationId": 4
}
Response
{
"data": {
"clearPreferredBin": {
"message": "xyz789",
"success": true
}
}
}
completeInventoryReceipt
Description
Complete an inventory receipt and update inventory
Required scope: inventory:receive
Response
Returns an InventoryReceipt
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
mutation completeInventoryReceipt($id: ID!) {
completeInventoryReceipt(id: $id) {
InventoryReceiptItems {
...InventoryReceiptItemFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrder {
...PurchaseOrderFragment
}
ReceivedBy {
...UserFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
createdAt
discrepancyNotes
hasDiscrepancies
id
itemCount
notes
organizationId
purchaseOrderId
receiptNumber
receivedByEmailSnapshot
receivedByIdSnapshot
receivedByNameSnapshot
receivedByUserId
receivedDate
status
totalQuantityExpected
totalQuantityReceived
updatedAt
varianceQuantity
warehouseLocationId
}
}
Variables
{"id": 4}
Response
{
"data": {
"completeInventoryReceipt": {
"InventoryReceiptItems": [InventoryReceiptItem],
"Organization": Organization,
"PurchaseOrder": PurchaseOrder,
"ReceivedBy": User,
"WarehouseLocation": WarehouseLocation,
"createdAt": "xyz789",
"discrepancyNotes": "abc123",
"hasDiscrepancies": false,
"id": 4,
"itemCount": 123,
"notes": "xyz789",
"organizationId": "4",
"purchaseOrderId": "xyz789",
"receiptNumber": "abc123",
"receivedByEmailSnapshot": "xyz789",
"receivedByIdSnapshot": 4,
"receivedByNameSnapshot": "abc123",
"receivedByUserId": 4,
"receivedDate": "abc123",
"status": "CANCELLED",
"totalQuantityExpected": 123,
"totalQuantityReceived": 987,
"updatedAt": "xyz789",
"varianceQuantity": 123,
"warehouseLocationId": 4
}
}
}
completeMfaLogin
Description
Finish an MFA sign-in with the challenge token returned by login and a TOTP or backup code
Response
Returns an AuthPayload
Example
Query
mutation completeMfaLogin(
$challengeToken: String!,
$code: String!
) {
completeMfaLogin(
challengeToken: $challengeToken,
code: $code
) {
expiresAt
requiresEmailVerification
requiresMfaSetup
requiresPasskeySetup
token
user {
...UserFragment
}
}
}
Variables
{
"challengeToken": "abc123",
"code": "xyz789"
}
Response
{
"data": {
"completeMfaLogin": {
"expiresAt": "abc123",
"requiresEmailVerification": true,
"requiresMfaSetup": false,
"requiresPasskeySetup": false,
"token": "xyz789",
"user": User
}
}
}
completePasskeyAuthentication
Description
Complete passkey authentication
Response
Returns an AuthPayload
Example
Query
mutation completePasskeyAuthentication(
$authenticatorAttachment: String,
$clientExtensionResults: JSON,
$credentialId: String!,
$rawId: String!,
$response: JSON!
) {
completePasskeyAuthentication(
authenticatorAttachment: $authenticatorAttachment,
clientExtensionResults: $clientExtensionResults,
credentialId: $credentialId,
rawId: $rawId,
response: $response
) {
expiresAt
requiresEmailVerification
requiresMfaSetup
requiresPasskeySetup
token
user {
...UserFragment
}
}
}
Variables
{
"authenticatorAttachment": "xyz789",
"clientExtensionResults": {},
"credentialId": "xyz789",
"rawId": "xyz789",
"response": {}
}
Response
{
"data": {
"completePasskeyAuthentication": {
"expiresAt": "abc123",
"requiresEmailVerification": false,
"requiresMfaSetup": false,
"requiresPasskeySetup": true,
"token": "abc123",
"user": User
}
}
}
confirmPasswordReset
Description
Confirm password reset with token (also handles user invitation tokens)
Response
Returns a VerificationRequest
Example
Query
mutation confirmPasswordReset(
$newPassword: String!,
$token: String!
) {
confirmPasswordReset(
newPassword: $newPassword,
token: $token
) {
canRequestNewLink
code
message
success
}
}
Variables
{
"newPassword": "abc123",
"token": "xyz789"
}
Response
{
"data": {
"confirmPasswordReset": {
"canRequestNewLink": true,
"code": "abc123",
"message": "xyz789",
"success": false
}
}
}
confirmProductImageUpload
Description
Step 3 of 3. Validates and scans the uploaded file, then adds it to the product. Check success; imageId is the new image. If the file was stored but could not be added, success is false, fileId is set and addProductImage with it tries again.
Required scope: products:update
Response
Returns an UploadResult
Arguments
| Name | Description |
|---|---|
input - ConfirmProductImageUploadInput!
|
Example
Query
mutation confirmProductImageUpload($input: ConfirmProductImageUploadInput!) {
confirmProductImageUpload(input: $input) {
error
fileId
imageId
success
url
}
}
Variables
{"input": ConfirmProductImageUploadInput}
Response
{
"data": {
"confirmProductImageUpload": {
"error": "abc123",
"fileId": 4,
"imageId": "4",
"success": true,
"url": "xyz789"
}
}
}
connectProductToChannel
Description
Put a product on a sales channel and queue a push to it. Repeating it changes nothing: use syncProductToChannel to push again. The product status decides whether shoppers see it: a DRAFT stays hidden, an ACTIVE product goes live.
Required scope: channels:update
Response
Returns a ProductStoreConnection
Example
Query
mutation connectProductToChannel(
$channelId: ID!,
$productId: ID!
) {
connectProductToChannel(
channelId: $channelId,
productId: $productId
) {
Organization {
...OrganizationFragment
}
Product {
...ProductFragment
}
createdAt
externalProductId
externalSku
externalUrl
externalVariantId
id
isPublished
lastSyncAt
metadata
organizationId
product {
...ProductFragment
}
productId
storeConnectionId
storeDescription
storeInventory
storeName
storePrice
storeTitle
storeType
surfaces {
...ShopifyProductPublicationChannelFragment
}
syncError
syncStatus
unlinkReason
unlinkedAt
updatedAt
}
}
Variables
{"channelId": "4", "productId": 4}
Response
{
"data": {
"connectProductToChannel": {
"Organization": Organization,
"Product": Product,
"createdAt": "xyz789",
"externalProductId": "abc123",
"externalSku": "abc123",
"externalUrl": "abc123",
"externalVariantId": "abc123",
"id": "4",
"isPublished": false,
"lastSyncAt": "xyz789",
"metadata": "xyz789",
"organizationId": "4",
"product": Product,
"productId": "4",
"storeConnectionId": 4,
"storeDescription": "abc123",
"storeInventory": 987,
"storeName": "abc123",
"storePrice": "abc123",
"storeTitle": "abc123",
"storeType": "AMAZON",
"surfaces": [ShopifyProductPublicationChannel],
"syncError": "abc123",
"syncStatus": "ERROR",
"unlinkReason": "abc123",
"unlinkedAt": "xyz789",
"updatedAt": "xyz789"
}
}
}
createInventoryReceipt
Description
Create an inventory receipt
Required scope: inventory:receive
Response
Returns an InventoryReceipt
Arguments
| Name | Description |
|---|---|
input - CreateInventoryReceiptInput!
|
Example
Query
mutation createInventoryReceipt($input: CreateInventoryReceiptInput!) {
createInventoryReceipt(input: $input) {
InventoryReceiptItems {
...InventoryReceiptItemFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrder {
...PurchaseOrderFragment
}
ReceivedBy {
...UserFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
createdAt
discrepancyNotes
hasDiscrepancies
id
itemCount
notes
organizationId
purchaseOrderId
receiptNumber
receivedByEmailSnapshot
receivedByIdSnapshot
receivedByNameSnapshot
receivedByUserId
receivedDate
status
totalQuantityExpected
totalQuantityReceived
updatedAt
varianceQuantity
warehouseLocationId
}
}
Variables
{"input": CreateInventoryReceiptInput}
Response
{
"data": {
"createInventoryReceipt": {
"InventoryReceiptItems": [InventoryReceiptItem],
"Organization": Organization,
"PurchaseOrder": PurchaseOrder,
"ReceivedBy": User,
"WarehouseLocation": WarehouseLocation,
"createdAt": "xyz789",
"discrepancyNotes": "abc123",
"hasDiscrepancies": false,
"id": "4",
"itemCount": 987,
"notes": "xyz789",
"organizationId": 4,
"purchaseOrderId": "abc123",
"receiptNumber": "xyz789",
"receivedByEmailSnapshot": "xyz789",
"receivedByIdSnapshot": "4",
"receivedByNameSnapshot": "xyz789",
"receivedByUserId": 4,
"receivedDate": "xyz789",
"status": "CANCELLED",
"totalQuantityExpected": 123,
"totalQuantityReceived": 987,
"updatedAt": "abc123",
"varianceQuantity": 987,
"warehouseLocationId": 4
}
}
}
createOrder
Description
Create a new order
Required scope: orders:create
Response
Returns an Order
Arguments
| Name | Description |
|---|---|
input - CreateOrderInput!
|
Example
Query
mutation createOrder($input: CreateOrderInput!) {
createOrder(input: $input) {
Customer {
...CustomerFragment
}
FulfillmentPackages {
...FulfillmentPackageFragment
}
OrderComments {
...OrderCommentFragment
}
OrderLineItems {
...OrderLineItemFragment
}
Organization {
...OrganizationFragment
}
WarehouseAllocation {
...OrderWarehouseAllocationFragment
}
billingAddress
billingAddress2
billingCity
billingCompany
billingCountry
billingCountryCode
billingFirstName
billingLastName
billingPostalCode
billingState
cancelReason
cancelStaffNote
cancelledAt
capturedAmount
carrier
closedAt
confirmed
createdAt
currency
currentShippingCost
customerIp
customerNotes
deliveredAt
discountAmount
discountCodes
email
exchangeRate
fulfilledAt
fulfillmentStatus
grossProfit {
...OrderGrossProfitFragment
}
id
importChargesCollectedAmount
importChargesCollectedBy
importChargesCollection
importChargesConflict
importChargesFactSource
importChargesResolvedCollection
importChargesResolvedSource
importChargesShopifyMixed
importChargesShopifyReported
internalNotes
internalOrderNumber
lastSyncedAt
monthlyOrderCap {
...OrderCapStatusFragment
}
notifyCustomerOnRefund
orderDate
orderNumber
organizationId
paidAt
paymentGateway
paymentMethod
paymentStatus
phone
presentmentCapturedAmount
presentmentCurrency
presentmentCurrentShippingCost
presentmentDiscountAmount
presentmentRefundedAmount
presentmentShippingCost
presentmentShippingDiscountAmount
presentmentSubtotal
presentmentTaxAmount
presentmentTotalAmount
processedAt
refundedAmount
refunds
resolvedShippingService {
...ResolvedShippingServiceFragment
}
restockOnCancel
riskAssessmentDetails
riskLevel
riskRecommendation
shippingAddress
shippingAddress2
shippingCity
shippingCompany
shippingCost
shippingCountry
shippingCountryCode
shippingDiscountAmount
shippingFirstName
shippingLastName
shippingLines
shippingMethod
shippingPostalCode
shippingState
shopifyLastCancelError
shopifyLastCancelSyncAt
shopifyOrderId
shopifyOrderNumber
source
status
storeId
subtotal
syncError
syncStatus
tags
taxAmount
taxLines {
...OrderTaxLineFragment
}
taxesIncluded
timeline {
...OrderTimelineEventFragment
}
totalAmount
trackingNumber
trackingUrl
transactions
updatedAt
}
}
Variables
{"input": CreateOrderInput}
Response
{
"data": {
"createOrder": {
"Customer": Customer,
"FulfillmentPackages": [FulfillmentPackage],
"OrderComments": [OrderComment],
"OrderLineItems": [OrderLineItem],
"Organization": Organization,
"WarehouseAllocation": OrderWarehouseAllocation,
"billingAddress": "xyz789",
"billingAddress2": "abc123",
"billingCity": "abc123",
"billingCompany": "abc123",
"billingCountry": "xyz789",
"billingCountryCode": "xyz789",
"billingFirstName": "xyz789",
"billingLastName": "xyz789",
"billingPostalCode": "xyz789",
"billingState": "abc123",
"cancelReason": "abc123",
"cancelStaffNote": "abc123",
"cancelledAt": "xyz789",
"capturedAmount": "abc123",
"carrier": "abc123",
"closedAt": "abc123",
"confirmed": false,
"createdAt": "abc123",
"currency": "xyz789",
"currentShippingCost": "xyz789",
"customerIp": "xyz789",
"customerNotes": "abc123",
"deliveredAt": "xyz789",
"discountAmount": "abc123",
"discountCodes": {},
"email": "abc123",
"exchangeRate": "abc123",
"fulfilledAt": "xyz789",
"fulfillmentStatus": "CANCELLED",
"grossProfit": OrderGrossProfit,
"id": "4",
"importChargesCollectedAmount": "xyz789",
"importChargesCollectedBy": "MERCHANT",
"importChargesCollection": "COLLECTED",
"importChargesConflict": false,
"importChargesFactSource": "API",
"importChargesResolvedCollection": "COLLECTED",
"importChargesResolvedSource": "API",
"importChargesShopifyMixed": false,
"importChargesShopifyReported": "COLLECTED",
"internalNotes": "abc123",
"internalOrderNumber": 987,
"lastSyncedAt": "xyz789",
"monthlyOrderCap": OrderCapStatus,
"notifyCustomerOnRefund": false,
"orderDate": "abc123",
"orderNumber": "abc123",
"organizationId": "4",
"paidAt": "abc123",
"paymentGateway": "abc123",
"paymentMethod": "abc123",
"paymentStatus": "AUTHORIZED",
"phone": "xyz789",
"presentmentCapturedAmount": "abc123",
"presentmentCurrency": "abc123",
"presentmentCurrentShippingCost": "xyz789",
"presentmentDiscountAmount": "abc123",
"presentmentRefundedAmount": "abc123",
"presentmentShippingCost": "xyz789",
"presentmentShippingDiscountAmount": "xyz789",
"presentmentSubtotal": "xyz789",
"presentmentTaxAmount": "abc123",
"presentmentTotalAmount": "xyz789",
"processedAt": "abc123",
"refundedAmount": "abc123",
"refunds": {},
"resolvedShippingService": ResolvedShippingService,
"restockOnCancel": true,
"riskAssessmentDetails": {},
"riskLevel": "xyz789",
"riskRecommendation": "xyz789",
"shippingAddress": "abc123",
"shippingAddress2": "abc123",
"shippingCity": "abc123",
"shippingCompany": "abc123",
"shippingCost": "abc123",
"shippingCountry": "xyz789",
"shippingCountryCode": "xyz789",
"shippingDiscountAmount": "abc123",
"shippingFirstName": "abc123",
"shippingLastName": "abc123",
"shippingLines": {},
"shippingMethod": "abc123",
"shippingPostalCode": "xyz789",
"shippingState": "abc123",
"shopifyLastCancelError": "abc123",
"shopifyLastCancelSyncAt": "xyz789",
"shopifyOrderId": "abc123",
"shopifyOrderNumber": "xyz789",
"source": "abc123",
"status": "CANCELLED",
"storeId": "4",
"subtotal": "xyz789",
"syncError": "abc123",
"syncStatus": "ERROR",
"tags": ["abc123"],
"taxAmount": "abc123",
"taxLines": [OrderTaxLine],
"taxesIncluded": true,
"timeline": [OrderTimelineEvent],
"totalAmount": "abc123",
"trackingNumber": "abc123",
"trackingUrl": "abc123",
"transactions": {},
"updatedAt": "xyz789"
}
}
}
createOrderRefund
Description
Create a Core-originated refund on an Order. Appends a new entry to Order.refunds JSON, increments refundedAmount, optionally persists notifyCustomerOnRefund, and — for a Shopify-linked order — emits a transactional-outbox ORDER/PUSH trigger so the asyncOps push pipeline (computeIntents → pushIntentRefund) propagates the refund to Shopify. SKU-273 item 9; outbox trigger added in SKU-1323.
Required scope: orders:update
Response
Returns an Order
Arguments
| Name | Description |
|---|---|
input - CreateOrderRefundInput!
|
Example
Query
mutation createOrderRefund($input: CreateOrderRefundInput!) {
createOrderRefund(input: $input) {
Customer {
...CustomerFragment
}
FulfillmentPackages {
...FulfillmentPackageFragment
}
OrderComments {
...OrderCommentFragment
}
OrderLineItems {
...OrderLineItemFragment
}
Organization {
...OrganizationFragment
}
WarehouseAllocation {
...OrderWarehouseAllocationFragment
}
billingAddress
billingAddress2
billingCity
billingCompany
billingCountry
billingCountryCode
billingFirstName
billingLastName
billingPostalCode
billingState
cancelReason
cancelStaffNote
cancelledAt
capturedAmount
carrier
closedAt
confirmed
createdAt
currency
currentShippingCost
customerIp
customerNotes
deliveredAt
discountAmount
discountCodes
email
exchangeRate
fulfilledAt
fulfillmentStatus
grossProfit {
...OrderGrossProfitFragment
}
id
importChargesCollectedAmount
importChargesCollectedBy
importChargesCollection
importChargesConflict
importChargesFactSource
importChargesResolvedCollection
importChargesResolvedSource
importChargesShopifyMixed
importChargesShopifyReported
internalNotes
internalOrderNumber
lastSyncedAt
monthlyOrderCap {
...OrderCapStatusFragment
}
notifyCustomerOnRefund
orderDate
orderNumber
organizationId
paidAt
paymentGateway
paymentMethod
paymentStatus
phone
presentmentCapturedAmount
presentmentCurrency
presentmentCurrentShippingCost
presentmentDiscountAmount
presentmentRefundedAmount
presentmentShippingCost
presentmentShippingDiscountAmount
presentmentSubtotal
presentmentTaxAmount
presentmentTotalAmount
processedAt
refundedAmount
refunds
resolvedShippingService {
...ResolvedShippingServiceFragment
}
restockOnCancel
riskAssessmentDetails
riskLevel
riskRecommendation
shippingAddress
shippingAddress2
shippingCity
shippingCompany
shippingCost
shippingCountry
shippingCountryCode
shippingDiscountAmount
shippingFirstName
shippingLastName
shippingLines
shippingMethod
shippingPostalCode
shippingState
shopifyLastCancelError
shopifyLastCancelSyncAt
shopifyOrderId
shopifyOrderNumber
source
status
storeId
subtotal
syncError
syncStatus
tags
taxAmount
taxLines {
...OrderTaxLineFragment
}
taxesIncluded
timeline {
...OrderTimelineEventFragment
}
totalAmount
trackingNumber
trackingUrl
transactions
updatedAt
}
}
Variables
{"input": CreateOrderRefundInput}
Response
{
"data": {
"createOrderRefund": {
"Customer": Customer,
"FulfillmentPackages": [FulfillmentPackage],
"OrderComments": [OrderComment],
"OrderLineItems": [OrderLineItem],
"Organization": Organization,
"WarehouseAllocation": OrderWarehouseAllocation,
"billingAddress": "abc123",
"billingAddress2": "abc123",
"billingCity": "xyz789",
"billingCompany": "abc123",
"billingCountry": "abc123",
"billingCountryCode": "xyz789",
"billingFirstName": "abc123",
"billingLastName": "abc123",
"billingPostalCode": "abc123",
"billingState": "abc123",
"cancelReason": "xyz789",
"cancelStaffNote": "xyz789",
"cancelledAt": "abc123",
"capturedAmount": "abc123",
"carrier": "abc123",
"closedAt": "xyz789",
"confirmed": false,
"createdAt": "abc123",
"currency": "abc123",
"currentShippingCost": "abc123",
"customerIp": "abc123",
"customerNotes": "abc123",
"deliveredAt": "xyz789",
"discountAmount": "abc123",
"discountCodes": {},
"email": "abc123",
"exchangeRate": "abc123",
"fulfilledAt": "abc123",
"fulfillmentStatus": "CANCELLED",
"grossProfit": OrderGrossProfit,
"id": 4,
"importChargesCollectedAmount": "abc123",
"importChargesCollectedBy": "MERCHANT",
"importChargesCollection": "COLLECTED",
"importChargesConflict": false,
"importChargesFactSource": "API",
"importChargesResolvedCollection": "COLLECTED",
"importChargesResolvedSource": "API",
"importChargesShopifyMixed": true,
"importChargesShopifyReported": "COLLECTED",
"internalNotes": "abc123",
"internalOrderNumber": 987,
"lastSyncedAt": "xyz789",
"monthlyOrderCap": OrderCapStatus,
"notifyCustomerOnRefund": true,
"orderDate": "abc123",
"orderNumber": "abc123",
"organizationId": "4",
"paidAt": "xyz789",
"paymentGateway": "xyz789",
"paymentMethod": "abc123",
"paymentStatus": "AUTHORIZED",
"phone": "abc123",
"presentmentCapturedAmount": "xyz789",
"presentmentCurrency": "abc123",
"presentmentCurrentShippingCost": "abc123",
"presentmentDiscountAmount": "xyz789",
"presentmentRefundedAmount": "xyz789",
"presentmentShippingCost": "xyz789",
"presentmentShippingDiscountAmount": "abc123",
"presentmentSubtotal": "xyz789",
"presentmentTaxAmount": "abc123",
"presentmentTotalAmount": "abc123",
"processedAt": "xyz789",
"refundedAmount": "xyz789",
"refunds": {},
"resolvedShippingService": ResolvedShippingService,
"restockOnCancel": true,
"riskAssessmentDetails": {},
"riskLevel": "xyz789",
"riskRecommendation": "xyz789",
"shippingAddress": "abc123",
"shippingAddress2": "abc123",
"shippingCity": "abc123",
"shippingCompany": "xyz789",
"shippingCost": "xyz789",
"shippingCountry": "xyz789",
"shippingCountryCode": "abc123",
"shippingDiscountAmount": "abc123",
"shippingFirstName": "xyz789",
"shippingLastName": "xyz789",
"shippingLines": {},
"shippingMethod": "abc123",
"shippingPostalCode": "abc123",
"shippingState": "abc123",
"shopifyLastCancelError": "abc123",
"shopifyLastCancelSyncAt": "xyz789",
"shopifyOrderId": "xyz789",
"shopifyOrderNumber": "xyz789",
"source": "xyz789",
"status": "CANCELLED",
"storeId": 4,
"subtotal": "xyz789",
"syncError": "abc123",
"syncStatus": "ERROR",
"tags": ["abc123"],
"taxAmount": "xyz789",
"taxLines": [OrderTaxLine],
"taxesIncluded": true,
"timeline": [OrderTimelineEvent],
"totalAmount": "xyz789",
"trackingNumber": "xyz789",
"trackingUrl": "xyz789",
"transactions": {},
"updatedAt": "abc123"
}
}
}
createProduct
Description
Create a new product
Required scope: products:create
Response
Returns a Product
Arguments
| Name | Description |
|---|---|
input - CreateProductInput!
|
Example
Query
mutation createProduct($input: CreateProductInput!) {
createProduct(input: $input) {
Organization {
...OrganizationFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
ProductStoreConnection {
...ProductStoreConnectionFragment
}
SourcingListings {
...SourcingListingFragment
}
allowBackorder
assemblyMode
availableQuantity
barcode
basePrice
brand
bundleComponentCount
bundleDiscountPercent
bundleItems {
...ProductBundleItemFragment
}
bundlePricing
bundledIn {
...ProductBundleItemFragment
}
category
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
defaultVariant {
...ProductVariantFragment
}
description
dimensionUnit
displayTitle
effectiveAssemblyMode
handle
hasOnlyDefaultVariant
height
hsCode
id
images {
...ProductImageFragment
}
isActive
isActiveSKU
isGiftCard
kitInventoryMode
length
lowStockThreshold
metaDescription
metaTitle
option1Name
option2Name
option3Name
optionDefinitions {
...ProductOptionDefinitionFragment
}
organizationId
primaryImage {
...ProductImageFragment
}
primaryImageId
productLocationInventories {
...ProductLocationInventoryFragment
}
productType
productVariants {
...ProductVariantFragment
}
provinceOfOrigin
publishedAt
purchasableItemId
quantity
requiresShipping
reservedQuantity
sku
skuType
slug
status
stockStatus
storeConnections {
...ProductStoreConnectionFragment
}
supplier {
...SupplierFragment
}
supplierId
tags
taxCode
taxable
title
totalQuantity
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
type
updatedAt
warehouseLocation
weight
weightUnit
width
}
}
Variables
{"input": CreateProductInput}
Response
{
"data": {
"createProduct": {
"Organization": Organization,
"ProductLocationInventory": [
ProductLocationInventory
],
"ProductStoreConnection": [ProductStoreConnection],
"SourcingListings": [SourcingListing],
"allowBackorder": true,
"assemblyMode": "BOTH",
"availableQuantity": 987,
"barcode": "abc123",
"basePrice": "abc123",
"brand": "xyz789",
"bundleComponentCount": 987,
"bundleDiscountPercent": "abc123",
"bundleItems": [ProductBundleItem],
"bundlePricing": "CALCULATED",
"bundledIn": [ProductBundleItem],
"category": "abc123",
"compareAtPrice": "abc123",
"costPrice": "xyz789",
"countryOfOrigin": "xyz789",
"createdAt": "abc123",
"customsDescription": "abc123",
"defaultVariant": ProductVariant,
"description": "abc123",
"dimensionUnit": "CM",
"displayTitle": "abc123",
"effectiveAssemblyMode": "BOTH",
"handle": "xyz789",
"hasOnlyDefaultVariant": true,
"height": "xyz789",
"hsCode": "xyz789",
"id": "4",
"images": [ProductImage],
"isActive": true,
"isActiveSKU": false,
"isGiftCard": false,
"kitInventoryMode": "ACTIVE",
"length": "abc123",
"lowStockThreshold": 123,
"metaDescription": "xyz789",
"metaTitle": "abc123",
"option1Name": "abc123",
"option2Name": "abc123",
"option3Name": "abc123",
"optionDefinitions": [ProductOptionDefinition],
"organizationId": "4",
"primaryImage": ProductImage,
"primaryImageId": "abc123",
"productLocationInventories": [
ProductLocationInventory
],
"productType": "abc123",
"productVariants": [ProductVariant],
"provinceOfOrigin": "abc123",
"publishedAt": "xyz789",
"purchasableItemId": "abc123",
"quantity": 123,
"requiresShipping": false,
"reservedQuantity": 123,
"sku": "xyz789",
"skuType": "BUNDLE",
"slug": "xyz789",
"status": "ACTIVE",
"stockStatus": "ALWAYS_IN_STOCK",
"storeConnections": [ProductStoreConnection],
"supplier": Supplier,
"supplierId": "abc123",
"tags": ["abc123"],
"taxCode": "abc123",
"taxable": true,
"title": "xyz789",
"totalQuantity": 123,
"trackInventory": true,
"trackInventoryNeedsRestoration": false,
"trackInventoryUserSet": false,
"type": "BUNDLE",
"updatedAt": "abc123",
"warehouseLocation": "abc123",
"weight": "xyz789",
"weightUnit": "GRAMS",
"width": "xyz789"
}
}
}
createProductVariant
Description
Create a new product variant
Required scope: products:create
Response
Returns a ProductVariant
Arguments
| Name | Description |
|---|---|
input - CreateProductVariantInput!
|
Example
Query
mutation createProductVariant($input: CreateProductVariantInput!) {
createProductVariant(input: $input) {
Product {
...ProductFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
PurchasableItem {
...PurchasableItemFragment
}
allowBackorder
availableQuantity
barcode
basePrice
calculatedCost
calculatedCostIsPartial
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
dimensionUnit
height
hsCode
id
length
lowStockThreshold
onHandQuantity
option1Value
option2Value
option3Value
organizationId
position
primaryImage {
...ProductImageFragment
}
primaryImageId
productId
provinceOfOrigin
purchasableItemId
qrCode
quantity
requiresShipping
reservedQuantity
sku
stockStatus
taxCode
taxable
title
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
updatedAt
weight
weightUnit
width
}
}
Variables
{"input": CreateProductVariantInput}
Response
{
"data": {
"createProductVariant": {
"Product": Product,
"ProductLocationInventory": [
ProductLocationInventory
],
"PurchasableItem": PurchasableItem,
"allowBackorder": false,
"availableQuantity": 987,
"barcode": "xyz789",
"basePrice": "abc123",
"calculatedCost": "xyz789",
"calculatedCostIsPartial": true,
"compareAtPrice": "abc123",
"costPrice": "xyz789",
"countryOfOrigin": "xyz789",
"createdAt": "xyz789",
"customsDescription": "abc123",
"dimensionUnit": "CM",
"height": "abc123",
"hsCode": "abc123",
"id": 4,
"length": "xyz789",
"lowStockThreshold": 123,
"onHandQuantity": 987,
"option1Value": "abc123",
"option2Value": "xyz789",
"option3Value": "abc123",
"organizationId": 4,
"position": 987,
"primaryImage": ProductImage,
"primaryImageId": "abc123",
"productId": "4",
"provinceOfOrigin": "abc123",
"purchasableItemId": "4",
"qrCode": "xyz789",
"quantity": 987,
"requiresShipping": false,
"reservedQuantity": 123,
"sku": "xyz789",
"stockStatus": "ALWAYS_IN_STOCK",
"taxCode": "abc123",
"taxable": true,
"title": "abc123",
"trackInventory": false,
"trackInventoryNeedsRestoration": true,
"trackInventoryUserSet": true,
"updatedAt": "abc123",
"weight": "xyz789",
"weightUnit": "GRAMS",
"width": "xyz789"
}
}
}
createPurchaseOrder
Description
Create a new purchase order
Required scope: purchase-orders:create
Response
Returns a PurchaseOrder
Arguments
| Name | Description |
|---|---|
input - CreatePurchaseOrderInput!
|
Example
Query
mutation createPurchaseOrder($input: CreatePurchaseOrderInput!) {
createPurchaseOrder(input: $input) {
CreatedBy {
...UserFragment
}
CreatedByUser {
...UserFragment
}
InventoryReceipts {
...InventoryReceiptFragment
}
LastModifiedBy {
...UserFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrderItems {
...PurchaseOrderItemFragment
}
Supplier {
...SupplierFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
actualDeliveryDate
approvedAt
approvedBy
createdAt
createdByUserEmailSnapshot
createdByUserId
createdByUserIdSnapshot
createdByUserNameSnapshot
currency
exchangeRate
expectedDeliveryDate
id
internalNotes
internalPoNumber
isFullyReceived
itemCount
lastModifiedByUserEmailSnapshot
lastModifiedByUserId
lastModifiedByUserIdSnapshot
lastModifiedByUserNameSnapshot
notes
orderDate
organizationId
otherCosts
paymentTerms
pdfFileId
pdfGeneratedAt
pdfUrl
poNumber
receiptCount
remainingQuantity
sendCount
sentAt
sentTo
shipToWarehouseId
shippingAddress
shippingCity
shippingCost
shippingCountry
shippingMethod
shippingPostalCode
shippingState
status
subtotal
supplierId
taxAmount
totalCost
totalQuantityOrdered
totalQuantityReceived
trackingNumber
trackingUrl
updatedAt
}
}
Variables
{"input": CreatePurchaseOrderInput}
Response
{
"data": {
"createPurchaseOrder": {
"CreatedBy": User,
"CreatedByUser": User,
"InventoryReceipts": [InventoryReceipt],
"LastModifiedBy": User,
"Organization": Organization,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"WarehouseLocation": WarehouseLocation,
"actualDeliveryDate": "xyz789",
"approvedAt": "xyz789",
"approvedBy": "xyz789",
"createdAt": "xyz789",
"createdByUserEmailSnapshot": "xyz789",
"createdByUserId": "4",
"createdByUserIdSnapshot": "4",
"createdByUserNameSnapshot": "abc123",
"currency": "xyz789",
"exchangeRate": "xyz789",
"expectedDeliveryDate": "abc123",
"id": "4",
"internalNotes": "abc123",
"internalPoNumber": 987,
"isFullyReceived": false,
"itemCount": 123,
"lastModifiedByUserEmailSnapshot": "xyz789",
"lastModifiedByUserId": 4,
"lastModifiedByUserIdSnapshot": 4,
"lastModifiedByUserNameSnapshot": "abc123",
"notes": "abc123",
"orderDate": "abc123",
"organizationId": "4",
"otherCosts": "xyz789",
"paymentTerms": "xyz789",
"pdfFileId": "xyz789",
"pdfGeneratedAt": "abc123",
"pdfUrl": "abc123",
"poNumber": "abc123",
"receiptCount": 123,
"remainingQuantity": 987,
"sendCount": 123,
"sentAt": "xyz789",
"sentTo": "xyz789",
"shipToWarehouseId": 4,
"shippingAddress": "xyz789",
"shippingCity": "xyz789",
"shippingCost": "abc123",
"shippingCountry": "abc123",
"shippingMethod": "xyz789",
"shippingPostalCode": "abc123",
"shippingState": "xyz789",
"status": "CANCELLED",
"subtotal": "abc123",
"supplierId": 4,
"taxAmount": "abc123",
"totalCost": "abc123",
"totalQuantityOrdered": 123,
"totalQuantityReceived": 123,
"trackingNumber": "abc123",
"trackingUrl": "xyz789",
"updatedAt": "abc123"
}
}
}
createSourcingListing
Description
Record a place a product or variant can be bought from.
Required scope: suppliers:update
Response
Returns a SourcingListing
Arguments
| Name | Description |
|---|---|
input - CreateSourcingListingInput!
|
Example
Query
mutation createSourcingListing($input: CreateSourcingListingInput!) {
createSourcingListing(input: $input) {
PriceBreaks {
...SourcingListingPriceBreakFragment
}
Product {
...ProductFragment
}
ProductVariant {
...ProductVariantFragment
}
PurchaseOrderItems {
...PurchaseOrderItemFragment
}
Supplier {
...SupplierFragment
}
createdAt
currency
freeShippingThreshold
id
isActive
isPrimary
lastOrderedAt
lastVerifiedAt
leadTimeDays
listingUrl
minimumOrderQuantity
notes
organizationId
packSize
productId
productVariantId
quoteAt {
...SourcingQuoteFragment
}
shippingFee
supplierId
supplierProductName
supplierSku
updatedAt
}
}
Variables
{"input": CreateSourcingListingInput}
Response
{
"data": {
"createSourcingListing": {
"PriceBreaks": [SourcingListingPriceBreak],
"Product": Product,
"ProductVariant": ProductVariant,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"createdAt": "xyz789",
"currency": "xyz789",
"freeShippingThreshold": "xyz789",
"id": "4",
"isActive": true,
"isPrimary": false,
"lastOrderedAt": "abc123",
"lastVerifiedAt": "xyz789",
"leadTimeDays": 123,
"listingUrl": "abc123",
"minimumOrderQuantity": 123,
"notes": "xyz789",
"organizationId": "4",
"packSize": 987,
"productId": "4",
"productVariantId": 4,
"quoteAt": SourcingQuote,
"shippingFee": "xyz789",
"supplierId": "4",
"supplierProductName": "abc123",
"supplierSku": "abc123",
"updatedAt": "xyz789"
}
}
}
createSupplementalFulfillment
Description
Create a supplemental fulfillment package on an already-fulfilled order
Required scope: orders:update
Response
Returns a FulfillmentPackage
Arguments
| Name | Description |
|---|---|
input - CreateSupplementalFulfillmentInput!
|
Example
Query
mutation createSupplementalFulfillment($input: CreateSupplementalFulfillmentInput!) {
createSupplementalFulfillment(input: $input) {
Images {
...FulfillmentImageFragment
}
Order {
...OrderFragment
}
PackageItems {
...FulfillmentPackageItemFragment
}
actualDeliveryDate
calculatedWeight
canRetryFulfillment
cancelReason
cancelledAt
cancelledById
carrier
carrierConnectionId
carrierStatusCode
carrierStatusDescription
combinedAt
combinedById
combinedWithOrderIds
confirmationCost
createdAt
customerNotified
customerNotifiedAt
customsInvoiceFile {
...FileFragment
}
customsSubmittedElectronically
declaredWeight
deliveredAt
estimatedDeliveryDate
externalLabelId
externalShipmentId
fulfillmentCompletedAt
fulfillmentError
fulfillmentErrorStep
fulfillmentStartedAt
fulfillmentStatusEnum
handoffMethod
handoffNote
hasLabel
height
id
insuranceCost
isDelivered
isManualFulfillment
isSupplemental
labelFile {
...FileFragment
}
labelFileId
labelFormat
labelPrintedAt
labelPurchasedAt
labelPurchasedById
labelUrl
labelVoidedAt
length
manualFulfillmentReason
notifyCustomer
orderId
organizationId
packageNumber
printFirstPageOnly
scaleWeight
serviceCode
serviceName
serviceOptions
shipmentGroupId
shipmentGroupRole
shippedAt
shippingCost
shopifyFulfillmentId
shopifyLastSyncAt
shopifyLastSyncError
shopifySyncAttempts
stationeryTareGrams
stationeryType
stationeryTypeId
status
stepLabelPrintStatus
stepLabelPurchaseStatus
stepLocalFulfillmentStatus
stepStoreSyncStatus
supplementalReason
trackingException
trackingLastUpdatedAt
trackingNumber
trackingStatus
trackingStatusDescription
trackingUrl
uncombinedAt
uncombinedById
uncombinedReason
updatedAt
width
}
}
Variables
{"input": CreateSupplementalFulfillmentInput}
Response
{
"data": {
"createSupplementalFulfillment": {
"Images": [FulfillmentImage],
"Order": Order,
"PackageItems": [FulfillmentPackageItem],
"actualDeliveryDate": "xyz789",
"calculatedWeight": "abc123",
"canRetryFulfillment": false,
"cancelReason": "abc123",
"cancelledAt": "xyz789",
"cancelledById": "4",
"carrier": "abc123",
"carrierConnectionId": 4,
"carrierStatusCode": "abc123",
"carrierStatusDescription": "xyz789",
"combinedAt": "abc123",
"combinedById": 4,
"combinedWithOrderIds": "abc123",
"confirmationCost": "xyz789",
"createdAt": "xyz789",
"customerNotified": false,
"customerNotifiedAt": "abc123",
"customsInvoiceFile": File,
"customsSubmittedElectronically": false,
"declaredWeight": "abc123",
"deliveredAt": "abc123",
"estimatedDeliveryDate": "abc123",
"externalLabelId": "abc123",
"externalShipmentId": "abc123",
"fulfillmentCompletedAt": "xyz789",
"fulfillmentError": "xyz789",
"fulfillmentErrorStep": "LABEL_PRINT",
"fulfillmentStartedAt": "abc123",
"fulfillmentStatusEnum": "COMPLETED",
"handoffMethod": "CARRIER_TRACKED",
"handoffNote": "abc123",
"hasLabel": false,
"height": "abc123",
"id": 4,
"insuranceCost": "abc123",
"isDelivered": false,
"isManualFulfillment": true,
"isSupplemental": true,
"labelFile": File,
"labelFileId": "4",
"labelFormat": "abc123",
"labelPrintedAt": "abc123",
"labelPurchasedAt": "xyz789",
"labelPurchasedById": "4",
"labelUrl": "xyz789",
"labelVoidedAt": "xyz789",
"length": "abc123",
"manualFulfillmentReason": "xyz789",
"notifyCustomer": false,
"orderId": 4,
"organizationId": "4",
"packageNumber": 987,
"printFirstPageOnly": false,
"scaleWeight": "abc123",
"serviceCode": "abc123",
"serviceName": "xyz789",
"serviceOptions": "abc123",
"shipmentGroupId": 4,
"shipmentGroupRole": "xyz789",
"shippedAt": "xyz789",
"shippingCost": "xyz789",
"shopifyFulfillmentId": "xyz789",
"shopifyLastSyncAt": "xyz789",
"shopifyLastSyncError": "xyz789",
"shopifySyncAttempts": 987,
"stationeryTareGrams": "abc123",
"stationeryType": "xyz789",
"stationeryTypeId": 4,
"status": "CANCELLED",
"stepLabelPrintStatus": "COMPLETED",
"stepLabelPurchaseStatus": "COMPLETED",
"stepLocalFulfillmentStatus": "COMPLETED",
"stepStoreSyncStatus": "COMPLETED",
"supplementalReason": "abc123",
"trackingException": "abc123",
"trackingLastUpdatedAt": "xyz789",
"trackingNumber": "xyz789",
"trackingStatus": "xyz789",
"trackingStatusDescription": "abc123",
"trackingUrl": "xyz789",
"uncombinedAt": "xyz789",
"uncombinedById": 4,
"uncombinedReason": "xyz789",
"updatedAt": "abc123",
"width": "abc123"
}
}
}
createSupplier
Description
Create a new supplier
Required scope: suppliers:create
Response
Returns a Supplier
Arguments
| Name | Description |
|---|---|
input - CreateSupplierInput!
|
|
organizationId - ID!
|
Example
Query
mutation createSupplier(
$input: CreateSupplierInput!,
$organizationId: ID!
) {
createSupplier(
input: $input,
organizationId: $organizationId
) {
Organization {
...OrganizationFragment
}
PurchaseOrders {
...PurchaseOrderFragment
}
SourcingListings {
...SourcingListingFragment
}
address
city
code
contactEmail
contactName
contactPhone
country
countryCode
createdAt
currency
description
id
isActive
leadTimeDays
metadata
minimumOrderValue
name
notes
organizationId
paymentTerms
postalCode
productCount
purchaseOrderCount
purchasePortalUrl
rating
shippingMethod
state
updatedAt
website
}
}
Variables
{
"input": CreateSupplierInput,
"organizationId": "4"
}
Response
{
"data": {
"createSupplier": {
"Organization": Organization,
"PurchaseOrders": [PurchaseOrder],
"SourcingListings": [SourcingListing],
"address": "abc123",
"city": "abc123",
"code": "xyz789",
"contactEmail": "abc123",
"contactName": "abc123",
"contactPhone": "xyz789",
"country": "xyz789",
"countryCode": "xyz789",
"createdAt": "abc123",
"currency": "abc123",
"description": "xyz789",
"id": 4,
"isActive": false,
"leadTimeDays": 987,
"metadata": "abc123",
"minimumOrderValue": "xyz789",
"name": "abc123",
"notes": "xyz789",
"organizationId": "4",
"paymentTerms": "xyz789",
"postalCode": "xyz789",
"productCount": 987,
"purchaseOrderCount": 987,
"purchasePortalUrl": "abc123",
"rating": 123,
"shippingMethod": "xyz789",
"state": "xyz789",
"updatedAt": "abc123",
"website": "xyz789"
}
}
}
deleteInventoryReceipt
Description
Delete an inventory receipt (only if status is DRAFT). Returns the deleted receipt.
Required scope: inventory:receive
Response
Returns an InventoryReceipt
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
mutation deleteInventoryReceipt($id: ID!) {
deleteInventoryReceipt(id: $id) {
InventoryReceiptItems {
...InventoryReceiptItemFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrder {
...PurchaseOrderFragment
}
ReceivedBy {
...UserFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
createdAt
discrepancyNotes
hasDiscrepancies
id
itemCount
notes
organizationId
purchaseOrderId
receiptNumber
receivedByEmailSnapshot
receivedByIdSnapshot
receivedByNameSnapshot
receivedByUserId
receivedDate
status
totalQuantityExpected
totalQuantityReceived
updatedAt
varianceQuantity
warehouseLocationId
}
}
Variables
{"id": 4}
Response
{
"data": {
"deleteInventoryReceipt": {
"InventoryReceiptItems": [InventoryReceiptItem],
"Organization": Organization,
"PurchaseOrder": PurchaseOrder,
"ReceivedBy": User,
"WarehouseLocation": WarehouseLocation,
"createdAt": "xyz789",
"discrepancyNotes": "abc123",
"hasDiscrepancies": true,
"id": 4,
"itemCount": 987,
"notes": "xyz789",
"organizationId": 4,
"purchaseOrderId": "xyz789",
"receiptNumber": "xyz789",
"receivedByEmailSnapshot": "abc123",
"receivedByIdSnapshot": 4,
"receivedByNameSnapshot": "xyz789",
"receivedByUserId": 4,
"receivedDate": "xyz789",
"status": "CANCELLED",
"totalQuantityExpected": 123,
"totalQuantityReceived": 123,
"updatedAt": "xyz789",
"varianceQuantity": 987,
"warehouseLocationId": "4"
}
}
}
deleteProduct
Description
Delete a product. Refused while any variant has stock on hand: set it to zero with updateInventory first. When stock on hand is the only reason, the error code is HAS_STOCK, with each variant and its quantity in extensions.variants. Also refused while a variant is on an open order, holds a reservation or is part of a kit; those refusals have no specific code yet. Deleting a product on a sales channel needs channels:update as well; without it the code is CHANNEL_UPDATE_REQUIRED.
Required scope: products:delete
Example
Query
mutation deleteProduct(
$id: ID!,
$organizationId: ID!
) {
deleteProduct(
id: $id,
organizationId: $organizationId
) {
Organization {
...OrganizationFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
ProductStoreConnection {
...ProductStoreConnectionFragment
}
SourcingListings {
...SourcingListingFragment
}
allowBackorder
assemblyMode
availableQuantity
barcode
basePrice
brand
bundleComponentCount
bundleDiscountPercent
bundleItems {
...ProductBundleItemFragment
}
bundlePricing
bundledIn {
...ProductBundleItemFragment
}
category
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
defaultVariant {
...ProductVariantFragment
}
description
dimensionUnit
displayTitle
effectiveAssemblyMode
handle
hasOnlyDefaultVariant
height
hsCode
id
images {
...ProductImageFragment
}
isActive
isActiveSKU
isGiftCard
kitInventoryMode
length
lowStockThreshold
metaDescription
metaTitle
option1Name
option2Name
option3Name
optionDefinitions {
...ProductOptionDefinitionFragment
}
organizationId
primaryImage {
...ProductImageFragment
}
primaryImageId
productLocationInventories {
...ProductLocationInventoryFragment
}
productType
productVariants {
...ProductVariantFragment
}
provinceOfOrigin
publishedAt
purchasableItemId
quantity
requiresShipping
reservedQuantity
sku
skuType
slug
status
stockStatus
storeConnections {
...ProductStoreConnectionFragment
}
supplier {
...SupplierFragment
}
supplierId
tags
taxCode
taxable
title
totalQuantity
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
type
updatedAt
warehouseLocation
weight
weightUnit
width
}
}
Variables
{"id": 4, "organizationId": 4}
Response
{
"data": {
"deleteProduct": {
"Organization": Organization,
"ProductLocationInventory": [
ProductLocationInventory
],
"ProductStoreConnection": [ProductStoreConnection],
"SourcingListings": [SourcingListing],
"allowBackorder": false,
"assemblyMode": "BOTH",
"availableQuantity": 123,
"barcode": "xyz789",
"basePrice": "abc123",
"brand": "xyz789",
"bundleComponentCount": 987,
"bundleDiscountPercent": "xyz789",
"bundleItems": [ProductBundleItem],
"bundlePricing": "CALCULATED",
"bundledIn": [ProductBundleItem],
"category": "xyz789",
"compareAtPrice": "xyz789",
"costPrice": "xyz789",
"countryOfOrigin": "abc123",
"createdAt": "xyz789",
"customsDescription": "xyz789",
"defaultVariant": ProductVariant,
"description": "abc123",
"dimensionUnit": "CM",
"displayTitle": "xyz789",
"effectiveAssemblyMode": "BOTH",
"handle": "xyz789",
"hasOnlyDefaultVariant": false,
"height": "xyz789",
"hsCode": "xyz789",
"id": "4",
"images": [ProductImage],
"isActive": true,
"isActiveSKU": false,
"isGiftCard": true,
"kitInventoryMode": "ACTIVE",
"length": "xyz789",
"lowStockThreshold": 987,
"metaDescription": "abc123",
"metaTitle": "abc123",
"option1Name": "abc123",
"option2Name": "xyz789",
"option3Name": "xyz789",
"optionDefinitions": [ProductOptionDefinition],
"organizationId": "4",
"primaryImage": ProductImage,
"primaryImageId": "abc123",
"productLocationInventories": [
ProductLocationInventory
],
"productType": "abc123",
"productVariants": [ProductVariant],
"provinceOfOrigin": "xyz789",
"publishedAt": "xyz789",
"purchasableItemId": "abc123",
"quantity": 123,
"requiresShipping": false,
"reservedQuantity": 987,
"sku": "xyz789",
"skuType": "BUNDLE",
"slug": "abc123",
"status": "ACTIVE",
"stockStatus": "ALWAYS_IN_STOCK",
"storeConnections": [ProductStoreConnection],
"supplier": Supplier,
"supplierId": "xyz789",
"tags": ["xyz789"],
"taxCode": "xyz789",
"taxable": true,
"title": "xyz789",
"totalQuantity": 987,
"trackInventory": false,
"trackInventoryNeedsRestoration": false,
"trackInventoryUserSet": false,
"type": "BUNDLE",
"updatedAt": "abc123",
"warehouseLocation": "abc123",
"weight": "xyz789",
"weightUnit": "GRAMS",
"width": "xyz789"
}
}
}
deleteProductImage
Description
Delete product image
Required scope: products:update
Example
Query
mutation deleteProductImage(
$imageId: ID!,
$organizationId: ID
) {
deleteProductImage(
imageId: $imageId,
organizationId: $organizationId
)
}
Variables
{
"imageId": "4",
"organizationId": "4"
}
Response
{"data": {"deleteProductImage": false}}
deleteProductVariant
Description
Delete a product variant
Required scope: products:delete
deletePurchaseOrder
Description
Delete a purchase order (only if status is DRAFT or CANCELLED). Returns the deleted purchase order.
Required scope: purchase-orders:delete
Response
Returns a PurchaseOrder
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
mutation deletePurchaseOrder($id: ID!) {
deletePurchaseOrder(id: $id) {
CreatedBy {
...UserFragment
}
CreatedByUser {
...UserFragment
}
InventoryReceipts {
...InventoryReceiptFragment
}
LastModifiedBy {
...UserFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrderItems {
...PurchaseOrderItemFragment
}
Supplier {
...SupplierFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
actualDeliveryDate
approvedAt
approvedBy
createdAt
createdByUserEmailSnapshot
createdByUserId
createdByUserIdSnapshot
createdByUserNameSnapshot
currency
exchangeRate
expectedDeliveryDate
id
internalNotes
internalPoNumber
isFullyReceived
itemCount
lastModifiedByUserEmailSnapshot
lastModifiedByUserId
lastModifiedByUserIdSnapshot
lastModifiedByUserNameSnapshot
notes
orderDate
organizationId
otherCosts
paymentTerms
pdfFileId
pdfGeneratedAt
pdfUrl
poNumber
receiptCount
remainingQuantity
sendCount
sentAt
sentTo
shipToWarehouseId
shippingAddress
shippingCity
shippingCost
shippingCountry
shippingMethod
shippingPostalCode
shippingState
status
subtotal
supplierId
taxAmount
totalCost
totalQuantityOrdered
totalQuantityReceived
trackingNumber
trackingUrl
updatedAt
}
}
Variables
{"id": "4"}
Response
{
"data": {
"deletePurchaseOrder": {
"CreatedBy": User,
"CreatedByUser": User,
"InventoryReceipts": [InventoryReceipt],
"LastModifiedBy": User,
"Organization": Organization,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"WarehouseLocation": WarehouseLocation,
"actualDeliveryDate": "abc123",
"approvedAt": "abc123",
"approvedBy": "abc123",
"createdAt": "xyz789",
"createdByUserEmailSnapshot": "xyz789",
"createdByUserId": "4",
"createdByUserIdSnapshot": "4",
"createdByUserNameSnapshot": "abc123",
"currency": "xyz789",
"exchangeRate": "abc123",
"expectedDeliveryDate": "abc123",
"id": "4",
"internalNotes": "xyz789",
"internalPoNumber": 123,
"isFullyReceived": false,
"itemCount": 987,
"lastModifiedByUserEmailSnapshot": "xyz789",
"lastModifiedByUserId": 4,
"lastModifiedByUserIdSnapshot": "4",
"lastModifiedByUserNameSnapshot": "abc123",
"notes": "abc123",
"orderDate": "xyz789",
"organizationId": "4",
"otherCosts": "abc123",
"paymentTerms": "abc123",
"pdfFileId": "xyz789",
"pdfGeneratedAt": "abc123",
"pdfUrl": "xyz789",
"poNumber": "xyz789",
"receiptCount": 123,
"remainingQuantity": 123,
"sendCount": 123,
"sentAt": "abc123",
"sentTo": "abc123",
"shipToWarehouseId": 4,
"shippingAddress": "xyz789",
"shippingCity": "xyz789",
"shippingCost": "abc123",
"shippingCountry": "abc123",
"shippingMethod": "xyz789",
"shippingPostalCode": "abc123",
"shippingState": "xyz789",
"status": "CANCELLED",
"subtotal": "abc123",
"supplierId": "4",
"taxAmount": "xyz789",
"totalCost": "abc123",
"totalQuantityOrdered": 987,
"totalQuantityReceived": 987,
"trackingNumber": "xyz789",
"trackingUrl": "abc123",
"updatedAt": "xyz789"
}
}
}
deleteSourcingListing
Description
Delete a sourcing listing and its price ladder.
Required scope: suppliers:update
deleteSupplier
Description
Delete a supplier
Required scope: suppliers:delete
Example
Query
mutation deleteSupplier($id: ID!) {
deleteSupplier(id: $id) {
Organization {
...OrganizationFragment
}
PurchaseOrders {
...PurchaseOrderFragment
}
SourcingListings {
...SourcingListingFragment
}
address
city
code
contactEmail
contactName
contactPhone
country
countryCode
createdAt
currency
description
id
isActive
leadTimeDays
metadata
minimumOrderValue
name
notes
organizationId
paymentTerms
postalCode
productCount
purchaseOrderCount
purchasePortalUrl
rating
shippingMethod
state
updatedAt
website
}
}
Variables
{"id": "4"}
Response
{
"data": {
"deleteSupplier": {
"Organization": Organization,
"PurchaseOrders": [PurchaseOrder],
"SourcingListings": [SourcingListing],
"address": "xyz789",
"city": "xyz789",
"code": "abc123",
"contactEmail": "xyz789",
"contactName": "xyz789",
"contactPhone": "xyz789",
"country": "xyz789",
"countryCode": "xyz789",
"createdAt": "abc123",
"currency": "xyz789",
"description": "abc123",
"id": 4,
"isActive": false,
"leadTimeDays": 987,
"metadata": "xyz789",
"minimumOrderValue": "xyz789",
"name": "xyz789",
"notes": "abc123",
"organizationId": 4,
"paymentTerms": "xyz789",
"postalCode": "xyz789",
"productCount": 987,
"purchaseOrderCount": 987,
"purchasePortalUrl": "abc123",
"rating": 123,
"shippingMethod": "abc123",
"state": "abc123",
"updatedAt": "xyz789",
"website": "xyz789"
}
}
}
enqueuePrintJob
Description
Enqueue a print job for a registered device. The desktop agent will dequeue it on its next poll cycle.
Required scope: devices:update
Response
Returns a PrintJob
Arguments
| Name | Description |
|---|---|
deviceId - String!
|
|
format - PrintJobFormat!
|
|
payload - String!
|
Print content: base64-encoded bytes for PDF/ZPL/RAW |
Example
Query
mutation enqueuePrintJob(
$deviceId: String!,
$format: PrintJobFormat!,
$payload: String!
) {
enqueuePrintJob(
deviceId: $deviceId,
format: $format,
payload: $payload
) {
copies
createdAt
device {
...DeviceFragment
}
deviceId
error
format
id
leaseExpiresAt
orgId
pages
payloadSizeBytes
status
updatedAt
}
}
Variables
{
"deviceId": "abc123",
"format": "PDF",
"payload": "xyz789"
}
Response
{
"data": {
"enqueuePrintJob": {
"copies": 123,
"createdAt": "xyz789",
"device": Device,
"deviceId": "abc123",
"error": "xyz789",
"format": "PDF",
"id": 4,
"leaseExpiresAt": "abc123",
"orgId": "abc123",
"pages": "abc123",
"payloadSizeBytes": 123,
"status": "DISPATCHED",
"updatedAt": "xyz789"
}
}
}
login
Description
Login with email/password
Response
Returns an AuthPayload
Example
Query
mutation login(
$email: String!,
$mfaCode: String,
$password: String!
) {
login(
email: $email,
mfaCode: $mfaCode,
password: $password
) {
expiresAt
requiresEmailVerification
requiresMfaSetup
requiresPasskeySetup
token
user {
...UserFragment
}
}
}
Variables
{
"email": "abc123",
"mfaCode": "xyz789",
"password": "xyz789"
}
Response
{
"data": {
"login": {
"expiresAt": "xyz789",
"requiresEmailVerification": false,
"requiresMfaSetup": false,
"requiresPasskeySetup": false,
"token": "abc123",
"user": User
}
}
}
refreshToken
Description
Refresh access token using HttpOnly refresh token cookie
Response
Returns an AuthPayload
Example
Query
mutation refreshToken {
refreshToken {
expiresAt
requiresEmailVerification
requiresMfaSetup
requiresPasskeySetup
token
user {
...UserFragment
}
}
}
Response
{
"data": {
"refreshToken": {
"expiresAt": "abc123",
"requiresEmailVerification": false,
"requiresMfaSetup": false,
"requiresPasskeySetup": true,
"token": "abc123",
"user": User
}
}
}
removePurchaseOrderItem
Description
Remove an item from a purchase order. Returns the removed item.
Required scope: purchase-orders:update
Response
Returns a PurchaseOrderItem
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
mutation removePurchaseOrderItem($id: ID!) {
removePurchaseOrderItem(id: $id) {
InventoryReceiptItems {
...InventoryReceiptItemFragment
}
Product {
...ProductFragment
}
PurchasableItem {
...PurchasableItemFragment
}
PurchaseOrder {
...PurchaseOrderFragment
}
SourcingListing {
...SourcingListingFragment
}
createdAt
id
itemName
itemSku
itemType
lineTotal
notes
productId
productVariantId
purchasableItemId
purchaseOrderId
quantityOrdered
quantityOutstanding
quantityReceived
sourcingListingId
supplierSku
unitCost
unitCostOverridden
updatedAt
}
}
Variables
{"id": "4"}
Response
{
"data": {
"removePurchaseOrderItem": {
"InventoryReceiptItems": [InventoryReceiptItem],
"Product": Product,
"PurchasableItem": PurchasableItem,
"PurchaseOrder": PurchaseOrder,
"SourcingListing": SourcingListing,
"createdAt": "abc123",
"id": "4",
"itemName": "abc123",
"itemSku": "xyz789",
"itemType": "abc123",
"lineTotal": "abc123",
"notes": "xyz789",
"productId": "4",
"productVariantId": 4,
"purchasableItemId": "4",
"purchaseOrderId": 4,
"quantityOrdered": 987,
"quantityOutstanding": 987,
"quantityReceived": 987,
"sourcingListingId": "4",
"supplierSku": "abc123",
"unitCost": "abc123",
"unitCostOverridden": false,
"updatedAt": "xyz789"
}
}
}
reorderProductImages
Description
Reorder product images
Required scope: products:update
Response
Returns [ProductImage!]
Arguments
| Name | Description |
|---|---|
input - ReorderProductImagesInput!
|
Example
Query
mutation reorderProductImages($input: ReorderProductImagesInput!) {
reorderProductImages(input: $input) {
altText
createdAt
file {
...FileFragment
}
fileId
fileSize
height
id
imageUrl
product {
...ProductFragment
}
productId
shopifyImageId
shopifyImageLegacyId
shopifyPosition
sortOrder
sourceUrl
status
thumbnails
updatedAt
url
width
}
}
Variables
{"input": ReorderProductImagesInput}
Response
{
"data": {
"reorderProductImages": [
{
"altText": "abc123",
"createdAt": "xyz789",
"file": File,
"fileId": 4,
"fileSize": 987,
"height": 123,
"id": "4",
"imageUrl": "abc123",
"product": Product,
"productId": 4,
"shopifyImageId": "xyz789",
"shopifyImageLegacyId": "abc123",
"shopifyPosition": 987,
"sortOrder": 987,
"sourceUrl": "xyz789",
"status": "xyz789",
"thumbnails": {},
"updatedAt": "abc123",
"url": "xyz789",
"width": 987
}
]
}
}
requestCustomerOrderCode
Description
Email a one-time verification code to the address on the order. Rate limited per link and per network address.
Response
Returns a CustomerOrderCodeRequestResult!
Arguments
| Name | Description |
|---|---|
token - String!
|
Example
Query
mutation requestCustomerOrderCode($token: String!) {
requestCustomerOrderCode(token: $token) {
maskedEmail
retryAfterSeconds
status
}
}
Variables
{"token": "abc123"}
Response
{
"data": {
"requestCustomerOrderCode": {
"maskedEmail": "abc123",
"retryAfterSeconds": 987,
"status": "INVALID_LINK"
}
}
}
requestNewPasswordSetupLink
Description
Re-issue an invitation or password-reset link from an expired one. Always returns the same neutral message so it cannot be used to probe which tokens or accounts exist.
Response
Returns a VerificationRequest
Arguments
| Name | Description |
|---|---|
token - String!
|
Example
Query
mutation requestNewPasswordSetupLink($token: String!) {
requestNewPasswordSetupLink(token: $token) {
canRequestNewLink
code
message
success
}
}
Variables
{"token": "xyz789"}
Response
{
"data": {
"requestNewPasswordSetupLink": {
"canRequestNewLink": false,
"code": "xyz789",
"message": "xyz789",
"success": false
}
}
}
requestPasswordReset
Description
Request password reset email
Response
Returns a VerificationRequest
Arguments
| Name | Description |
|---|---|
email - String!
|
Example
Query
mutation requestPasswordReset($email: String!) {
requestPasswordReset(email: $email) {
canRequestNewLink
code
message
success
}
}
Variables
{"email": "abc123"}
Response
{
"data": {
"requestPasswordReset": {
"canRequestNewLink": true,
"code": "abc123",
"message": "xyz789",
"success": true
}
}
}
requestProductImageUpload
Description
Step 1 of 3 for uploading an image. POST the file to url as multipart/form-data with every entry of fields, then call confirmProductImageUpload, which adds it to the product.
Required scope: products:update
Response
Returns an UploadRequest
Arguments
| Name | Description |
|---|---|
input - RequestProductImageUploadInput!
|
Example
Query
mutation requestProductImageUpload($input: RequestProductImageUploadInput!) {
requestProductImageUpload(input: $input) {
expiresAt
fields
uploadId
url
}
}
Variables
{"input": RequestProductImageUploadInput}
Response
{
"data": {
"requestProductImageUpload": {
"expiresAt": "xyz789",
"fields": {},
"uploadId": 4,
"url": "abc123"
}
}
}
resendSignupVerificationEmail
Description
Send a new email verification link to an account created by signup that has not been verified yet. Always returns the same neutral message so it cannot be used to probe which accounts exist.
Response
Returns a VerificationRequest
Arguments
| Name | Description |
|---|---|
email - String!
|
Example
Query
mutation resendSignupVerificationEmail($email: String!) {
resendSignupVerificationEmail(email: $email) {
canRequestNewLink
code
message
success
}
}
Variables
{"email": "abc123"}
Response
{
"data": {
"resendSignupVerificationEmail": {
"canRequestNewLink": false,
"code": "xyz789",
"message": "abc123",
"success": true
}
}
}
setPreferredBin
Description
Set a variant's preferred (home) bin at a warehouse location.
Required scope: inventory:update
Response
Returns a ProductVariantPreferredBin
Example
Query
mutation setPreferredBin(
$binId: ID!,
$productVariantId: ID!,
$warehouseLocationId: ID!
) {
setPreferredBin(
binId: $binId,
productVariantId: $productVariantId,
warehouseLocationId: $warehouseLocationId
) {
WarehouseBin {
...WarehouseBinFragment
}
id
preferredBinId
productVariantId
warehouseLocationId
}
}
Variables
{
"binId": 4,
"productVariantId": "4",
"warehouseLocationId": 4
}
Response
{
"data": {
"setPreferredBin": {
"WarehouseBin": WarehouseBin,
"id": "4",
"preferredBinId": 4,
"productVariantId": "4",
"warehouseLocationId": 4
}
}
}
setProductChannelSurfaces
Description
Choose where a product appears on a channel, such as Online Store or Point of Sale. Replaces the current set. Find the IDs with salesChannelSurfaces.
Required scope: channels:update
Response
Returns a SetShopifyProductPublicationsResult
Example
Query
mutation setProductChannelSurfaces(
$channelId: ID!,
$productId: ID!,
$surfaceIds: [ID!]!
) {
setProductChannelSurfaces(
channelId: $channelId,
productId: $productId,
surfaceIds: $surfaceIds
) {
message
success
}
}
Variables
{
"channelId": 4,
"productId": "4",
"surfaceIds": ["4"]
}
Response
{
"data": {
"setProductChannelSurfaces": {
"message": "xyz789",
"success": true
}
}
}
setProductPrimaryImage
Description
Set the primary image for a product
Required scope: products:update
Response
Returns a ProductImage
Example
Query
mutation setProductPrimaryImage(
$imageId: ID!,
$productId: ID!
) {
setProductPrimaryImage(
imageId: $imageId,
productId: $productId
) {
altText
createdAt
file {
...FileFragment
}
fileId
fileSize
height
id
imageUrl
product {
...ProductFragment
}
productId
shopifyImageId
shopifyImageLegacyId
shopifyPosition
sortOrder
sourceUrl
status
thumbnails
updatedAt
url
width
}
}
Variables
{
"imageId": "4",
"productId": "4"
}
Response
{
"data": {
"setProductPrimaryImage": {
"altText": "xyz789",
"createdAt": "abc123",
"file": File,
"fileId": 4,
"fileSize": 987,
"height": 987,
"id": "4",
"imageUrl": "abc123",
"product": Product,
"productId": 4,
"shopifyImageId": "xyz789",
"shopifyImageLegacyId": "xyz789",
"shopifyPosition": 123,
"sortOrder": 123,
"sourceUrl": "xyz789",
"status": "xyz789",
"thumbnails": {},
"updatedAt": "xyz789",
"url": "abc123",
"width": 123
}
}
}
setVariantPrimaryImage
Description
Set the primary image for a product variant
Required scope: products:update
Response
Returns a ProductImage
Example
Query
mutation setVariantPrimaryImage(
$imageId: ID!,
$variantId: ID!
) {
setVariantPrimaryImage(
imageId: $imageId,
variantId: $variantId
) {
altText
createdAt
file {
...FileFragment
}
fileId
fileSize
height
id
imageUrl
product {
...ProductFragment
}
productId
shopifyImageId
shopifyImageLegacyId
shopifyPosition
sortOrder
sourceUrl
status
thumbnails
updatedAt
url
width
}
}
Variables
{"imageId": 4, "variantId": 4}
Response
{
"data": {
"setVariantPrimaryImage": {
"altText": "abc123",
"createdAt": "abc123",
"file": File,
"fileId": "4",
"fileSize": 987,
"height": 123,
"id": "4",
"imageUrl": "xyz789",
"product": Product,
"productId": 4,
"shopifyImageId": "abc123",
"shopifyImageLegacyId": "xyz789",
"shopifyPosition": 123,
"sortOrder": 123,
"sourceUrl": "abc123",
"status": "xyz789",
"thumbnails": {},
"updatedAt": "abc123",
"url": "abc123",
"width": 123
}
}
}
signup
Description
Signup new user with password (passkey-only users should use signupWithPasskey)
Response
Returns an AuthPayload
Arguments
| Name | Description |
|---|---|
currency - String
|
The organisation's base currency (ISO 4217), when given explicitly. Omitted: the organisation has none until it sets one — nothing is inferred from the request. |
email - String!
|
|
firstName - String!
|
|
lastName - String!
|
|
organizationName - String
|
|
password - String
|
Example
Query
mutation signup(
$currency: String,
$email: String!,
$firstName: String!,
$lastName: String!,
$organizationName: String,
$password: String
) {
signup(
currency: $currency,
email: $email,
firstName: $firstName,
lastName: $lastName,
organizationName: $organizationName,
password: $password
) {
expiresAt
requiresEmailVerification
requiresMfaSetup
requiresPasskeySetup
token
user {
...UserFragment
}
}
}
Variables
{
"currency": "abc123",
"email": "abc123",
"firstName": "xyz789",
"lastName": "abc123",
"organizationName": "abc123",
"password": "xyz789"
}
Response
{
"data": {
"signup": {
"expiresAt": "xyz789",
"requiresEmailVerification": true,
"requiresMfaSetup": true,
"requiresPasskeySetup": true,
"token": "abc123",
"user": User
}
}
}
signupFromShopifyInstall
Description
Signup new user from a Shopify App Store install token
Response
Returns an AuthPayload
Example
Query
mutation signupFromShopifyInstall(
$email: String!,
$firstName: String!,
$installToken: String!,
$lastName: String!,
$organizationName: String!,
$password: String!
) {
signupFromShopifyInstall(
email: $email,
firstName: $firstName,
installToken: $installToken,
lastName: $lastName,
organizationName: $organizationName,
password: $password
) {
expiresAt
requiresEmailVerification
requiresMfaSetup
requiresPasskeySetup
token
user {
...UserFragment
}
}
}
Variables
{
"email": "abc123",
"firstName": "abc123",
"installToken": "abc123",
"lastName": "xyz789",
"organizationName": "abc123",
"password": "abc123"
}
Response
{
"data": {
"signupFromShopifyInstall": {
"expiresAt": "xyz789",
"requiresEmailVerification": true,
"requiresMfaSetup": false,
"requiresPasskeySetup": false,
"token": "abc123",
"user": User
}
}
}
signupWithPasskey
Description
Signup with passkey
Response
Returns an AuthPayload
Arguments
| Name | Description |
|---|---|
authenticatorAttachment - String
|
|
clientExtensionResults - JSON
|
|
credentialId - String!
|
|
currency - String
|
The organisation's base currency (ISO 4217), when given explicitly. Omitted: the organisation has none until it sets one — nothing is inferred from the request. |
email - String!
|
|
firstName - String!
|
|
lastName - String!
|
|
organizationName - String
|
|
passkeyName - String!
|
|
rawId - String!
|
|
response - JSON!
|
Example
Query
mutation signupWithPasskey(
$authenticatorAttachment: String,
$clientExtensionResults: JSON,
$credentialId: String!,
$currency: String,
$email: String!,
$firstName: String!,
$lastName: String!,
$organizationName: String,
$passkeyName: String!,
$rawId: String!,
$response: JSON!
) {
signupWithPasskey(
authenticatorAttachment: $authenticatorAttachment,
clientExtensionResults: $clientExtensionResults,
credentialId: $credentialId,
currency: $currency,
email: $email,
firstName: $firstName,
lastName: $lastName,
organizationName: $organizationName,
passkeyName: $passkeyName,
rawId: $rawId,
response: $response
) {
expiresAt
requiresEmailVerification
requiresMfaSetup
requiresPasskeySetup
token
user {
...UserFragment
}
}
}
Variables
{
"authenticatorAttachment": "xyz789",
"clientExtensionResults": {},
"credentialId": "xyz789",
"currency": "abc123",
"email": "abc123",
"firstName": "xyz789",
"lastName": "abc123",
"organizationName": "abc123",
"passkeyName": "abc123",
"rawId": "abc123",
"response": {}
}
Response
{
"data": {
"signupWithPasskey": {
"expiresAt": "xyz789",
"requiresEmailVerification": true,
"requiresMfaSetup": true,
"requiresPasskeySetup": true,
"token": "xyz789",
"user": User
}
}
}
startPasskeyAuthentication
Description
Start passkey authentication flow
Response
Returns a PasskeyAuthenticationOptions
Arguments
| Name | Description |
|---|---|
email - String
|
Example
Query
mutation startPasskeyAuthentication($email: String) {
startPasskeyAuthentication(email: $email) {
allowCredentials {
...PublicKeyCredentialDescriptorFragment
}
challenge
rpId
timeout
userVerification
}
}
Variables
{"email": "xyz789"}
Response
{
"data": {
"startPasskeyAuthentication": {
"allowCredentials": [PublicKeyCredentialDescriptor],
"challenge": "abc123",
"rpId": "xyz789",
"timeout": 987,
"userVerification": "abc123"
}
}
}
startPasskeySignup
Description
Start passkey registration for a NEW account (passkey signup). Returns WebAuthn creation options whose challenge is bound to the email being signed up; signupWithPasskey only accepts an attestation answering it.
Response
Returns a PasskeyRegistrationOptions
Example
Query
mutation startPasskeySignup(
$email: String!,
$firstName: String!,
$lastName: String!
) {
startPasskeySignup(
email: $email,
firstName: $firstName,
lastName: $lastName
) {
attestation
authenticatorSelection {
...AuthenticatorSelectionFragment
}
challenge
excludeCredentials {
...PublicKeyCredentialDescriptorFragment
}
pubKeyCredParams {
...PublicKeyCredentialParamFragment
}
rp {
...RelyingPartyFragment
}
timeout
user {
...PasskeyUserFragment
}
}
}
Variables
{
"email": "xyz789",
"firstName": "xyz789",
"lastName": "abc123"
}
Response
{
"data": {
"startPasskeySignup": {
"attestation": "abc123",
"authenticatorSelection": AuthenticatorSelection,
"challenge": "xyz789",
"excludeCredentials": [
PublicKeyCredentialDescriptor
],
"pubKeyCredParams": [PublicKeyCredentialParam],
"rp": RelyingParty,
"timeout": 987,
"user": PasskeyUser
}
}
}
syncProductToChannel
Description
Push one product to a channel it is connected to. Follow the result with channelSyncJob.
Required scope: channels:update
Response
Returns an AsyncJobResponse
Example
Query
mutation syncProductToChannel(
$channelId: ID!,
$force: Boolean,
$productId: ID!
) {
syncProductToChannel(
channelId: $channelId,
force: $force,
productId: $productId
) {
jobId
message
status
}
}
Variables
{
"channelId": "4",
"force": true,
"productId": "4"
}
Response
{
"data": {
"syncProductToChannel": {
"jobId": "4",
"message": "xyz789",
"status": "COMPLETED"
}
}
}
updateInventory
Description
Set the on-hand quantity of a variant at a warehouse location. Use this to set opening stock for a new product, or an inventory receipt when stock arrives against a purchase order.
Required scope: inventory:update
Response
Returns a ProductLocationInventory
Arguments
| Name | Description |
|---|---|
input - UpdateInventoryInput!
|
Example
Query
mutation updateInventory($input: UpdateInventoryInput!) {
updateInventory(input: $input) {
Product {
...ProductFragment
}
ProductVariant {
...ProductVariantFragment
}
WarehouseArea {
...WarehouseAreaFragment
}
WarehouseBay {
...WarehouseBayFragment
}
WarehouseBin {
...WarehouseBinFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
binType
createdAt
id
isPreferred
lastCountDate
lastSyncAt
locationId
locationPath
lowStockThreshold
productId
productVariantId
quantity
syncErrors
syncStatus
updatedAt
warehouseAreaId
warehouseBayId
warehouseBinId
warehouseLocationId
}
}
Variables
{"input": UpdateInventoryInput}
Response
{
"data": {
"updateInventory": {
"Product": Product,
"ProductVariant": ProductVariant,
"WarehouseArea": WarehouseArea,
"WarehouseBay": WarehouseBay,
"WarehouseBin": WarehouseBin,
"WarehouseLocation": WarehouseLocation,
"binType": "xyz789",
"createdAt": "abc123",
"id": "4",
"isPreferred": false,
"lastCountDate": "xyz789",
"lastSyncAt": "abc123",
"locationId": 4,
"locationPath": "xyz789",
"lowStockThreshold": 987,
"productId": 4,
"productVariantId": "abc123",
"quantity": 123,
"syncErrors": {},
"syncStatus": "ERROR",
"updatedAt": "xyz789",
"warehouseAreaId": "xyz789",
"warehouseBayId": "abc123",
"warehouseBinId": "xyz789",
"warehouseLocationId": 4
}
}
}
updateInventoryReceipt
Description
Update an inventory receipt
Required scope: inventory:receive
Response
Returns an InventoryReceipt
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateInventoryReceiptInput!
|
Example
Query
mutation updateInventoryReceipt(
$id: ID!,
$input: UpdateInventoryReceiptInput!
) {
updateInventoryReceipt(
id: $id,
input: $input
) {
InventoryReceiptItems {
...InventoryReceiptItemFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrder {
...PurchaseOrderFragment
}
ReceivedBy {
...UserFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
createdAt
discrepancyNotes
hasDiscrepancies
id
itemCount
notes
organizationId
purchaseOrderId
receiptNumber
receivedByEmailSnapshot
receivedByIdSnapshot
receivedByNameSnapshot
receivedByUserId
receivedDate
status
totalQuantityExpected
totalQuantityReceived
updatedAt
varianceQuantity
warehouseLocationId
}
}
Variables
{
"id": "4",
"input": UpdateInventoryReceiptInput
}
Response
{
"data": {
"updateInventoryReceipt": {
"InventoryReceiptItems": [InventoryReceiptItem],
"Organization": Organization,
"PurchaseOrder": PurchaseOrder,
"ReceivedBy": User,
"WarehouseLocation": WarehouseLocation,
"createdAt": "abc123",
"discrepancyNotes": "xyz789",
"hasDiscrepancies": true,
"id": "4",
"itemCount": 987,
"notes": "xyz789",
"organizationId": 4,
"purchaseOrderId": "abc123",
"receiptNumber": "xyz789",
"receivedByEmailSnapshot": "abc123",
"receivedByIdSnapshot": 4,
"receivedByNameSnapshot": "xyz789",
"receivedByUserId": "4",
"receivedDate": "abc123",
"status": "CANCELLED",
"totalQuantityExpected": 123,
"totalQuantityReceived": 987,
"updatedAt": "abc123",
"varianceQuantity": 987,
"warehouseLocationId": 4
}
}
}
updateOrder
Description
Update an existing order
Required scope: orders:update
Response
Returns an Order
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateOrderInput!
|
Example
Query
mutation updateOrder(
$id: ID!,
$input: UpdateOrderInput!
) {
updateOrder(
id: $id,
input: $input
) {
Customer {
...CustomerFragment
}
FulfillmentPackages {
...FulfillmentPackageFragment
}
OrderComments {
...OrderCommentFragment
}
OrderLineItems {
...OrderLineItemFragment
}
Organization {
...OrganizationFragment
}
WarehouseAllocation {
...OrderWarehouseAllocationFragment
}
billingAddress
billingAddress2
billingCity
billingCompany
billingCountry
billingCountryCode
billingFirstName
billingLastName
billingPostalCode
billingState
cancelReason
cancelStaffNote
cancelledAt
capturedAmount
carrier
closedAt
confirmed
createdAt
currency
currentShippingCost
customerIp
customerNotes
deliveredAt
discountAmount
discountCodes
email
exchangeRate
fulfilledAt
fulfillmentStatus
grossProfit {
...OrderGrossProfitFragment
}
id
importChargesCollectedAmount
importChargesCollectedBy
importChargesCollection
importChargesConflict
importChargesFactSource
importChargesResolvedCollection
importChargesResolvedSource
importChargesShopifyMixed
importChargesShopifyReported
internalNotes
internalOrderNumber
lastSyncedAt
monthlyOrderCap {
...OrderCapStatusFragment
}
notifyCustomerOnRefund
orderDate
orderNumber
organizationId
paidAt
paymentGateway
paymentMethod
paymentStatus
phone
presentmentCapturedAmount
presentmentCurrency
presentmentCurrentShippingCost
presentmentDiscountAmount
presentmentRefundedAmount
presentmentShippingCost
presentmentShippingDiscountAmount
presentmentSubtotal
presentmentTaxAmount
presentmentTotalAmount
processedAt
refundedAmount
refunds
resolvedShippingService {
...ResolvedShippingServiceFragment
}
restockOnCancel
riskAssessmentDetails
riskLevel
riskRecommendation
shippingAddress
shippingAddress2
shippingCity
shippingCompany
shippingCost
shippingCountry
shippingCountryCode
shippingDiscountAmount
shippingFirstName
shippingLastName
shippingLines
shippingMethod
shippingPostalCode
shippingState
shopifyLastCancelError
shopifyLastCancelSyncAt
shopifyOrderId
shopifyOrderNumber
source
status
storeId
subtotal
syncError
syncStatus
tags
taxAmount
taxLines {
...OrderTaxLineFragment
}
taxesIncluded
timeline {
...OrderTimelineEventFragment
}
totalAmount
trackingNumber
trackingUrl
transactions
updatedAt
}
}
Variables
{
"id": "4",
"input": UpdateOrderInput
}
Response
{
"data": {
"updateOrder": {
"Customer": Customer,
"FulfillmentPackages": [FulfillmentPackage],
"OrderComments": [OrderComment],
"OrderLineItems": [OrderLineItem],
"Organization": Organization,
"WarehouseAllocation": OrderWarehouseAllocation,
"billingAddress": "abc123",
"billingAddress2": "xyz789",
"billingCity": "xyz789",
"billingCompany": "xyz789",
"billingCountry": "abc123",
"billingCountryCode": "xyz789",
"billingFirstName": "xyz789",
"billingLastName": "xyz789",
"billingPostalCode": "xyz789",
"billingState": "abc123",
"cancelReason": "xyz789",
"cancelStaffNote": "xyz789",
"cancelledAt": "abc123",
"capturedAmount": "abc123",
"carrier": "xyz789",
"closedAt": "abc123",
"confirmed": false,
"createdAt": "abc123",
"currency": "abc123",
"currentShippingCost": "xyz789",
"customerIp": "xyz789",
"customerNotes": "xyz789",
"deliveredAt": "xyz789",
"discountAmount": "xyz789",
"discountCodes": {},
"email": "abc123",
"exchangeRate": "abc123",
"fulfilledAt": "abc123",
"fulfillmentStatus": "CANCELLED",
"grossProfit": OrderGrossProfit,
"id": 4,
"importChargesCollectedAmount": "xyz789",
"importChargesCollectedBy": "MERCHANT",
"importChargesCollection": "COLLECTED",
"importChargesConflict": false,
"importChargesFactSource": "API",
"importChargesResolvedCollection": "COLLECTED",
"importChargesResolvedSource": "API",
"importChargesShopifyMixed": false,
"importChargesShopifyReported": "COLLECTED",
"internalNotes": "xyz789",
"internalOrderNumber": 987,
"lastSyncedAt": "xyz789",
"monthlyOrderCap": OrderCapStatus,
"notifyCustomerOnRefund": false,
"orderDate": "xyz789",
"orderNumber": "xyz789",
"organizationId": 4,
"paidAt": "abc123",
"paymentGateway": "xyz789",
"paymentMethod": "xyz789",
"paymentStatus": "AUTHORIZED",
"phone": "abc123",
"presentmentCapturedAmount": "abc123",
"presentmentCurrency": "xyz789",
"presentmentCurrentShippingCost": "xyz789",
"presentmentDiscountAmount": "abc123",
"presentmentRefundedAmount": "xyz789",
"presentmentShippingCost": "abc123",
"presentmentShippingDiscountAmount": "abc123",
"presentmentSubtotal": "xyz789",
"presentmentTaxAmount": "abc123",
"presentmentTotalAmount": "xyz789",
"processedAt": "xyz789",
"refundedAmount": "abc123",
"refunds": {},
"resolvedShippingService": ResolvedShippingService,
"restockOnCancel": false,
"riskAssessmentDetails": {},
"riskLevel": "abc123",
"riskRecommendation": "abc123",
"shippingAddress": "xyz789",
"shippingAddress2": "abc123",
"shippingCity": "xyz789",
"shippingCompany": "abc123",
"shippingCost": "xyz789",
"shippingCountry": "xyz789",
"shippingCountryCode": "abc123",
"shippingDiscountAmount": "xyz789",
"shippingFirstName": "abc123",
"shippingLastName": "abc123",
"shippingLines": {},
"shippingMethod": "xyz789",
"shippingPostalCode": "abc123",
"shippingState": "xyz789",
"shopifyLastCancelError": "abc123",
"shopifyLastCancelSyncAt": "xyz789",
"shopifyOrderId": "abc123",
"shopifyOrderNumber": "abc123",
"source": "abc123",
"status": "CANCELLED",
"storeId": 4,
"subtotal": "abc123",
"syncError": "abc123",
"syncStatus": "ERROR",
"tags": ["abc123"],
"taxAmount": "xyz789",
"taxLines": [OrderTaxLine],
"taxesIncluded": true,
"timeline": [OrderTimelineEvent],
"totalAmount": "xyz789",
"trackingNumber": "xyz789",
"trackingUrl": "abc123",
"transactions": {},
"updatedAt": "xyz789"
}
}
}
updateProduct
Description
Update an existing product
Required scope: products:update
Response
Returns a Product
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateProductInput!
|
Example
Query
mutation updateProduct(
$id: ID!,
$input: UpdateProductInput!
) {
updateProduct(
id: $id,
input: $input
) {
Organization {
...OrganizationFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
ProductStoreConnection {
...ProductStoreConnectionFragment
}
SourcingListings {
...SourcingListingFragment
}
allowBackorder
assemblyMode
availableQuantity
barcode
basePrice
brand
bundleComponentCount
bundleDiscountPercent
bundleItems {
...ProductBundleItemFragment
}
bundlePricing
bundledIn {
...ProductBundleItemFragment
}
category
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
defaultVariant {
...ProductVariantFragment
}
description
dimensionUnit
displayTitle
effectiveAssemblyMode
handle
hasOnlyDefaultVariant
height
hsCode
id
images {
...ProductImageFragment
}
isActive
isActiveSKU
isGiftCard
kitInventoryMode
length
lowStockThreshold
metaDescription
metaTitle
option1Name
option2Name
option3Name
optionDefinitions {
...ProductOptionDefinitionFragment
}
organizationId
primaryImage {
...ProductImageFragment
}
primaryImageId
productLocationInventories {
...ProductLocationInventoryFragment
}
productType
productVariants {
...ProductVariantFragment
}
provinceOfOrigin
publishedAt
purchasableItemId
quantity
requiresShipping
reservedQuantity
sku
skuType
slug
status
stockStatus
storeConnections {
...ProductStoreConnectionFragment
}
supplier {
...SupplierFragment
}
supplierId
tags
taxCode
taxable
title
totalQuantity
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
type
updatedAt
warehouseLocation
weight
weightUnit
width
}
}
Variables
{"id": 4, "input": UpdateProductInput}
Response
{
"data": {
"updateProduct": {
"Organization": Organization,
"ProductLocationInventory": [
ProductLocationInventory
],
"ProductStoreConnection": [ProductStoreConnection],
"SourcingListings": [SourcingListing],
"allowBackorder": false,
"assemblyMode": "BOTH",
"availableQuantity": 123,
"barcode": "xyz789",
"basePrice": "xyz789",
"brand": "abc123",
"bundleComponentCount": 987,
"bundleDiscountPercent": "abc123",
"bundleItems": [ProductBundleItem],
"bundlePricing": "CALCULATED",
"bundledIn": [ProductBundleItem],
"category": "abc123",
"compareAtPrice": "xyz789",
"costPrice": "abc123",
"countryOfOrigin": "xyz789",
"createdAt": "xyz789",
"customsDescription": "abc123",
"defaultVariant": ProductVariant,
"description": "xyz789",
"dimensionUnit": "CM",
"displayTitle": "xyz789",
"effectiveAssemblyMode": "BOTH",
"handle": "abc123",
"hasOnlyDefaultVariant": true,
"height": "abc123",
"hsCode": "xyz789",
"id": "4",
"images": [ProductImage],
"isActive": true,
"isActiveSKU": false,
"isGiftCard": true,
"kitInventoryMode": "ACTIVE",
"length": "xyz789",
"lowStockThreshold": 123,
"metaDescription": "abc123",
"metaTitle": "abc123",
"option1Name": "xyz789",
"option2Name": "xyz789",
"option3Name": "xyz789",
"optionDefinitions": [ProductOptionDefinition],
"organizationId": "4",
"primaryImage": ProductImage,
"primaryImageId": "abc123",
"productLocationInventories": [
ProductLocationInventory
],
"productType": "abc123",
"productVariants": [ProductVariant],
"provinceOfOrigin": "abc123",
"publishedAt": "abc123",
"purchasableItemId": "abc123",
"quantity": 123,
"requiresShipping": true,
"reservedQuantity": 123,
"sku": "xyz789",
"skuType": "BUNDLE",
"slug": "xyz789",
"status": "ACTIVE",
"stockStatus": "ALWAYS_IN_STOCK",
"storeConnections": [ProductStoreConnection],
"supplier": Supplier,
"supplierId": "abc123",
"tags": ["xyz789"],
"taxCode": "abc123",
"taxable": true,
"title": "xyz789",
"totalQuantity": 123,
"trackInventory": false,
"trackInventoryNeedsRestoration": true,
"trackInventoryUserSet": true,
"type": "BUNDLE",
"updatedAt": "xyz789",
"warehouseLocation": "abc123",
"weight": "abc123",
"weightUnit": "GRAMS",
"width": "xyz789"
}
}
}
updateProductImage
Description
Update product image metadata
Required scope: products:update
Response
Returns a ProductImage
Arguments
| Name | Description |
|---|---|
input - UpdateProductImageInput!
|
Example
Query
mutation updateProductImage($input: UpdateProductImageInput!) {
updateProductImage(input: $input) {
altText
createdAt
file {
...FileFragment
}
fileId
fileSize
height
id
imageUrl
product {
...ProductFragment
}
productId
shopifyImageId
shopifyImageLegacyId
shopifyPosition
sortOrder
sourceUrl
status
thumbnails
updatedAt
url
width
}
}
Variables
{"input": UpdateProductImageInput}
Response
{
"data": {
"updateProductImage": {
"altText": "abc123",
"createdAt": "xyz789",
"file": File,
"fileId": "4",
"fileSize": 987,
"height": 987,
"id": 4,
"imageUrl": "abc123",
"product": Product,
"productId": 4,
"shopifyImageId": "abc123",
"shopifyImageLegacyId": "abc123",
"shopifyPosition": 987,
"sortOrder": 123,
"sourceUrl": "abc123",
"status": "xyz789",
"thumbnails": {},
"updatedAt": "abc123",
"url": "xyz789",
"width": 987
}
}
}
updateProductVariant
Description
Update a product variant
Required scope: products:update
Response
Returns a ProductVariant
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateProductVariantInput!
|
Example
Query
mutation updateProductVariant(
$id: ID!,
$input: UpdateProductVariantInput!
) {
updateProductVariant(
id: $id,
input: $input
) {
Product {
...ProductFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
PurchasableItem {
...PurchasableItemFragment
}
allowBackorder
availableQuantity
barcode
basePrice
calculatedCost
calculatedCostIsPartial
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
dimensionUnit
height
hsCode
id
length
lowStockThreshold
onHandQuantity
option1Value
option2Value
option3Value
organizationId
position
primaryImage {
...ProductImageFragment
}
primaryImageId
productId
provinceOfOrigin
purchasableItemId
qrCode
quantity
requiresShipping
reservedQuantity
sku
stockStatus
taxCode
taxable
title
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
updatedAt
weight
weightUnit
width
}
}
Variables
{"id": 4, "input": UpdateProductVariantInput}
Response
{
"data": {
"updateProductVariant": {
"Product": Product,
"ProductLocationInventory": [
ProductLocationInventory
],
"PurchasableItem": PurchasableItem,
"allowBackorder": true,
"availableQuantity": 123,
"barcode": "xyz789",
"basePrice": "abc123",
"calculatedCost": "abc123",
"calculatedCostIsPartial": false,
"compareAtPrice": "xyz789",
"costPrice": "xyz789",
"countryOfOrigin": "abc123",
"createdAt": "xyz789",
"customsDescription": "abc123",
"dimensionUnit": "CM",
"height": "abc123",
"hsCode": "xyz789",
"id": "4",
"length": "abc123",
"lowStockThreshold": 987,
"onHandQuantity": 123,
"option1Value": "abc123",
"option2Value": "abc123",
"option3Value": "xyz789",
"organizationId": 4,
"position": 987,
"primaryImage": ProductImage,
"primaryImageId": "abc123",
"productId": "4",
"provinceOfOrigin": "xyz789",
"purchasableItemId": "4",
"qrCode": "xyz789",
"quantity": 123,
"requiresShipping": false,
"reservedQuantity": 987,
"sku": "abc123",
"stockStatus": "ALWAYS_IN_STOCK",
"taxCode": "abc123",
"taxable": false,
"title": "abc123",
"trackInventory": true,
"trackInventoryNeedsRestoration": true,
"trackInventoryUserSet": false,
"updatedAt": "abc123",
"weight": "abc123",
"weightUnit": "GRAMS",
"width": "xyz789"
}
}
}
updateProductWithVariantMatrix
Description
Atomically update a product, delete specified variants, and create new variants in a single transaction. Emits exactly one PRODUCT_UPDATED event. Use instead of the sequential updateProduct + deleteProductVariant + createProductVariant pattern.
Required scope: products:update
Response
Returns a Product
Arguments
| Name | Description |
|---|---|
createVariants - [CreateProductVariantInput!]!
|
|
deleteVariantIds - [ID!]!
|
|
id - ID!
|
|
input - UpdateProductInput!
|
Example
Query
mutation updateProductWithVariantMatrix(
$createVariants: [CreateProductVariantInput!]!,
$deleteVariantIds: [ID!]!,
$id: ID!,
$input: UpdateProductInput!
) {
updateProductWithVariantMatrix(
createVariants: $createVariants,
deleteVariantIds: $deleteVariantIds,
id: $id,
input: $input
) {
Organization {
...OrganizationFragment
}
ProductLocationInventory {
...ProductLocationInventoryFragment
}
ProductStoreConnection {
...ProductStoreConnectionFragment
}
SourcingListings {
...SourcingListingFragment
}
allowBackorder
assemblyMode
availableQuantity
barcode
basePrice
brand
bundleComponentCount
bundleDiscountPercent
bundleItems {
...ProductBundleItemFragment
}
bundlePricing
bundledIn {
...ProductBundleItemFragment
}
category
compareAtPrice
costPrice
countryOfOrigin
createdAt
customsDescription
defaultVariant {
...ProductVariantFragment
}
description
dimensionUnit
displayTitle
effectiveAssemblyMode
handle
hasOnlyDefaultVariant
height
hsCode
id
images {
...ProductImageFragment
}
isActive
isActiveSKU
isGiftCard
kitInventoryMode
length
lowStockThreshold
metaDescription
metaTitle
option1Name
option2Name
option3Name
optionDefinitions {
...ProductOptionDefinitionFragment
}
organizationId
primaryImage {
...ProductImageFragment
}
primaryImageId
productLocationInventories {
...ProductLocationInventoryFragment
}
productType
productVariants {
...ProductVariantFragment
}
provinceOfOrigin
publishedAt
purchasableItemId
quantity
requiresShipping
reservedQuantity
sku
skuType
slug
status
stockStatus
storeConnections {
...ProductStoreConnectionFragment
}
supplier {
...SupplierFragment
}
supplierId
tags
taxCode
taxable
title
totalQuantity
trackInventory
trackInventoryNeedsRestoration
trackInventoryUserSet
type
updatedAt
warehouseLocation
weight
weightUnit
width
}
}
Variables
{
"createVariants": [CreateProductVariantInput],
"deleteVariantIds": [4],
"id": "4",
"input": UpdateProductInput
}
Response
{
"data": {
"updateProductWithVariantMatrix": {
"Organization": Organization,
"ProductLocationInventory": [
ProductLocationInventory
],
"ProductStoreConnection": [ProductStoreConnection],
"SourcingListings": [SourcingListing],
"allowBackorder": true,
"assemblyMode": "BOTH",
"availableQuantity": 987,
"barcode": "abc123",
"basePrice": "xyz789",
"brand": "abc123",
"bundleComponentCount": 123,
"bundleDiscountPercent": "xyz789",
"bundleItems": [ProductBundleItem],
"bundlePricing": "CALCULATED",
"bundledIn": [ProductBundleItem],
"category": "xyz789",
"compareAtPrice": "abc123",
"costPrice": "xyz789",
"countryOfOrigin": "abc123",
"createdAt": "xyz789",
"customsDescription": "abc123",
"defaultVariant": ProductVariant,
"description": "abc123",
"dimensionUnit": "CM",
"displayTitle": "xyz789",
"effectiveAssemblyMode": "BOTH",
"handle": "abc123",
"hasOnlyDefaultVariant": true,
"height": "xyz789",
"hsCode": "xyz789",
"id": "4",
"images": [ProductImage],
"isActive": false,
"isActiveSKU": true,
"isGiftCard": true,
"kitInventoryMode": "ACTIVE",
"length": "xyz789",
"lowStockThreshold": 987,
"metaDescription": "abc123",
"metaTitle": "abc123",
"option1Name": "abc123",
"option2Name": "abc123",
"option3Name": "xyz789",
"optionDefinitions": [ProductOptionDefinition],
"organizationId": "4",
"primaryImage": ProductImage,
"primaryImageId": "xyz789",
"productLocationInventories": [
ProductLocationInventory
],
"productType": "abc123",
"productVariants": [ProductVariant],
"provinceOfOrigin": "xyz789",
"publishedAt": "abc123",
"purchasableItemId": "xyz789",
"quantity": 123,
"requiresShipping": false,
"reservedQuantity": 123,
"sku": "abc123",
"skuType": "BUNDLE",
"slug": "xyz789",
"status": "ACTIVE",
"stockStatus": "ALWAYS_IN_STOCK",
"storeConnections": [ProductStoreConnection],
"supplier": Supplier,
"supplierId": "abc123",
"tags": ["xyz789"],
"taxCode": "abc123",
"taxable": false,
"title": "xyz789",
"totalQuantity": 987,
"trackInventory": true,
"trackInventoryNeedsRestoration": false,
"trackInventoryUserSet": false,
"type": "BUNDLE",
"updatedAt": "abc123",
"warehouseLocation": "xyz789",
"weight": "xyz789",
"weightUnit": "GRAMS",
"width": "abc123"
}
}
}
updatePurchaseOrder
Description
Update a purchase order
Required scope: purchase-orders:update
Response
Returns a PurchaseOrder
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdatePurchaseOrderInput!
|
Example
Query
mutation updatePurchaseOrder(
$id: ID!,
$input: UpdatePurchaseOrderInput!
) {
updatePurchaseOrder(
id: $id,
input: $input
) {
CreatedBy {
...UserFragment
}
CreatedByUser {
...UserFragment
}
InventoryReceipts {
...InventoryReceiptFragment
}
LastModifiedBy {
...UserFragment
}
Organization {
...OrganizationFragment
}
PurchaseOrderItems {
...PurchaseOrderItemFragment
}
Supplier {
...SupplierFragment
}
WarehouseLocation {
...WarehouseLocationFragment
}
actualDeliveryDate
approvedAt
approvedBy
createdAt
createdByUserEmailSnapshot
createdByUserId
createdByUserIdSnapshot
createdByUserNameSnapshot
currency
exchangeRate
expectedDeliveryDate
id
internalNotes
internalPoNumber
isFullyReceived
itemCount
lastModifiedByUserEmailSnapshot
lastModifiedByUserId
lastModifiedByUserIdSnapshot
lastModifiedByUserNameSnapshot
notes
orderDate
organizationId
otherCosts
paymentTerms
pdfFileId
pdfGeneratedAt
pdfUrl
poNumber
receiptCount
remainingQuantity
sendCount
sentAt
sentTo
shipToWarehouseId
shippingAddress
shippingCity
shippingCost
shippingCountry
shippingMethod
shippingPostalCode
shippingState
status
subtotal
supplierId
taxAmount
totalCost
totalQuantityOrdered
totalQuantityReceived
trackingNumber
trackingUrl
updatedAt
}
}
Variables
{
"id": "4",
"input": UpdatePurchaseOrderInput
}
Response
{
"data": {
"updatePurchaseOrder": {
"CreatedBy": User,
"CreatedByUser": User,
"InventoryReceipts": [InventoryReceipt],
"LastModifiedBy": User,
"Organization": Organization,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"WarehouseLocation": WarehouseLocation,
"actualDeliveryDate": "xyz789",
"approvedAt": "xyz789",
"approvedBy": "xyz789",
"createdAt": "abc123",
"createdByUserEmailSnapshot": "xyz789",
"createdByUserId": 4,
"createdByUserIdSnapshot": 4,
"createdByUserNameSnapshot": "abc123",
"currency": "abc123",
"exchangeRate": "abc123",
"expectedDeliveryDate": "xyz789",
"id": "4",
"internalNotes": "xyz789",
"internalPoNumber": 987,
"isFullyReceived": false,
"itemCount": 987,
"lastModifiedByUserEmailSnapshot": "xyz789",
"lastModifiedByUserId": 4,
"lastModifiedByUserIdSnapshot": 4,
"lastModifiedByUserNameSnapshot": "abc123",
"notes": "abc123",
"orderDate": "abc123",
"organizationId": 4,
"otherCosts": "abc123",
"paymentTerms": "xyz789",
"pdfFileId": "xyz789",
"pdfGeneratedAt": "abc123",
"pdfUrl": "abc123",
"poNumber": "abc123",
"receiptCount": 123,
"remainingQuantity": 123,
"sendCount": 123,
"sentAt": "xyz789",
"sentTo": "abc123",
"shipToWarehouseId": 4,
"shippingAddress": "abc123",
"shippingCity": "xyz789",
"shippingCost": "xyz789",
"shippingCountry": "xyz789",
"shippingMethod": "xyz789",
"shippingPostalCode": "xyz789",
"shippingState": "abc123",
"status": "CANCELLED",
"subtotal": "abc123",
"supplierId": "4",
"taxAmount": "xyz789",
"totalCost": "abc123",
"totalQuantityOrdered": 123,
"totalQuantityReceived": 123,
"trackingNumber": "xyz789",
"trackingUrl": "abc123",
"updatedAt": "xyz789"
}
}
}
updatePurchaseOrderItem
Description
Update a purchase order item
Required scope: purchase-orders:update
Response
Returns a PurchaseOrderItem
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdatePurchaseOrderItemInput!
|
Example
Query
mutation updatePurchaseOrderItem(
$id: ID!,
$input: UpdatePurchaseOrderItemInput!
) {
updatePurchaseOrderItem(
id: $id,
input: $input
) {
InventoryReceiptItems {
...InventoryReceiptItemFragment
}
Product {
...ProductFragment
}
PurchasableItem {
...PurchasableItemFragment
}
PurchaseOrder {
...PurchaseOrderFragment
}
SourcingListing {
...SourcingListingFragment
}
createdAt
id
itemName
itemSku
itemType
lineTotal
notes
productId
productVariantId
purchasableItemId
purchaseOrderId
quantityOrdered
quantityOutstanding
quantityReceived
sourcingListingId
supplierSku
unitCost
unitCostOverridden
updatedAt
}
}
Variables
{"id": 4, "input": UpdatePurchaseOrderItemInput}
Response
{
"data": {
"updatePurchaseOrderItem": {
"InventoryReceiptItems": [InventoryReceiptItem],
"Product": Product,
"PurchasableItem": PurchasableItem,
"PurchaseOrder": PurchaseOrder,
"SourcingListing": SourcingListing,
"createdAt": "abc123",
"id": 4,
"itemName": "abc123",
"itemSku": "xyz789",
"itemType": "xyz789",
"lineTotal": "xyz789",
"notes": "xyz789",
"productId": 4,
"productVariantId": 4,
"purchasableItemId": "4",
"purchaseOrderId": 4,
"quantityOrdered": 123,
"quantityOutstanding": 987,
"quantityReceived": 123,
"sourcingListingId": 4,
"supplierSku": "abc123",
"unitCost": "abc123",
"unitCostOverridden": false,
"updatedAt": "xyz789"
}
}
}
updateReceiptItem
Description
Update an inventory receipt item
Required scope: inventory:receive
Response
Returns an InventoryReceiptItem
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateReceiptItemInput!
|
Example
Query
mutation updateReceiptItem(
$id: ID!,
$input: UpdateReceiptItemInput!
) {
updateReceiptItem(
id: $id,
input: $input
) {
InventoryReceipt {
...InventoryReceiptFragment
}
Product {
...ProductFragment
}
PurchasableItem {
...PurchasableItemFragment
}
PurchaseOrderItem {
...PurchaseOrderItemFragment
}
WarehouseBin {
...WarehouseBinFragment
}
batchNumber
binLocation
createdAt
expiryDate
id
inventoryReceiptId
itemName
itemSku
itemType
lineTotal
lotNumber
notes
productId
purchasableItemId
purchaseOrderItemId
quantityAccepted
quantityDamaged
quantityExpected
quantityReceived
quantityRejected
unitCost
updatedAt
varianceReason
warehouseBinId
}
}
Variables
{"id": 4, "input": UpdateReceiptItemInput}
Response
{
"data": {
"updateReceiptItem": {
"InventoryReceipt": InventoryReceipt,
"Product": Product,
"PurchasableItem": PurchasableItem,
"PurchaseOrderItem": PurchaseOrderItem,
"WarehouseBin": WarehouseBin,
"batchNumber": "abc123",
"binLocation": "abc123",
"createdAt": "abc123",
"expiryDate": "abc123",
"id": "4",
"inventoryReceiptId": "4",
"itemName": "xyz789",
"itemSku": "abc123",
"itemType": "xyz789",
"lineTotal": "xyz789",
"lotNumber": "xyz789",
"notes": "abc123",
"productId": "xyz789",
"purchasableItemId": "abc123",
"purchaseOrderItemId": "xyz789",
"quantityAccepted": 123,
"quantityDamaged": 987,
"quantityExpected": 987,
"quantityReceived": 123,
"quantityRejected": 123,
"unitCost": "xyz789",
"updatedAt": "abc123",
"varianceReason": "abc123",
"warehouseBinId": "abc123"
}
}
}
updateSourcingListing
Description
Update a sourcing listing. Omitting priceBreaks leaves the ladder alone; passing it replaces the ladder wholesale.
Required scope: suppliers:update
Response
Returns a SourcingListing
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateSourcingListingInput!
|
Example
Query
mutation updateSourcingListing(
$id: ID!,
$input: UpdateSourcingListingInput!
) {
updateSourcingListing(
id: $id,
input: $input
) {
PriceBreaks {
...SourcingListingPriceBreakFragment
}
Product {
...ProductFragment
}
ProductVariant {
...ProductVariantFragment
}
PurchaseOrderItems {
...PurchaseOrderItemFragment
}
Supplier {
...SupplierFragment
}
createdAt
currency
freeShippingThreshold
id
isActive
isPrimary
lastOrderedAt
lastVerifiedAt
leadTimeDays
listingUrl
minimumOrderQuantity
notes
organizationId
packSize
productId
productVariantId
quoteAt {
...SourcingQuoteFragment
}
shippingFee
supplierId
supplierProductName
supplierSku
updatedAt
}
}
Variables
{"id": 4, "input": UpdateSourcingListingInput}
Response
{
"data": {
"updateSourcingListing": {
"PriceBreaks": [SourcingListingPriceBreak],
"Product": Product,
"ProductVariant": ProductVariant,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"createdAt": "abc123",
"currency": "abc123",
"freeShippingThreshold": "xyz789",
"id": 4,
"isActive": true,
"isPrimary": false,
"lastOrderedAt": "abc123",
"lastVerifiedAt": "xyz789",
"leadTimeDays": 123,
"listingUrl": "abc123",
"minimumOrderQuantity": 987,
"notes": "xyz789",
"organizationId": 4,
"packSize": 123,
"productId": 4,
"productVariantId": 4,
"quoteAt": SourcingQuote,
"shippingFee": "xyz789",
"supplierId": "4",
"supplierProductName": "abc123",
"supplierSku": "abc123",
"updatedAt": "xyz789"
}
}
}
updateSupplementalFulfillment
Description
Update measurements/reason/carrier on an in-flight supplemental package
Required scope: orders:update
Response
Returns a FulfillmentPackage
Arguments
| Name | Description |
|---|---|
input - UpdateSupplementalFulfillmentInput!
|
Example
Query
mutation updateSupplementalFulfillment($input: UpdateSupplementalFulfillmentInput!) {
updateSupplementalFulfillment(input: $input) {
Images {
...FulfillmentImageFragment
}
Order {
...OrderFragment
}
PackageItems {
...FulfillmentPackageItemFragment
}
actualDeliveryDate
calculatedWeight
canRetryFulfillment
cancelReason
cancelledAt
cancelledById
carrier
carrierConnectionId
carrierStatusCode
carrierStatusDescription
combinedAt
combinedById
combinedWithOrderIds
confirmationCost
createdAt
customerNotified
customerNotifiedAt
customsInvoiceFile {
...FileFragment
}
customsSubmittedElectronically
declaredWeight
deliveredAt
estimatedDeliveryDate
externalLabelId
externalShipmentId
fulfillmentCompletedAt
fulfillmentError
fulfillmentErrorStep
fulfillmentStartedAt
fulfillmentStatusEnum
handoffMethod
handoffNote
hasLabel
height
id
insuranceCost
isDelivered
isManualFulfillment
isSupplemental
labelFile {
...FileFragment
}
labelFileId
labelFormat
labelPrintedAt
labelPurchasedAt
labelPurchasedById
labelUrl
labelVoidedAt
length
manualFulfillmentReason
notifyCustomer
orderId
organizationId
packageNumber
printFirstPageOnly
scaleWeight
serviceCode
serviceName
serviceOptions
shipmentGroupId
shipmentGroupRole
shippedAt
shippingCost
shopifyFulfillmentId
shopifyLastSyncAt
shopifyLastSyncError
shopifySyncAttempts
stationeryTareGrams
stationeryType
stationeryTypeId
status
stepLabelPrintStatus
stepLabelPurchaseStatus
stepLocalFulfillmentStatus
stepStoreSyncStatus
supplementalReason
trackingException
trackingLastUpdatedAt
trackingNumber
trackingStatus
trackingStatusDescription
trackingUrl
uncombinedAt
uncombinedById
uncombinedReason
updatedAt
width
}
}
Variables
{"input": UpdateSupplementalFulfillmentInput}
Response
{
"data": {
"updateSupplementalFulfillment": {
"Images": [FulfillmentImage],
"Order": Order,
"PackageItems": [FulfillmentPackageItem],
"actualDeliveryDate": "xyz789",
"calculatedWeight": "xyz789",
"canRetryFulfillment": false,
"cancelReason": "xyz789",
"cancelledAt": "abc123",
"cancelledById": "4",
"carrier": "xyz789",
"carrierConnectionId": "4",
"carrierStatusCode": "xyz789",
"carrierStatusDescription": "xyz789",
"combinedAt": "abc123",
"combinedById": "4",
"combinedWithOrderIds": "xyz789",
"confirmationCost": "abc123",
"createdAt": "abc123",
"customerNotified": false,
"customerNotifiedAt": "xyz789",
"customsInvoiceFile": File,
"customsSubmittedElectronically": true,
"declaredWeight": "xyz789",
"deliveredAt": "abc123",
"estimatedDeliveryDate": "abc123",
"externalLabelId": "abc123",
"externalShipmentId": "abc123",
"fulfillmentCompletedAt": "abc123",
"fulfillmentError": "abc123",
"fulfillmentErrorStep": "LABEL_PRINT",
"fulfillmentStartedAt": "abc123",
"fulfillmentStatusEnum": "COMPLETED",
"handoffMethod": "CARRIER_TRACKED",
"handoffNote": "abc123",
"hasLabel": false,
"height": "abc123",
"id": "4",
"insuranceCost": "xyz789",
"isDelivered": false,
"isManualFulfillment": false,
"isSupplemental": false,
"labelFile": File,
"labelFileId": "4",
"labelFormat": "abc123",
"labelPrintedAt": "xyz789",
"labelPurchasedAt": "abc123",
"labelPurchasedById": 4,
"labelUrl": "xyz789",
"labelVoidedAt": "xyz789",
"length": "abc123",
"manualFulfillmentReason": "xyz789",
"notifyCustomer": false,
"orderId": "4",
"organizationId": 4,
"packageNumber": 123,
"printFirstPageOnly": false,
"scaleWeight": "abc123",
"serviceCode": "abc123",
"serviceName": "xyz789",
"serviceOptions": "xyz789",
"shipmentGroupId": "4",
"shipmentGroupRole": "xyz789",
"shippedAt": "abc123",
"shippingCost": "abc123",
"shopifyFulfillmentId": "abc123",
"shopifyLastSyncAt": "abc123",
"shopifyLastSyncError": "abc123",
"shopifySyncAttempts": 987,
"stationeryTareGrams": "abc123",
"stationeryType": "xyz789",
"stationeryTypeId": 4,
"status": "CANCELLED",
"stepLabelPrintStatus": "COMPLETED",
"stepLabelPurchaseStatus": "COMPLETED",
"stepLocalFulfillmentStatus": "COMPLETED",
"stepStoreSyncStatus": "COMPLETED",
"supplementalReason": "xyz789",
"trackingException": "abc123",
"trackingLastUpdatedAt": "xyz789",
"trackingNumber": "xyz789",
"trackingStatus": "abc123",
"trackingStatusDescription": "xyz789",
"trackingUrl": "xyz789",
"uncombinedAt": "xyz789",
"uncombinedById": "4",
"uncombinedReason": "abc123",
"updatedAt": "abc123",
"width": "abc123"
}
}
}
updateSupplier
Description
Update an existing supplier
Required scope: suppliers:update
Response
Returns a Supplier
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - UpdateSupplierInput!
|
Example
Query
mutation updateSupplier(
$id: ID!,
$input: UpdateSupplierInput!
) {
updateSupplier(
id: $id,
input: $input
) {
Organization {
...OrganizationFragment
}
PurchaseOrders {
...PurchaseOrderFragment
}
SourcingListings {
...SourcingListingFragment
}
address
city
code
contactEmail
contactName
contactPhone
country
countryCode
createdAt
currency
description
id
isActive
leadTimeDays
metadata
minimumOrderValue
name
notes
organizationId
paymentTerms
postalCode
productCount
purchaseOrderCount
purchasePortalUrl
rating
shippingMethod
state
updatedAt
website
}
}
Variables
{"id": 4, "input": UpdateSupplierInput}
Response
{
"data": {
"updateSupplier": {
"Organization": Organization,
"PurchaseOrders": [PurchaseOrder],
"SourcingListings": [SourcingListing],
"address": "abc123",
"city": "abc123",
"code": "abc123",
"contactEmail": "xyz789",
"contactName": "abc123",
"contactPhone": "abc123",
"country": "abc123",
"countryCode": "xyz789",
"createdAt": "abc123",
"currency": "abc123",
"description": "abc123",
"id": "4",
"isActive": true,
"leadTimeDays": 123,
"metadata": "abc123",
"minimumOrderValue": "xyz789",
"name": "abc123",
"notes": "xyz789",
"organizationId": 4,
"paymentTerms": "xyz789",
"postalCode": "abc123",
"productCount": 987,
"purchaseOrderCount": 123,
"purchasePortalUrl": "abc123",
"rating": 123,
"shippingMethod": "xyz789",
"state": "xyz789",
"updatedAt": "abc123",
"website": "xyz789"
}
}
}
updateWarehouseHierarchyLabels
Description
Update the hierarchy level label aliases (Area/Row/Bay/Shelf/Bin) for a warehouse location
Required scope: warehouse:update
Response
Returns a WarehouseLocation
Arguments
| Name | Description |
|---|---|
input - UpdateWarehouseHierarchyLabelsInput!
|
Example
Query
mutation updateWarehouseHierarchyLabels($input: UpdateWarehouseHierarchyLabelsInput!) {
updateWarehouseHierarchyLabels(input: $input) {
address
areaLabel
areas {
...WarehouseAreaFragment
}
bayLabel
binLabel
binNamingPattern
city
contactEmail
contactName
contactPhone
country
countryCode
createdAt
defaultBayNumLevels
description
id
isActive
isPrimary
labelReturnAddressType
labelSenderAddressType
mailingAddress {
...AddressFragment
}
metadata
name
organizationId
physicalAddress {
...AddressFragment
}
postalCode
rowLabel
shelfLabel
showOnContactPage
state
stationeryStock {
...StationeryLocationStockFragment
}
storeConnections {
...WarehouseStoreConnectionFragment
}
updatedAt
}
}
Variables
{"input": UpdateWarehouseHierarchyLabelsInput}
Response
{
"data": {
"updateWarehouseHierarchyLabels": {
"address": "abc123",
"areaLabel": "xyz789",
"areas": [WarehouseArea],
"bayLabel": "abc123",
"binLabel": "abc123",
"binNamingPattern": "abc123",
"city": "xyz789",
"contactEmail": "xyz789",
"contactName": "xyz789",
"contactPhone": "abc123",
"country": "abc123",
"countryCode": "abc123",
"createdAt": "abc123",
"defaultBayNumLevels": 123,
"description": "abc123",
"id": 4,
"isActive": false,
"isPrimary": true,
"labelReturnAddressType": "MAILING",
"labelSenderAddressType": "MAILING",
"mailingAddress": Address,
"metadata": {},
"name": "xyz789",
"organizationId": "4",
"physicalAddress": Address,
"postalCode": "abc123",
"rowLabel": "abc123",
"shelfLabel": "xyz789",
"showOnContactPage": false,
"state": "abc123",
"stationeryStock": [StationeryLocationStock],
"storeConnections": [WarehouseStoreConnection],
"updatedAt": "xyz789"
}
}
}
verifyCustomerOrderCode
Description
Submit the emailed verification code. On success this browser receives a cookie that unlocks the order details for 30 days.
Response
Returns a CustomerOrderCodeVerifyResult!
Example
Query
mutation verifyCustomerOrderCode(
$code: String!,
$token: String!
) {
verifyCustomerOrderCode(
code: $code,
token: $token
) {
attemptsRemaining
retryAfterSeconds
status
}
}
Variables
{
"code": "abc123",
"token": "xyz789"
}
Response
{
"data": {
"verifyCustomerOrderCode": {
"attemptsRemaining": 123,
"retryAfterSeconds": 123,
"status": "EXPIRED"
}
}
}
verifyEmail
Description
Verify email address with token from verification email
Response
Returns a VerificationRequest
Arguments
| Name | Description |
|---|---|
token - String!
|
Example
Query
mutation verifyEmail($token: String!) {
verifyEmail(token: $token) {
canRequestNewLink
code
message
success
}
}
Variables
{"token": "abc123"}
Response
{
"data": {
"verifyEmail": {
"canRequestNewLink": true,
"code": "xyz789",
"message": "xyz789",
"success": false
}
}
}
Types
AddProductImageFromUrlInput
AddProductImageInput
AddPurchaseOrderItemInput
Fields
| Input Field | Description |
|---|---|
notes - String
|
|
productVariantId - ID
|
The variant being bought. Preferred over purchasableItemId — the purchasing record is created on demand if the variant has none. Exactly one of the two is required. |
purchasableItemId - ID
|
An existing purchasing record (the only way to order STATIONERY). Exactly one of this and productVariantId is required. |
purchaseOrderId - ID!
|
|
quantityOrdered - Int!
|
|
sourcingListingId - ID
|
|
unitCost - String!
|
Example
{
"notes": "abc123",
"productVariantId": 4,
"purchasableItemId": 4,
"purchaseOrderId": "4",
"quantityOrdered": 987,
"sourcingListingId": 4,
"unitCost": "xyz789"
}
AddReceiptItemInput
Fields
| Input Field | Description |
|---|---|
batchNumber - String
|
|
binLocation - String
|
|
expiryDate - String
|
|
inventoryReceiptId - ID!
|
|
lotNumber - String
|
|
notes - String
|
|
purchasableItemId - ID!
|
|
purchaseOrderItemId - ID
|
|
quantityDamaged - Int
|
|
quantityReceived - Int!
|
|
quantityRejected - Int
|
|
unitCost - String
|
|
varianceReason - String
|
|
warehouseBinId - ID
|
Example
{
"batchNumber": "abc123",
"binLocation": "xyz789",
"expiryDate": "xyz789",
"inventoryReceiptId": "4",
"lotNumber": "xyz789",
"notes": "xyz789",
"purchasableItemId": 4,
"purchaseOrderItemId": "4",
"quantityDamaged": 123,
"quantityReceived": 123,
"quantityRejected": 123,
"unitCost": "xyz789",
"varianceReason": "abc123",
"warehouseBinId": 4
}
Address
Description
A reusable address record (physical or mailing)
Fields
| Field Name | Description |
|---|---|
address - String
|
|
address2 - String
|
|
city - String
|
|
contactEmail - String
|
|
contactName - String
|
|
contactPhone - String
|
|
country - String
|
|
countryCode - String
|
|
createdAt - String
|
|
id - ID
|
|
label - String
|
|
organizationId - ID
|
|
postalCode - String
|
|
state - String
|
|
stateCode - String
|
|
updatedAt - String
|
Example
{
"address": "xyz789",
"address2": "abc123",
"city": "abc123",
"contactEmail": "abc123",
"contactName": "abc123",
"contactPhone": "abc123",
"country": "xyz789",
"countryCode": "xyz789",
"createdAt": "abc123",
"id": "4",
"label": "xyz789",
"organizationId": 4,
"postalCode": "abc123",
"state": "xyz789",
"stateCode": "abc123",
"updatedAt": "xyz789"
}
AddressInput
Example
{
"address1": "xyz789",
"address2": "abc123",
"city": "xyz789",
"company": "xyz789",
"country": "xyz789",
"countryCode": "abc123",
"firstName": "xyz789",
"lastName": "xyz789",
"phone": "xyz789",
"postalCode": "abc123",
"province": "abc123",
"state": "abc123",
"zip": "xyz789"
}
Agent
Description
A desktop agent install that owns the devices curated on it
Example
{
"agentUid": "abc123",
"agentVersion": "abc123",
"createdAt": "xyz789",
"devices": [Device],
"id": "4",
"lastSeen": "abc123",
"name": "abc123",
"orgId": "xyz789",
"updatedAt": "xyz789"
}
AllocationStatus
Description
Status of order-warehouse allocation for fulfillment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ALLOCATED"
AsyncJobResponse
Description
Immediate response when an async job is enqueued
Fields
| Field Name | Description |
|---|---|
jobId - ID
|
|
message - String
|
|
status - AsyncJobStatus
|
Example
{
"jobId": "4",
"message": "abc123",
"status": "COMPLETED"
}
AsyncJobStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"COMPLETED"
AuthPayload
Description
Login/signup result with token and user info
Fields
| Field Name | Description |
|---|---|
expiresAt - String
|
|
requiresEmailVerification - Boolean
|
True when the account was created but no session was issued: the user must verify their email, then sign in. token, expiresAt and user are null. |
requiresMfaSetup - Boolean
|
|
requiresPasskeySetup - Boolean
|
True when the organization has passkeyRequired enabled and the user has no passkeys yet — the client should redirect to passkey setup. |
token - String
|
|
user - User
|
Example
{
"expiresAt": "abc123",
"requiresEmailVerification": true,
"requiresMfaSetup": false,
"requiresPasskeySetup": false,
"token": "xyz789",
"user": User
}
AuthenticatorSelection
Boolean
Description
The Boolean scalar type represents true or false.
Example
true
BundlePricingType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CALCULATED"
ChannelSyncJob
Description
A product push to a channel, as returned by syncProductToChannel.
Fields
| Field Name | Description |
|---|---|
completedAt - String
|
|
createdAt - String
|
|
error - String
|
|
id - ID
|
|
status - String
|
QUEUED, PROCESSING, COMPLETED, COMPLETED_WITH_ERRORS or FAILED. There is one job per product and channel: the push connectProductToChannel queues is that job, and syncProductToChannel returns it, joining a push already queued.
|
Example
{
"completedAt": "xyz789",
"createdAt": "abc123",
"error": "abc123",
"id": "4",
"status": "abc123"
}
ClearPreferredBinResult
CommentAuthor
Fields
| Field Name | Description |
|---|---|
email - String
|
|
firstName - String
|
|
id - String
|
|
isDeletedUser - Boolean!
|
True when the comment's author has since been deleted (SKU-1241). The comment is kept; id/name/email are what was recorded when it was written, and the name is marked "(deleted user)". firstName/lastName are null. |
lastName - String
|
|
name - String
|
|
profilePicture - String
|
Example
{
"email": "xyz789",
"firstName": "abc123",
"id": "abc123",
"isDeletedUser": false,
"lastName": "xyz789",
"name": "abc123",
"profilePicture": "xyz789"
}
ComponentLocation
Description
Location of a kit component in the warehouse
Fields
| Field Name | Description |
|---|---|
areaId - String
|
|
areaName - String
|
|
bayId - String
|
The bay (rack frame) holding this component |
bayName - String
|
The bay (rack frame) holding this component |
binId - String
|
|
binName - String
|
|
locationPath - String
|
Full readable address, e.g. "Zone A > Row 2 > Bay 1 > Level 3 > Bin 3". The same string ProductLocationInventory.locationPath returns for this placement — prefer it over joining the id/name fields, which cannot express a row. |
quantityAtLocation - Int
|
|
rowId - String
|
The row holding the bay; null when the bay is not in a row |
rowName - String
|
The row holding the bay; null when the bay is not in a row |
shelfId - String
|
Deprecated alias of bayId — still carries the BAY, not the tier. A shelf is now a tier within a bay (SKU-1494). Use bayId. |
shelfName - String
|
Deprecated alias of bayName — still carries the BAY, not the tier. A shelf is now a tier within a bay (SKU-1494). Use bayName. |
warehouseLocationId - String
|
|
warehouseLocationName - String
|
Example
{
"areaId": "abc123",
"areaName": "xyz789",
"bayId": "xyz789",
"bayName": "abc123",
"binId": "abc123",
"binName": "abc123",
"locationPath": "xyz789",
"quantityAtLocation": 123,
"rowId": "xyz789",
"rowName": "abc123",
"shelfId": "abc123",
"shelfName": "xyz789",
"warehouseLocationId": "abc123",
"warehouseLocationName": "abc123"
}
ConfirmProductImageUploadInput
CreateInventoryReceiptInput
Fields
| Input Field | Description |
|---|---|
items - [InventoryReceiptItemInput!]!
|
|
notes - String
|
|
purchaseOrderId - ID
|
|
receivedDate - String
|
|
warehouseLocationId - ID!
|
Example
{
"items": [InventoryReceiptItemInput],
"notes": "xyz789",
"purchaseOrderId": "4",
"receivedDate": "abc123",
"warehouseLocationId": "4"
}
CreateOrderInput
Fields
| Input Field | Description |
|---|---|
billingAddress - AddressInput
|
|
cancelReason - String
|
|
cancelledAt - String
|
|
capturedAmount - String
|
|
carrier - String
|
|
closedAt - String
|
|
confirmed - Boolean
|
|
currency - String!
|
|
currentShippingCost - String
|
|
customerId - ID
|
|
customerIp - String
|
|
customerNotes - String
|
|
deliveredAt - String
|
|
discountAmount - String
|
|
discountCodes - JSON
|
|
email - String
|
|
exchangeRate - String
|
|
fulfilledAt - String
|
|
fulfillmentGroups - [FulfillmentGroupInput!]
|
|
fulfillmentStatus - String
|
|
importCharges - ImportChargesFactInput
|
|
internalNotes - String
|
|
lineItems - [LineItemInput!]
|
|
metadata - JSON
|
|
notifyCustomerOnRefund - Boolean
|
|
orderDate - String
|
|
orderNumber - String!
|
|
organizationId - ID!
|
|
paidAt - String
|
|
paymentGateway - String
|
|
paymentMethod - String
|
|
paymentStatus - String
|
|
phone - String
|
|
presentmentCapturedAmount - String
|
|
presentmentCurrency - String
|
|
presentmentCurrentShippingCost - String
|
|
presentmentDiscountAmount - String
|
|
presentmentRefundedAmount - String
|
|
presentmentShippingCost - String
|
|
presentmentShippingDiscountAmount - String
|
|
presentmentSubtotal - String
|
|
presentmentTaxAmount - String
|
|
presentmentTotalAmount - String
|
|
processedAt - String
|
|
refundedAmount - String
|
|
refunds - JSON
|
|
restockOnCancel - Boolean
|
|
riskAssessmentDetails - JSON
|
|
riskLevel - String
|
|
riskRecommendation - String
|
|
shippingAddress - AddressInput
|
|
shippingCost - String
|
|
shippingDiscountAmount - String
|
|
shippingLines - JSON
|
|
shippingMethod - String
|
|
shopifyOrderId - String
|
|
shopifyOrderNumber - String
|
|
shopifyUpdatedAt - String
|
|
source - String
|
|
status - String
|
|
storeId - String
|
|
subtotal - String!
|
|
tags - [String!]
|
|
taxAmount - String
|
|
taxLines - [OrderTaxLineInput!]
|
|
taxesIncluded - Boolean
|
|
totalAmount - String!
|
|
trackingNumber - String
|
|
trackingUrl - String
|
|
transactions - JSON
|
Example
{
"billingAddress": AddressInput,
"cancelReason": "xyz789",
"cancelledAt": "abc123",
"capturedAmount": "xyz789",
"carrier": "xyz789",
"closedAt": "abc123",
"confirmed": false,
"currency": "xyz789",
"currentShippingCost": "xyz789",
"customerId": 4,
"customerIp": "abc123",
"customerNotes": "xyz789",
"deliveredAt": "xyz789",
"discountAmount": "xyz789",
"discountCodes": {},
"email": "abc123",
"exchangeRate": "abc123",
"fulfilledAt": "xyz789",
"fulfillmentGroups": [FulfillmentGroupInput],
"fulfillmentStatus": "xyz789",
"importCharges": ImportChargesFactInput,
"internalNotes": "abc123",
"lineItems": [LineItemInput],
"metadata": {},
"notifyCustomerOnRefund": false,
"orderDate": "xyz789",
"orderNumber": "abc123",
"organizationId": "4",
"paidAt": "abc123",
"paymentGateway": "xyz789",
"paymentMethod": "abc123",
"paymentStatus": "abc123",
"phone": "abc123",
"presentmentCapturedAmount": "abc123",
"presentmentCurrency": "xyz789",
"presentmentCurrentShippingCost": "xyz789",
"presentmentDiscountAmount": "xyz789",
"presentmentRefundedAmount": "xyz789",
"presentmentShippingCost": "abc123",
"presentmentShippingDiscountAmount": "abc123",
"presentmentSubtotal": "xyz789",
"presentmentTaxAmount": "xyz789",
"presentmentTotalAmount": "abc123",
"processedAt": "abc123",
"refundedAmount": "xyz789",
"refunds": {},
"restockOnCancel": false,
"riskAssessmentDetails": {},
"riskLevel": "xyz789",
"riskRecommendation": "abc123",
"shippingAddress": AddressInput,
"shippingCost": "abc123",
"shippingDiscountAmount": "abc123",
"shippingLines": {},
"shippingMethod": "xyz789",
"shopifyOrderId": "abc123",
"shopifyOrderNumber": "xyz789",
"shopifyUpdatedAt": "xyz789",
"source": "abc123",
"status": "abc123",
"storeId": "abc123",
"subtotal": "xyz789",
"tags": ["xyz789"],
"taxAmount": "xyz789",
"taxLines": [OrderTaxLineInput],
"taxesIncluded": false,
"totalAmount": "xyz789",
"trackingNumber": "abc123",
"trackingUrl": "xyz789",
"transactions": {}
}
CreateOrderRefundInput
Example
{
"amount": "abc123",
"notifyCustomerOnRefund": false,
"orderId": "4",
"organizationId": "4",
"reason": "xyz789",
"refundLineItems": [CreateOrderRefundLineItemInput],
"refundShipping": false,
"restock": false
}
CreateOrderRefundLineItemInput
CreateProductInput
Description
Prices, weight and dimensions are decimal strings, such as "19.95" or "18", so no precision is lost; a JSON number is refused. Weight is in grams and dimensions in millimetres.
Fields
| Input Field | Description |
|---|---|
allowBackorder - Boolean
|
|
barcode - String
|
|
basePrice - String
|
|
brand - String
|
|
bundleItems - [ProductBundleItemInput!]
|
|
bundlePricing - String
|
|
category - String
|
|
compareAtPrice - String
|
|
costPrice - String
|
|
countryOfOrigin - String
|
|
customsDescription - String
|
|
description - String
|
|
dimensionUnit - String
|
|
handle - String
|
|
hasOnlyDefaultVariant - Boolean
|
|
height - String
|
|
hsCode - String
|
|
isGiftCard - Boolean
|
|
length - String
|
|
lowStockThreshold - Int
|
|
metaDescription - String
|
|
metaTitle - String
|
|
option1Name - String
|
|
option1Values - [String!]
|
|
option2Name - String
|
|
option2Values - [String!]
|
|
option3Name - String
|
|
option3Values - [String!]
|
|
organizationId - ID!
|
|
primaryImageId - ID
|
|
productType - String
|
|
provinceOfOrigin - String
|
|
publishedAt - String
|
|
quantity - Int
|
|
requiresShipping - Boolean
|
|
reservedQuantity - Int
|
|
shopifyUpdatedAt - String
|
|
sku - String
|
|
slug - String
|
|
status - String
|
|
supplierId - ID
|
|
tags - [String!]
|
|
taxCode - String
|
|
taxable - Boolean
|
|
title - String!
|
|
trackInventory - Boolean
|
|
type - String
|
|
weight - String
|
|
weightUnit - String
|
|
width - String
|
Example
{
"allowBackorder": true,
"barcode": "abc123",
"basePrice": "abc123",
"brand": "abc123",
"bundleItems": [ProductBundleItemInput],
"bundlePricing": "xyz789",
"category": "abc123",
"compareAtPrice": "abc123",
"costPrice": "xyz789",
"countryOfOrigin": "abc123",
"customsDescription": "abc123",
"description": "xyz789",
"dimensionUnit": "xyz789",
"handle": "xyz789",
"hasOnlyDefaultVariant": false,
"height": "xyz789",
"hsCode": "abc123",
"isGiftCard": false,
"length": "xyz789",
"lowStockThreshold": 987,
"metaDescription": "abc123",
"metaTitle": "abc123",
"option1Name": "xyz789",
"option1Values": ["abc123"],
"option2Name": "abc123",
"option2Values": ["abc123"],
"option3Name": "xyz789",
"option3Values": ["xyz789"],
"organizationId": "4",
"primaryImageId": "4",
"productType": "abc123",
"provinceOfOrigin": "abc123",
"publishedAt": "abc123",
"quantity": 123,
"requiresShipping": true,
"reservedQuantity": 123,
"shopifyUpdatedAt": "abc123",
"sku": "xyz789",
"slug": "xyz789",
"status": "abc123",
"supplierId": "4",
"tags": ["xyz789"],
"taxCode": "abc123",
"taxable": false,
"title": "xyz789",
"trackInventory": true,
"type": "xyz789",
"weight": "xyz789",
"weightUnit": "abc123",
"width": "abc123"
}
CreateProductVariantInput
Fields
| Input Field | Description |
|---|---|
allowBackorder - Boolean
|
|
barcode - String
|
|
basePrice - String
|
|
compareAtPrice - String
|
|
costPrice - String
|
|
countryOfOrigin - String
|
|
customsDescription - String
|
|
dimensionUnit - String
|
|
height - String
|
|
hsCode - String
|
|
length - String
|
|
lowStockThreshold - Int
|
|
option1Value - String
|
|
option2Value - String
|
|
option3Value - String
|
|
organizationId - ID!
|
|
position - Int
|
|
primaryImageId - String
|
|
productId - ID!
|
|
provinceOfOrigin - String
|
|
quantity - Int
|
|
requiresShipping - Boolean
|
|
sku - String
|
|
taxCode - String
|
|
taxable - Boolean
|
|
title - String!
|
|
trackInventory - Boolean
|
|
weight - String
|
|
weightUnit - String
|
|
width - String
|
Example
{
"allowBackorder": false,
"barcode": "abc123",
"basePrice": "xyz789",
"compareAtPrice": "xyz789",
"costPrice": "abc123",
"countryOfOrigin": "abc123",
"customsDescription": "xyz789",
"dimensionUnit": "xyz789",
"height": "xyz789",
"hsCode": "xyz789",
"length": "xyz789",
"lowStockThreshold": 123,
"option1Value": "abc123",
"option2Value": "xyz789",
"option3Value": "xyz789",
"organizationId": "4",
"position": 123,
"primaryImageId": "xyz789",
"productId": "4",
"provinceOfOrigin": "xyz789",
"quantity": 987,
"requiresShipping": false,
"sku": "xyz789",
"taxCode": "xyz789",
"taxable": true,
"title": "abc123",
"trackInventory": true,
"weight": "abc123",
"weightUnit": "abc123",
"width": "xyz789"
}
CreatePurchaseOrderInput
Fields
| Input Field | Description |
|---|---|
currency - String
|
ISO 4217 code. Omit to use the supplier's own currency; any value sent must be a currency code. |
exchangeRate - String
|
|
expectedDeliveryDate - String
|
|
internalNotes - String
|
|
items - [PurchaseOrderItemInput!]!
|
|
notes - String
|
|
otherCosts - String
|
Duties, fees and other order-level costs, in its currency. Same rules as taxAmount; part of totalCost. |
paymentTerms - String
|
This order's payment terms, free text (e.g. "Net 30"). Blank or omitted is stored as null — never copied from the supplier. |
shipToWarehouseId - ID
|
|
shippingAddress - String
|
|
shippingCity - String
|
|
shippingCost - String
|
Shipping charged on the order, in its currency. Same rules as taxAmount; part of totalCost. |
shippingCountry - String
|
|
shippingMethod - String
|
This order's shipping method, free text (e.g. "Sea freight"). Blank or omitted is stored as null — never copied from the supplier. |
shippingPostalCode - String
|
|
shippingState - String
|
|
supplierId - ID!
|
|
taxAmount - String
|
Tax on the order, in its currency: a plain non-negative decimal, rounded to 2 places. Part of totalCost. Omitted = 0, the column default; a value that does not parse (including "") is refused. |
Example
{
"currency": "xyz789",
"exchangeRate": "abc123",
"expectedDeliveryDate": "xyz789",
"internalNotes": "abc123",
"items": [PurchaseOrderItemInput],
"notes": "xyz789",
"otherCosts": "xyz789",
"paymentTerms": "xyz789",
"shipToWarehouseId": "4",
"shippingAddress": "abc123",
"shippingCity": "abc123",
"shippingCost": "abc123",
"shippingCountry": "abc123",
"shippingMethod": "abc123",
"shippingPostalCode": "xyz789",
"shippingState": "abc123",
"supplierId": "4",
"taxAmount": "xyz789"
}
CreateSourcingListingInput
Fields
| Input Field | Description |
|---|---|
currency - String
|
REQUIRED: the ISO 4217 code this listing is priced in (e.g. AUD). Nullable only for schema compatibility — a create without it is refused; nothing is defaulted. |
freeShippingThreshold - String
|
|
isPrimary - Boolean
|
|
leadTimeDays - Int
|
|
listingUrl - String
|
|
minimumOrderQuantity - Int
|
|
packSize - Int
|
|
priceBreaks - [SourcingPriceBreakInput!]
|
|
productId - ID!
|
|
productVariantId - ID
|
|
shippingFee - String
|
|
supplierId - ID
|
|
supplierProductName - String
|
|
supplierSku - String
|
Example
{
"currency": "abc123",
"freeShippingThreshold": "xyz789",
"isPrimary": true,
"leadTimeDays": 987,
"listingUrl": "abc123",
"minimumOrderQuantity": 123,
"packSize": 123,
"priceBreaks": [SourcingPriceBreakInput],
"productId": 4,
"productVariantId": "4",
"shippingFee": "xyz789",
"supplierId": 4,
"supplierProductName": "abc123",
"supplierSku": "abc123"
}
CreateSupplementalFulfillmentInput
Fields
| Input Field | Description |
|---|---|
carrier - String
|
Carrier connection ID |
declaredWeight - Float
|
Package weight in KG |
height - Float
|
Package height in cm |
items - [SupplementalItemInput!]!
|
|
length - Float
|
Package length in cm |
orderId - ID!
|
|
reason - String!
|
|
scaleWeight - Float
|
Scale-measured weight in KG |
serviceCode - String
|
Carrier service code |
serviceName - String
|
Carrier service display name |
stationeryType - String
|
Stationery/packaging type name |
stationeryTypeId - ID
|
Stationery record ID |
width - Float
|
Package width in cm |
Example
{
"carrier": "abc123",
"declaredWeight": 987.65,
"height": 123.45,
"items": [SupplementalItemInput],
"length": 123.45,
"orderId": 4,
"reason": "xyz789",
"scaleWeight": 987.65,
"serviceCode": "xyz789",
"serviceName": "xyz789",
"stationeryType": "xyz789",
"stationeryTypeId": "4",
"width": 987.65
}
CreateSupplierInput
Fields
| Input Field | Description |
|---|---|
address - String
|
|
city - String
|
|
code - String
|
|
contactEmail - String
|
|
contactName - String
|
|
contactPhone - String
|
|
country - String
|
|
countryCode - String
|
|
currency - String
|
REQUIRED: the ISO 4217 code you buy from this supplier in (e.g. AUD). Nullable only for schema compatibility — a create without it is refused; nothing is defaulted. |
description - String
|
|
isActive - Boolean
|
|
leadTimeDays - Int
|
|
minimumOrderValue - String
|
|
name - String!
|
|
notes - String
|
|
paymentTerms - String
|
|
postalCode - String
|
|
purchasePortalUrl - String
|
|
rating - Int
|
|
shippingMethod - String
|
|
state - String
|
|
website - String
|
Example
{
"address": "abc123",
"city": "abc123",
"code": "abc123",
"contactEmail": "xyz789",
"contactName": "xyz789",
"contactPhone": "abc123",
"country": "xyz789",
"countryCode": "abc123",
"currency": "xyz789",
"description": "abc123",
"isActive": true,
"leadTimeDays": 987,
"minimumOrderValue": "abc123",
"name": "abc123",
"notes": "abc123",
"paymentTerms": "abc123",
"postalCode": "xyz789",
"purchasePortalUrl": "xyz789",
"rating": 987,
"shippingMethod": "xyz789",
"state": "xyz789",
"website": "xyz789"
}
CurrentApiKey
Customer
Description
A customer with contact information and order history
Fields
| Field Name | Description |
|---|---|
Orders - [Order!]
|
|
activities - [CustomerActivity!]
|
Chronological timeline of customer activities |
Arguments
|
|
addresses - [CustomerAddress!]
|
All addresses associated with this customer (Shopify-aligned N-address model) |
averageOrderValue - String
|
|
comments - [CustomerComment!]
|
Comments on this customer |
Arguments
|
|
company - String
|
|
contactPersonEmail - String
|
|
contactPersonName - String
|
|
contactPersonPhone - String
|
|
contactPersonTitle - String
|
|
createdAt - String
|
|
customerSinceDays - Int
|
Number of days since customer was created |
customerType - String
|
|
displayName - String
|
Display name for the customer. BUSINESS: company, falling back to name (legacy column) or "Customer" if company is empty/whitespace. INDIVIDUAL: firstName + lastName, falling back to name (legacy column) or "Customer" if those are empty. Never falls back to the email address (SKU-1524). |
email - String
|
|
emailMarketingConsentUpdatedAt - String
|
|
emailMarketingOptInLevel - String
|
|
emailMarketingState - String
|
|
firstName - String
|
|
firstOrderDate - String
|
Date of the customer's first order |
hasCompleteDefaultAddress - Boolean
|
Whether the customer has a default address with all fields required for shipping (address1, city, province, zip, country) |
id - ID!
|
|
isActive - Boolean
|
|
lastName - String
|
|
lastOrderDate - String
|
Date of the customer's most recent order |
lastSyncedAt - String
|
|
locale - String
|
|
metadata - JSON
|
|
name - String
|
|
notes - String
|
|
orderCount - Int
|
Number of orders for this customer (computed from Orders relation) |
orderStats - CustomerOrderStats
|
Computed order statistics aggregated from actual orders |
organization - Organization
|
|
phone - String
|
|
recentOrders - [Order!]
|
Recent orders for this customer |
Arguments
|
|
shopifyCustomerId - String
|
|
shopifyTags - [String!]
|
|
smsMarketingConsentUpdatedAt - String
|
|
smsMarketingOptInLevel - String
|
|
smsMarketingState - String
|
|
state - CustomerState
|
|
syncError - String
|
|
syncStatus - SyncStatus
|
|
tags - [String!]
|
|
taxExempt - Boolean
|
|
totalSpent - String
|
|
totalSpentCurrency - String
|
|
updatedAt - String
|
|
verifiedEmail - Boolean
|
|
Example
{
"Orders": [Order],
"activities": [CustomerActivity],
"addresses": [CustomerAddress],
"averageOrderValue": "xyz789",
"comments": [CustomerComment],
"company": "xyz789",
"contactPersonEmail": "xyz789",
"contactPersonName": "xyz789",
"contactPersonPhone": "xyz789",
"contactPersonTitle": "abc123",
"createdAt": "xyz789",
"customerSinceDays": 123,
"customerType": "abc123",
"displayName": "xyz789",
"email": "abc123",
"emailMarketingConsentUpdatedAt": "xyz789",
"emailMarketingOptInLevel": "abc123",
"emailMarketingState": "xyz789",
"firstName": "abc123",
"firstOrderDate": "xyz789",
"hasCompleteDefaultAddress": true,
"id": 4,
"isActive": true,
"lastName": "abc123",
"lastOrderDate": "xyz789",
"lastSyncedAt": "abc123",
"locale": "xyz789",
"metadata": {},
"name": "abc123",
"notes": "abc123",
"orderCount": 123,
"orderStats": CustomerOrderStats,
"organization": Organization,
"phone": "abc123",
"recentOrders": [Order],
"shopifyCustomerId": "abc123",
"shopifyTags": ["abc123"],
"smsMarketingConsentUpdatedAt": "abc123",
"smsMarketingOptInLevel": "xyz789",
"smsMarketingState": "xyz789",
"state": "DECLINED",
"syncError": "abc123",
"syncStatus": "ERROR",
"tags": ["xyz789"],
"taxExempt": true,
"totalSpent": "abc123",
"totalSpentCurrency": "xyz789",
"updatedAt": "xyz789",
"verifiedEmail": false
}
CustomerActivity
Description
A single activity in the customer timeline
Example
{
"description": "xyz789",
"icon": "xyz789",
"id": "abc123",
"metadata": {},
"timestamp": "xyz789",
"title": "xyz789",
"type": "COMMENT_ADDED"
}
CustomerActivityType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"COMMENT_ADDED"
CustomerAddress
Description
A mailing address on a customer. Mirrors Shopify's MailingAddress under Customer.addressesV2. Each customer can have N addresses with at most one marked isDefault.
Fields
| Field Name | Description |
|---|---|
Customer - Customer
|
|
address1 - String
|
|
address2 - String
|
|
city - String
|
|
company - String
|
|
country - String
|
|
countryCodeV2 - String
|
|
createdAt - String
|
|
customerId - String
|
|
firstName - String
|
|
id - ID
|
|
isDefault - Boolean
|
|
lastName - String
|
|
lastSyncedAt - String
|
|
phone - String
|
|
province - String
|
|
provinceCode - String
|
|
shopifyAddressId - String
|
|
shopifyUpdatedAt - String
|
|
updatedAt - String
|
|
zip - String
|
Example
{
"Customer": Customer,
"address1": "xyz789",
"address2": "xyz789",
"city": "abc123",
"company": "xyz789",
"country": "xyz789",
"countryCodeV2": "abc123",
"createdAt": "xyz789",
"customerId": "xyz789",
"firstName": "xyz789",
"id": 4,
"isDefault": false,
"lastName": "abc123",
"lastSyncedAt": "abc123",
"phone": "xyz789",
"province": "xyz789",
"provinceCode": "abc123",
"shopifyAddressId": "abc123",
"shopifyUpdatedAt": "xyz789",
"updatedAt": "xyz789",
"zip": "abc123"
}
CustomerComment
Description
Internal comment on a customer
Fields
| Field Name | Description |
|---|---|
Author - User
|
|
Customer - Customer
|
|
authorEmailSnapshot - String
|
Email of the user who wrote the comment, recorded when it was written. |
authorId - String
|
|
authorIdSnapshot - String
|
Id of the user who wrote the comment, recorded when it was written. Still set after that user is deleted (authorId and Author are then null). |
authorNameSnapshot - String
|
Display name of the user who wrote the comment, recorded when it was written. Show it, marked as a deleted user, when Author is null. |
content - String
|
|
createdAt - String
|
|
customerId - String
|
|
id - ID
|
|
isInternal - Boolean
|
|
isPinned - Boolean
|
|
organizationId - String
|
|
updatedAt - String
|
Example
{
"Author": User,
"Customer": Customer,
"authorEmailSnapshot": "abc123",
"authorId": "xyz789",
"authorIdSnapshot": "xyz789",
"authorNameSnapshot": "xyz789",
"content": "abc123",
"createdAt": "abc123",
"customerId": "xyz789",
"id": 4,
"isInternal": true,
"isPinned": true,
"organizationId": "abc123",
"updatedAt": "xyz789"
}
CustomerOrderAddress
Description
A postal address on the order.
Example
{
"city": "abc123",
"company": "xyz789",
"country": "xyz789",
"line1": "abc123",
"line2": "xyz789",
"name": "xyz789",
"postalCode": "xyz789",
"state": "xyz789"
}
CustomerOrderCodeRequestResult
Description
Result of requesting a verification code for an order.
Fields
| Field Name | Description |
|---|---|
maskedEmail - String
|
Where the code was sent, with most of the local part hidden. |
retryAfterSeconds - Int
|
When rate limited, how long until another request may succeed. |
status - CustomerOrderCodeRequestStatus!
|
Example
{
"maskedEmail": "xyz789",
"retryAfterSeconds": 123,
"status": "INVALID_LINK"
}
CustomerOrderCodeRequestStatus
Description
Outcome of requesting a verification code.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"INVALID_LINK"
CustomerOrderCodeVerifyResult
Description
Result of submitting a verification code for an order.
Fields
| Field Name | Description |
|---|---|
attemptsRemaining - Int
|
|
retryAfterSeconds - Int
|
When rate limited, how long until another attempt may succeed. |
status - CustomerOrderCodeVerifyStatus!
|
Example
{"attemptsRemaining": 987, "retryAfterSeconds": 123, "status": "EXPIRED"}
CustomerOrderCodeVerifyStatus
Description
Outcome of submitting a verification code.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"EXPIRED"
CustomerOrderDetails
Description
The verified-only section: personal details, addresses, prices and photos. Only present once this browser has verified the order email.
Fields
| Field Name | Description |
|---|---|
billingAddress - CustomerOrderAddress!
|
|
customerName - String
|
|
invoice - CustomerOrderInvoiceStatus!
|
|
packagePhotos - [CustomerOrderPackagePhotos!]!
|
|
prices - CustomerOrderPrices!
|
|
shippingAddress - CustomerOrderAddress!
|
Example
{
"billingAddress": CustomerOrderAddress,
"customerName": "xyz789",
"invoice": CustomerOrderInvoiceStatus,
"packagePhotos": [CustomerOrderPackagePhotos],
"prices": CustomerOrderPrices,
"shippingAddress": CustomerOrderAddress
}
CustomerOrderInvoicePdf
CustomerOrderInvoiceStatus
Description
Whether a tax invoice can be downloaded for this order.
Fields
| Field Name | Description |
|---|---|
available - Boolean!
|
|
unavailableDetail - String
|
Staff preview only: what to do about it, e.g. "Save your tax details in Organization settings." Always null on the public page, and null when an invoice is available. |
unavailableReason - String
|
Staff preview only: why no invoice is available (order_cancelled, tax_id_not_set, tax_details_not_captured, presentment_amount_missing, does_not_reconcile). Always null on the public page, and null when an invoice is available. |
Example
{
"available": true,
"unavailableDetail": "abc123",
"unavailableReason": "xyz789"
}
CustomerOrderItem
CustomerOrderOrganization
CustomerOrderPackage
Description
One package of the order, with tracking and its contents.
Fields
| Field Name | Description |
|---|---|
carrier - String
|
|
contents - [CustomerOrderItem!]!
|
|
deliveredAt - String
|
ISO 8601. |
estimatedDeliveryDate - String
|
ISO 8601. |
packageNumber - Int!
|
|
shippedAt - String
|
ISO 8601. |
status - CustomerOrderPackageStatus!
|
|
trackingNumber - String
|
|
trackingUrl - String
|
Example
{
"carrier": "abc123",
"contents": [CustomerOrderItem],
"deliveredAt": "xyz789",
"estimatedDeliveryDate": "xyz789",
"packageNumber": 123,
"shippedAt": "abc123",
"status": "DELIVERED",
"trackingNumber": "xyz789",
"trackingUrl": "xyz789"
}
CustomerOrderPackagePhotos
Description
Packing photos for one package. Packages without photos are omitted.
Fields
| Field Name | Description |
|---|---|
packageNumber - Int!
|
|
photos - [CustomerOrderPhoto!]!
|
Example
{"packageNumber": 123, "photos": [CustomerOrderPhoto]}
CustomerOrderPackageStatus
Description
The status of one package, as shown to the customer.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"DELIVERED"
CustomerOrderPhoto
CustomerOrderPriceLine
Description
One priced product line. Amounts are decimal strings in the order currency.
Example
{
"description": "abc123",
"lineTotal": "xyz789",
"quantity": 987,
"sku": "xyz789",
"unitPrice": "abc123"
}
CustomerOrderPrices
Description
Order pricing. Amounts are decimal strings in the order currency.
Example
{
"currency": "abc123",
"discount": "abc123",
"lines": [CustomerOrderPriceLine],
"refunded": "xyz789",
"shipping": "xyz789",
"subtotal": "xyz789",
"tax": "abc123",
"taxesIncluded": false,
"total": "xyz789"
}
CustomerOrderStats
Description
Computed order statistics for a customer
Fields
| Field Name | Description |
|---|---|
averageOrderValue - String
|
Average order value, in currency (as string for precision) |
currency - String
|
ISO 4217 code every money figure here is in: the organisation's currency (other order currencies converted at the order's date), else the orders' one shared currency. Null when the orders are in several currencies and the organisation has none set. |
grossProfit - String
|
Item sales after discounts and refunds, excluding shipping and tax, minus the cost of goods for those items. Lines with no recorded cost are left out. |
grossProfitIsPartial - Boolean
|
grossProfit is not exact, for a reason in grossProfitReasons. See grossProfitPrecision for how to read it. |
grossProfitPrecision - GrossProfitPrecision
|
How far grossProfit can be relied on. |
grossProfitReasons - [GrossProfitReason!]
|
Why grossProfit is not exact. Empty when it is. |
itemsWithoutCost - Int
|
Number of line items without cost data (cannot calculate profit) |
orderCount - Int
|
Total number of orders |
ordersCancelled - Int
|
Number of cancelled orders |
totalCost - String
|
Total cost of goods sold for items with cost data |
totalSpent - String
|
Total amount spent, in currency (as string for precision). Null when there is no single currency to report in. |
unconvertedTotals - [CustomerSpendInCurrency!]!
|
Orders left out of the money figures (no exchange rate, or no single currency), per currency. |
Example
{
"averageOrderValue": "xyz789",
"currency": "abc123",
"grossProfit": "xyz789",
"grossProfitIsPartial": true,
"grossProfitPrecision": "APPROXIMATE",
"grossProfitReasons": ["INCOMPLETE_COST"],
"itemsWithoutCost": 987,
"orderCount": 987,
"ordersCancelled": 987,
"totalCost": "abc123",
"totalSpent": "xyz789",
"unconvertedTotals": [CustomerSpendInCurrency]
}
CustomerOrderStatus
Description
The order status shown to the customer.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CANCELLED"
CustomerOrderVerification
Description
Verification state of this browser for the order.
Fields
| Field Name | Description |
|---|---|
maskedEmail - String
|
The order email with most of the local part hidden. |
state - CustomerOrderVerificationState!
|
Example
{
"maskedEmail": "abc123",
"state": "NO_EMAIL"
}
CustomerOrderVerificationState
Description
Whether this browser has verified the order email. NO_EMAIL means the order has no email that a code could be sent to.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"NO_EMAIL"
CustomerOrderView
Description
What a customer sees for their order link. The details field is null until this browser verifies the order email.
Fields
| Field Name | Description |
|---|---|
details - CustomerOrderDetails
|
|
items - [CustomerOrderItem!]!
|
|
orderDate - String!
|
ISO 8601. |
orderNumber - String!
|
|
organization - CustomerOrderOrganization!
|
|
packages - [CustomerOrderPackage!]!
|
|
status - CustomerOrderStatus!
|
|
unshippedItems - [CustomerOrderItem!]!
|
|
verification - CustomerOrderVerification!
|
Example
{
"details": CustomerOrderDetails,
"items": [CustomerOrderItem],
"orderDate": "xyz789",
"orderNumber": "xyz789",
"organization": CustomerOrderOrganization,
"packages": [CustomerOrderPackage],
"status": "CANCELLED",
"unshippedItems": [CustomerOrderItem],
"verification": CustomerOrderVerification
}
CustomerSpendInCurrency
Description
Orders left out of a customer's money totals, with their total in their own currency: no exchange rate to the reporting currency, or no single currency to report in.
Example
{
"currency": "xyz789",
"orderCount": 123,
"total": "abc123"
}
CustomerState
Description
Shopify customer account state. Mirrors Customer.state from the Shopify Admin API.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"DECLINED"
DateRangeInput
DateTime
Example
"2007-12-03T10:15:30Z"
Device
Description
A printer, scale, or scanner registered by the in-house desktop agent
Fields
| Field Name | Description |
|---|---|
agent - Agent
|
|
agentDeviceId - String
|
|
apiKeyId - String
|
|
capabilities - JSON
|
|
config - JSON
|
Device configuration pushed by the agent (DPI, paper size, resolution, units, etc.) |
createdAt - String
|
|
id - ID
|
|
lastSeen - String
|
|
lastWeightAt - String
|
ISO-8601 timestamp of the most recent weight reading. |
lastWeightStatus - WeightStatus
|
Status reported with the most recent weight reading. |
mediaProfile - MediaProfile
|
Typed media profile parsed from config.mediaProfile (null until configured) |
name - String
|
|
orgId - String
|
|
printJobs - [PrintJob!]
|
|
status - DeviceStatus
|
|
type - DeviceType
|
|
updatedAt - String
|
|
weightGrams - Float
|
Most recent weight reading in grams. Null until the first valid reading is received. |
Example
{
"agent": Agent,
"agentDeviceId": "xyz789",
"apiKeyId": "abc123",
"capabilities": {},
"config": {},
"createdAt": "abc123",
"id": 4,
"lastSeen": "xyz789",
"lastWeightAt": "xyz789",
"lastWeightStatus": "ERROR",
"mediaProfile": MediaProfile,
"name": "abc123",
"orgId": "xyz789",
"printJobs": [PrintJob],
"status": "OFFLINE",
"type": "PRINTER",
"updatedAt": "xyz789",
"weightGrams": 123.45
}
DeviceStatus
Description
Live connectivity status of a registered device
Values
| Enum Value | Description |
|---|---|
|
|
The owning agent's WebSocket is disconnected, or the device was explicitly marked offline |
|
|
The owning agent's WebSocket is connected and the device is registered |
Example
"OFFLINE"
DeviceType
Description
Hardware device type managed by the in-house print agent
Values
| Enum Value | Description |
|---|---|
|
|
Label or document printer |
|
|
Weighing scale |
|
|
Barcode or document scanner |
Example
"PRINTER"
DimensionUnit
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"CM"
File
Description
A file stored in platform storage. Use storageUrl for public files and signedUrl for time-limited access to private files.
Fields
| Field Name | Description |
|---|---|
accessLevel - String
|
Access level: PUBLIC (accessible via storageUrl) or PRIVATE (requires signedUrl). |
createdAt - String
|
|
domain - String
|
Logical domain the file belongs to (e.g. product, fulfillment). |
fileSize - Int
|
File size in bytes. |
filename - String!
|
Original filename as stored. |
id - ID!
|
|
mimeType - String!
|
MIME type of the file (e.g. image/jpeg). |
organizationId - ID
|
|
originalName - String
|
Filename as provided at upload time. |
signedUrl - String
|
Time-limited signed URL for private files. Null for public files. URLs expire — do not cache. |
storagePath - String
|
|
storageUrl - String
|
Permanent public URL. Only valid when accessLevel is PUBLIC. |
updatedAt - String
|
Example
{
"accessLevel": "abc123",
"createdAt": "xyz789",
"domain": "abc123",
"fileSize": 987,
"filename": "xyz789",
"id": "4",
"mimeType": "abc123",
"organizationId": "4",
"originalName": "xyz789",
"signedUrl": "xyz789",
"storagePath": "xyz789",
"storageUrl": "abc123",
"updatedAt": "abc123"
}
Float
Description
The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
123.45
FulfillmentBlockReason
Description
Why an order line item cannot currently be fulfilled. Null when it can. SKU-1310.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"LINKED_BUT_FULFILMENT_DISABLED"
FulfillmentGroupInput
FulfillmentImage
Description
An image captured during fulfillment (per-package or per-item)
Fields
| Field Name | Description |
|---|---|
File - File!
|
|
Package - FulfillmentPackage!
|
|
PackageItem - FulfillmentPackageItem
|
|
capturedBy - String
|
|
createdAt - String!
|
|
fileId - ID!
|
|
id - ID!
|
|
note - String
|
|
packageId - ID!
|
|
packageItemId - ID
|
Example
{
"File": File,
"Package": FulfillmentPackage,
"PackageItem": FulfillmentPackageItem,
"capturedBy": "xyz789",
"createdAt": "abc123",
"fileId": "4",
"id": 4,
"note": "abc123",
"packageId": "4",
"packageItemId": 4
}
FulfillmentPackage
Description
A package/parcel in a shipment
Fields
| Field Name | Description |
|---|---|
Images - [FulfillmentImage!]!
|
|
Order - Order!
|
|
PackageItems - [FulfillmentPackageItem!]!
|
|
actualDeliveryDate - String
|
|
calculatedWeight - String
|
|
canRetryFulfillment - Boolean!
|
|
cancelReason - String
|
Operator-supplied reason for cancelling. Null when none was given — this is NOT an error field. |
cancelledAt - String
|
|
cancelledById - ID
|
|
carrier - String
|
|
carrierConnectionId - ID
|
|
carrierStatusCode - String
|
|
carrierStatusDescription - String
|
|
combinedAt - String
|
|
combinedById - ID
|
|
combinedWithOrderIds - String
|
|
confirmationCost - String
|
|
createdAt - String!
|
|
customerNotified - Boolean!
|
|
customerNotifiedAt - String
|
|
customsInvoiceFile - File
|
|
customsSubmittedElectronically - Boolean
|
|
declaredWeight - String
|
|
deliveredAt - String
|
|
estimatedDeliveryDate - String
|
|
externalLabelId - String
|
|
externalShipmentId - String
|
|
fulfillmentCompletedAt - String
|
|
fulfillmentError - String
|
|
fulfillmentErrorStep - FulfillmentStep
|
|
fulfillmentStartedAt - String
|
|
fulfillmentStatusEnum - PackageFulfillmentStatus!
|
|
handoffMethod - HandoffMethod
|
|
handoffNote - String
|
|
hasLabel - Boolean!
|
|
height - String
|
|
id - ID!
|
|
insuranceCost - String
|
|
isDelivered - Boolean!
|
|
isManualFulfillment - Boolean!
|
|
isSupplemental - Boolean!
|
|
labelFile - File
|
|
labelFileId - ID
|
|
labelFormat - String
|
|
labelPrintedAt - String
|
|
labelPurchasedAt - String
|
|
labelPurchasedById - ID
|
|
labelUrl - String
|
|
labelVoidedAt - String
|
|
length - String
|
|
manualFulfillmentReason - String
|
|
notifyCustomer - Boolean!
|
|
orderId - ID!
|
|
organizationId - ID!
|
|
packageNumber - Int!
|
|
printFirstPageOnly - Boolean
|
|
scaleWeight - String
|
|
serviceCode - String
|
|
serviceName - String
|
|
serviceOptions - String
|
|
shipmentGroupId - ID
|
|
shipmentGroupRole - String
|
|
shippedAt - String
|
|
shippingCost - String
|
|
shopifyFulfillmentId - String
|
|
shopifyLastSyncAt - String
|
|
shopifyLastSyncError - String
|
|
shopifySyncAttempts - Int!
|
|
stationeryTareGrams - String
|
|
stationeryType - String
|
|
stationeryTypeId - ID
|
|
status - PackageStatus!
|
|
stepLabelPrintStatus - StepStatus!
|
|
stepLabelPurchaseStatus - StepStatus!
|
|
stepLocalFulfillmentStatus - StepStatus!
|
|
stepStoreSyncStatus - StepStatus!
|
|
supplementalReason - String
|
|
trackingException - String
|
|
trackingLastUpdatedAt - String
|
|
trackingNumber - String
|
|
trackingStatus - String
|
|
trackingStatusDescription - String
|
|
trackingUrl - String
|
|
uncombinedAt - String
|
|
uncombinedById - ID
|
|
uncombinedReason - String
|
|
updatedAt - String!
|
|
width - String
|
Example
{
"Images": [FulfillmentImage],
"Order": Order,
"PackageItems": [FulfillmentPackageItem],
"actualDeliveryDate": "xyz789",
"calculatedWeight": "abc123",
"canRetryFulfillment": true,
"cancelReason": "abc123",
"cancelledAt": "abc123",
"cancelledById": 4,
"carrier": "xyz789",
"carrierConnectionId": "4",
"carrierStatusCode": "abc123",
"carrierStatusDescription": "abc123",
"combinedAt": "xyz789",
"combinedById": 4,
"combinedWithOrderIds": "xyz789",
"confirmationCost": "xyz789",
"createdAt": "abc123",
"customerNotified": false,
"customerNotifiedAt": "xyz789",
"customsInvoiceFile": File,
"customsSubmittedElectronically": true,
"declaredWeight": "abc123",
"deliveredAt": "xyz789",
"estimatedDeliveryDate": "xyz789",
"externalLabelId": "xyz789",
"externalShipmentId": "xyz789",
"fulfillmentCompletedAt": "xyz789",
"fulfillmentError": "abc123",
"fulfillmentErrorStep": "LABEL_PRINT",
"fulfillmentStartedAt": "abc123",
"fulfillmentStatusEnum": "COMPLETED",
"handoffMethod": "CARRIER_TRACKED",
"handoffNote": "abc123",
"hasLabel": true,
"height": "abc123",
"id": "4",
"insuranceCost": "abc123",
"isDelivered": true,
"isManualFulfillment": false,
"isSupplemental": false,
"labelFile": File,
"labelFileId": 4,
"labelFormat": "abc123",
"labelPrintedAt": "xyz789",
"labelPurchasedAt": "xyz789",
"labelPurchasedById": 4,
"labelUrl": "abc123",
"labelVoidedAt": "xyz789",
"length": "abc123",
"manualFulfillmentReason": "xyz789",
"notifyCustomer": false,
"orderId": 4,
"organizationId": "4",
"packageNumber": 987,
"printFirstPageOnly": false,
"scaleWeight": "abc123",
"serviceCode": "xyz789",
"serviceName": "abc123",
"serviceOptions": "xyz789",
"shipmentGroupId": 4,
"shipmentGroupRole": "abc123",
"shippedAt": "xyz789",
"shippingCost": "xyz789",
"shopifyFulfillmentId": "abc123",
"shopifyLastSyncAt": "xyz789",
"shopifyLastSyncError": "xyz789",
"shopifySyncAttempts": 123,
"stationeryTareGrams": "abc123",
"stationeryType": "abc123",
"stationeryTypeId": "4",
"status": "CANCELLED",
"stepLabelPrintStatus": "COMPLETED",
"stepLabelPurchaseStatus": "COMPLETED",
"stepLocalFulfillmentStatus": "COMPLETED",
"stepStoreSyncStatus": "COMPLETED",
"supplementalReason": "xyz789",
"trackingException": "abc123",
"trackingLastUpdatedAt": "xyz789",
"trackingNumber": "abc123",
"trackingStatus": "abc123",
"trackingStatusDescription": "abc123",
"trackingUrl": "xyz789",
"uncombinedAt": "abc123",
"uncombinedById": "4",
"uncombinedReason": "abc123",
"updatedAt": "abc123",
"width": "xyz789"
}
FulfillmentPackageItem
Description
An item allocated to a fulfillment package
Fields
| Field Name | Description |
|---|---|
Images - [FulfillmentImage!]!
|
|
LineItem - OrderLineItem!
|
|
Package - FulfillmentPackage!
|
|
createdAt - String!
|
|
id - ID!
|
|
inventoryAction - InventoryAction!
|
|
lineItemId - ID!
|
|
packageId - ID!
|
|
quantity - Int!
|
|
supplementalItemType - SupplementalItemType
|
|
updatedAt - String!
|
Example
{
"Images": [FulfillmentImage],
"LineItem": OrderLineItem,
"Package": FulfillmentPackage,
"createdAt": "xyz789",
"id": 4,
"inventoryAction": "DEDUCT",
"lineItemId": 4,
"packageId": "4",
"quantity": 987,
"supplementalItemType": "COMPLIMENTARY",
"updatedAt": "abc123"
}
FulfillmentStep
Description
Steps in the fulfillment process
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"LABEL_PRINT"
GrossProfitPrecision
Description
How far a gross profit figure can be relied on.
Values
| Enum Value | Description |
|---|---|
|
|
An estimate: at least one reason it is not exact could move it either way. |
|
|
An upper bound: every reason it is not exact can only overstate it. |
|
|
Every input is known. |
Example
"APPROXIMATE"
GrossProfitReason
Description
Why a gross profit figure is not exact.
Values
| Enum Value | Description |
|---|---|
|
|
A recorded cost is itself incomplete, such as a kit with an uncosted component. |
|
|
A refund was larger than the items, shipping and tax it records. |
|
|
A refund was smaller than the items it records, such as a restocking fee. |
|
|
An order was refunded with no record of which items. |
|
|
A refunded order has removed units with no refund record to place them. |
|
|
It is not known how much of a discount applied to shipping. |
|
|
Tax was charged but it is not known whether prices include it. |
Example
"INCOMPLETE_COST"
HandoffMethod
Description
How a fulfillment package was handed off to the carrier
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"CARRIER_TRACKED"
ID
Description
The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.
Example
4
ImportChargesCollection
Description
Whether import charges were collected from the customer at checkout.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"COLLECTED"
ImportChargesCollector
Description
Who collected the import charges: the merchant, or a third party (e.g. a carrier).
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"MERCHANT"
ImportChargesFactInput
Description
A statement about whether import charges were collected for an order. Omit the whole input to leave the stored fact unchanged; an input with no collection makes no statement and also changes nothing.
Fields
| Input Field | Description |
|---|---|
amount - String
|
Amount collected, in the order currency, up to 2 decimal places. Only with COLLECTED. |
collectedBy - ImportChargesCollector
|
|
collection - ImportChargesCollection
|
|
mixed - Boolean
|
Shopify only: the order's fulfillment orders disagree about whether charges were collected. |
source - ImportChargesInputSource
|
Defaults to API. |
Example
{
"amount": "abc123",
"collectedBy": "MERCHANT",
"collection": "COLLECTED",
"mixed": false,
"source": "API"
}
ImportChargesFactSource
Description
Where the stored import-charges fact came from. A merchant value outranks SHOPIFY.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"API"
ImportChargesInputSource
Description
The origin a caller may claim for an import-charges statement. SHOPIFY is accepted only from the Shopify integration; MANUAL is set only by setOrderImportChargesFact.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"API"
ImportChargesResolvedSource
Description
Where the resolved import-charges fact came from: a stored source, or ORGANIZATION_SETTING when the order has no fact of its own and the organisation has stated it never collects import charges at checkout. ORGANIZATION_SETTING is never stored on the order.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"API"
Int
Description
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
987
InventoryAction
Description
Whether to deduct inventory for this item
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"DEDUCT"
InventoryReceipt
Description
Inventory receipt for receiving products
Fields
| Field Name | Description |
|---|---|
InventoryReceiptItems - [InventoryReceiptItem!]
|
|
Organization - Organization
|
|
PurchaseOrder - PurchaseOrder
|
|
ReceivedBy - User
|
|
WarehouseLocation - WarehouseLocation
|
|
createdAt - String
|
|
discrepancyNotes - String
|
|
hasDiscrepancies - Boolean
|
|
id - ID
|
|
itemCount - Int
|
|
notes - String
|
|
organizationId - ID
|
|
purchaseOrderId - String
|
|
receiptNumber - String
|
|
receivedByEmailSnapshot - String
|
Email of the user who received the stock, recorded at the time. |
receivedByIdSnapshot - ID
|
Id of the user who received the stock, recorded at the time. Still set after that user is deleted (receivedByUserId and ReceivedBy are then null). |
receivedByNameSnapshot - String
|
Display name of the user who received the stock, recorded at the time. Show it, marked as a deleted user, when ReceivedBy is null. |
receivedByUserId - ID
|
|
receivedDate - String
|
|
status - ReceiptStatus
|
|
totalQuantityExpected - Int
|
|
totalQuantityReceived - Int
|
|
updatedAt - String
|
|
varianceQuantity - Int
|
|
warehouseLocationId - ID
|
Example
{
"InventoryReceiptItems": [InventoryReceiptItem],
"Organization": Organization,
"PurchaseOrder": PurchaseOrder,
"ReceivedBy": User,
"WarehouseLocation": WarehouseLocation,
"createdAt": "abc123",
"discrepancyNotes": "abc123",
"hasDiscrepancies": true,
"id": 4,
"itemCount": 987,
"notes": "abc123",
"organizationId": 4,
"purchaseOrderId": "abc123",
"receiptNumber": "xyz789",
"receivedByEmailSnapshot": "abc123",
"receivedByIdSnapshot": 4,
"receivedByNameSnapshot": "xyz789",
"receivedByUserId": "4",
"receivedDate": "xyz789",
"status": "CANCELLED",
"totalQuantityExpected": 987,
"totalQuantityReceived": 987,
"updatedAt": "xyz789",
"varianceQuantity": 123,
"warehouseLocationId": "4"
}
InventoryReceiptItem
Description
Inventory receipt line item
Fields
| Field Name | Description |
|---|---|
InventoryReceipt - InventoryReceipt
|
|
Product - Product
|
|
PurchasableItem - PurchasableItem
|
|
PurchaseOrderItem - PurchaseOrderItem
|
|
WarehouseBin - WarehouseBin
|
|
batchNumber - String
|
|
binLocation - String
|
|
createdAt - String
|
|
expiryDate - String
|
|
id - ID
|
|
inventoryReceiptId - ID
|
|
itemName - String
|
|
itemSku - String
|
|
itemType - String
|
|
lineTotal - String
|
|
lotNumber - String
|
|
notes - String
|
|
productId - String
|
|
purchasableItemId - String
|
|
purchaseOrderItemId - String
|
|
quantityAccepted - Int
|
|
quantityDamaged - Int
|
|
quantityExpected - Int
|
|
quantityReceived - Int
|
|
quantityRejected - Int
|
|
unitCost - String
|
|
updatedAt - String
|
|
varianceReason - String
|
|
warehouseBinId - String
|
Example
{
"InventoryReceipt": InventoryReceipt,
"Product": Product,
"PurchasableItem": PurchasableItem,
"PurchaseOrderItem": PurchaseOrderItem,
"WarehouseBin": WarehouseBin,
"batchNumber": "xyz789",
"binLocation": "xyz789",
"createdAt": "xyz789",
"expiryDate": "abc123",
"id": 4,
"inventoryReceiptId": "4",
"itemName": "xyz789",
"itemSku": "abc123",
"itemType": "xyz789",
"lineTotal": "xyz789",
"lotNumber": "xyz789",
"notes": "xyz789",
"productId": "abc123",
"purchasableItemId": "xyz789",
"purchaseOrderItemId": "xyz789",
"quantityAccepted": 123,
"quantityDamaged": 987,
"quantityExpected": 123,
"quantityReceived": 987,
"quantityRejected": 987,
"unitCost": "xyz789",
"updatedAt": "abc123",
"varianceReason": "abc123",
"warehouseBinId": "abc123"
}
InventoryReceiptItemInput
Fields
| Input Field | Description |
|---|---|
batchNumber - String
|
|
binLocation - String
|
|
expiryDate - String
|
|
lotNumber - String
|
|
notes - String
|
|
purchasableItemId - ID!
|
|
purchaseOrderItemId - ID
|
|
quantityDamaged - Int
|
|
quantityReceived - Int!
|
|
quantityRejected - Int
|
|
unitCost - String
|
|
varianceReason - String
|
|
warehouseBinId - ID
|
Example
{
"batchNumber": "xyz789",
"binLocation": "xyz789",
"expiryDate": "xyz789",
"lotNumber": "xyz789",
"notes": "abc123",
"purchasableItemId": "4",
"purchaseOrderItemId": 4,
"quantityDamaged": 987,
"quantityReceived": 123,
"quantityRejected": 123,
"unitCost": "xyz789",
"varianceReason": "abc123",
"warehouseBinId": "4"
}
JSON
Example
{}
KitAssemblyMode
Description
Determines how kit inventory is managed
Values
| Enum Value | Description |
|---|---|
|
|
Use pre-assembled first, then JIT for remainder |
|
|
Assemble during order fulfillment (JIT - quantity is virtual) |
|
|
Build kits ahead of time (traditional pre-kitting) |
Example
"BOTH"
KitComponentPick
Description
A kit component to be picked for JIT assembly
Fields
| Field Name | Description |
|---|---|
barcode - String
|
The component variant's barcode (UPC/EAN). Null when the variant has none; scan-to-confirm on the pack screen matches it exactly, alongside productSku. |
isPicked - Boolean
|
|
location - ComponentLocation
|
|
productId - String
|
|
productImage - String
|
|
productName - String
|
|
productSku - String
|
|
productVariantId - String
|
|
quantityNeeded - Int
|
|
quantityPicked - Int
|
|
variantTitle - String
|
Example
{
"barcode": "xyz789",
"isPicked": true,
"location": ComponentLocation,
"productId": "abc123",
"productImage": "abc123",
"productName": "abc123",
"productSku": "xyz789",
"productVariantId": "abc123",
"quantityNeeded": 123,
"quantityPicked": 987,
"variantTitle": "xyz789"
}
KitInventoryMode
Description
Controls inventory deduction behavior for kit assembly/fulfillment
Values
| Enum Value | Description |
|---|---|
|
|
Full deductions on kit assembly/fulfillment (normal operation) |
|
|
An external app (e.g. BundleKit) deducts components; we only log. Migration-only — our component figures exclude open orders’ allocations while a kit is in this state. |
|
|
Log deductions without executing — dry run before go-live |
Example
"ACTIVE"
LabelAddressType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"MAILING"
LineItemInput
Fields
| Input Field | Description |
|---|---|
allocatedDiscountAmount - String
|
The discount the channel allocated to this line (Shopify: the sum of its discountAllocations — where an order-level code's money lives), in shop money. Omit when unknown; it is never read as zero. |
currentQuantity - Int
|
|
discountAmount - String
|
|
fulfillmentGroupExternalId - String
|
|
isGiftCard - Boolean
|
The channel says this line sold a gift card (Shopify: LineItem.isGiftCard). Omit when unknown; an update without it keeps what is stored. |
nonFulfillableQuantity - Int
|
|
notes - String
|
|
originalUnitPrice - String
|
|
presentmentUnitPrice - String
|
|
productId - String
|
|
productImage - String
|
|
productName - String!
|
|
productSku - String!
|
|
quantityCancelled - Int
|
|
quantityFulfilled - Int
|
|
quantityOrdered - Int!
|
|
shopifyLineItemId - String
|
|
source - String
|
|
taxAmount - String
|
|
unitPrice - String!
|
|
variantId - String
|
|
variantOptions - JSON
|
|
variantTitle - String
|
Example
{
"allocatedDiscountAmount": "xyz789",
"currentQuantity": 987,
"discountAmount": "abc123",
"fulfillmentGroupExternalId": "abc123",
"isGiftCard": false,
"nonFulfillableQuantity": 123,
"notes": "abc123",
"originalUnitPrice": "abc123",
"presentmentUnitPrice": "xyz789",
"productId": "abc123",
"productImage": "xyz789",
"productName": "xyz789",
"productSku": "xyz789",
"quantityCancelled": 987,
"quantityFulfilled": 123,
"quantityOrdered": 123,
"shopifyLineItemId": "abc123",
"source": "xyz789",
"taxAmount": "abc123",
"unitPrice": "xyz789",
"variantId": "xyz789",
"variantOptions": {},
"variantTitle": "abc123"
}
LocationScope
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"GLOBAL"
LocationType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AMAZON"
MediaProfile
Description
Per-device label media profile (size, density, orientation)
Fields
| Field Name | Description |
|---|---|
dpi - Int!
|
|
heightMm - Float
|
|
marginsMm - Float!
|
|
mediaType - MediaType!
|
|
overriddenFields - [String!]!
|
Profile fields whose value was set manually (vs agent-reported) |
rotation - MediaRotation!
|
|
widthMm - Float!
|
Example
{
"dpi": 123,
"heightMm": 987.65,
"marginsMm": 123.45,
"mediaType": "CONTINUOUS",
"overriddenFields": ["abc123"],
"rotation": "DEG_0",
"widthMm": 987.65
}
MediaRotation
Description
Rotation applied so label content fills the media width
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"DEG_0"
MediaType
Description
Physical label media loaded in a printer
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"CONTINUOUS"
MovementSource
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AMAZON"
Order
Description
A customer order with line items
Fields
| Field Name | Description |
|---|---|
Customer - Customer
|
|
FulfillmentPackages - [FulfillmentPackage!]!
|
|
OrderComments - [OrderComment!]
|
|
OrderLineItems - [OrderLineItem!]!
|
|
Organization - Organization!
|
|
WarehouseAllocation - OrderWarehouseAllocation
|
|
billingAddress - String
|
|
billingAddress2 - String
|
|
billingCity - String
|
|
billingCompany - String
|
|
billingCountry - String
|
|
billingCountryCode - String
|
|
billingFirstName - String
|
|
billingLastName - String
|
|
billingPostalCode - String
|
|
billingState - String
|
|
cancelReason - String
|
|
cancelStaffNote - String
|
|
cancelledAt - String
|
|
capturedAmount - String
|
Sum of SUCCESS SALE/CAPTURE transactions in the shop currency — the money actually taken from the customer. NOT interchangeable with totalAmount, which mirrors Shopify currentTotalPriceSet and is mutated by cancellations and order edits. |
carrier - String
|
|
closedAt - String
|
|
confirmed - Boolean
|
|
createdAt - String!
|
|
currency - String!
|
|
currentShippingCost - String
|
|
customerIp - String
|
|
customerNotes - String
|
|
deliveredAt - String
|
|
discountAmount - String!
|
|
discountCodes - JSON
|
Array of discount codes applied to the order [{code, amount, type}] |
email - String
|
|
exchangeRate - String
|
|
fulfilledAt - String
|
|
fulfillmentStatus - OrderFulfillmentStatus!
|
|
grossProfit - OrderGrossProfit
|
Item sales after discounts and refunds, excluding shipping and tax, minus the cost of goods for those items. Lines with no recorded cost are left out. Null when the order is cancelled, the organisation has no currency, there is no exchange rate, or it could not be calculated. |
id - ID!
|
|
importChargesCollectedAmount - String
|
Decimal string in the order currency; only set when COLLECTED. |
importChargesCollectedBy - ImportChargesCollector
|
|
importChargesCollection - ImportChargesCollection
|
|
importChargesConflict - Boolean!
|
True when Shopify's report disagrees with the stored fact, or Shopify's own fulfillment orders disagree. |
importChargesFactSource - ImportChargesFactSource
|
|
importChargesResolvedCollection - ImportChargesCollection
|
The import-charges fact to act on: the stored fact, else NOT_COLLECTED when the organisation has stated it never collects import charges at checkout. Null = unknown (including a Shopify conflict, which is never masked). |
importChargesResolvedSource - ImportChargesResolvedSource
|
Where importChargesResolvedCollection came from. ORGANIZATION_SETTING = the organisation statement, not anything stored on this order. |
importChargesShopifyMixed - Boolean
|
True when Shopify's own fulfillment orders for this order disagreed. |
importChargesShopifyReported - ImportChargesCollection
|
The last value Shopify reported, kept even when a stored merchant value wins. |
internalNotes - String
|
|
internalOrderNumber - Int
|
|
lastSyncedAt - String
|
|
monthlyOrderCap - OrderCapStatus
|
This order against its plan's monthly order cap. |
notifyCustomerOnRefund - Boolean!
|
|
orderDate - String!
|
|
orderNumber - String!
|
|
organizationId - ID!
|
|
paidAt - String
|
|
paymentGateway - String
|
|
paymentMethod - String
|
|
paymentStatus - OrderPaymentStatus!
|
|
phone - String
|
|
presentmentCapturedAmount - String
|
Sum of SUCCESS SALE/CAPTURE transactions in the presentment currency. Null when Shopify reported no presentment money. |
presentmentCurrency - String
|
|
presentmentCurrentShippingCost - String
|
|
presentmentDiscountAmount - String
|
|
presentmentRefundedAmount - String
|
Total refunded in the presentment currency the customer was charged in. Null when Shopify reported no presentment money (single-currency order) or the payload carried no transactions. |
presentmentShippingCost - String
|
|
presentmentShippingDiscountAmount - String
|
|
presentmentSubtotal - String
|
|
presentmentTaxAmount - String
|
|
presentmentTotalAmount - String
|
|
processedAt - String
|
|
refundedAmount - String!
|
|
refunds - JSON
|
Array of refund objects from Shopify [{id, createdAt, amount, note, lineItems}] |
resolvedShippingService - ResolvedShippingService
|
Resolved shipping service for display: the organization's mapping for the rate code or title, else a carrier-adapter alias for the rate code, else the raw title |
restockOnCancel - Boolean!
|
|
riskAssessmentDetails - JSON
|
|
riskLevel - String
|
|
riskRecommendation - String
|
|
shippingAddress - String
|
|
shippingAddress2 - String
|
|
shippingCity - String
|
|
shippingCompany - String
|
|
shippingCost - String!
|
|
shippingCountry - String
|
|
shippingCountryCode - String
|
|
shippingDiscountAmount - String
|
|
shippingFirstName - String
|
|
shippingLastName - String
|
|
shippingLines - JSON
|
Individual shipping line details [{title, price, carrierIdentifier, code}] |
shippingMethod - String
|
|
shippingPostalCode - String
|
|
shippingState - String
|
|
shopifyLastCancelError - String
|
|
shopifyLastCancelSyncAt - String
|
|
shopifyOrderId - String
|
|
shopifyOrderNumber - String
|
|
source - String!
|
|
status - OrderStatus!
|
|
storeId - ID
|
|
subtotal - String!
|
|
syncError - String
|
|
syncStatus - SyncStatus!
|
|
tags - [String!]!
|
|
taxAmount - String!
|
|
taxLines - [OrderTaxLine!]
|
|
taxesIncluded - Boolean
|
|
timeline - [OrderTimelineEvent!]
|
Timeline of events for this order |
totalAmount - String!
|
|
trackingNumber - String
|
|
trackingUrl - String
|
|
transactions - JSON
|
Payment transaction details from Shopify [{id, kind, gateway, status, amount, currency, createdAt}] |
updatedAt - String!
|
Example
{
"Customer": Customer,
"FulfillmentPackages": [FulfillmentPackage],
"OrderComments": [OrderComment],
"OrderLineItems": [OrderLineItem],
"Organization": Organization,
"WarehouseAllocation": OrderWarehouseAllocation,
"billingAddress": "xyz789",
"billingAddress2": "xyz789",
"billingCity": "xyz789",
"billingCompany": "abc123",
"billingCountry": "abc123",
"billingCountryCode": "xyz789",
"billingFirstName": "xyz789",
"billingLastName": "abc123",
"billingPostalCode": "abc123",
"billingState": "abc123",
"cancelReason": "abc123",
"cancelStaffNote": "xyz789",
"cancelledAt": "xyz789",
"capturedAmount": "abc123",
"carrier": "abc123",
"closedAt": "xyz789",
"confirmed": true,
"createdAt": "abc123",
"currency": "xyz789",
"currentShippingCost": "abc123",
"customerIp": "xyz789",
"customerNotes": "xyz789",
"deliveredAt": "xyz789",
"discountAmount": "xyz789",
"discountCodes": {},
"email": "abc123",
"exchangeRate": "abc123",
"fulfilledAt": "abc123",
"fulfillmentStatus": "CANCELLED",
"grossProfit": OrderGrossProfit,
"id": 4,
"importChargesCollectedAmount": "abc123",
"importChargesCollectedBy": "MERCHANT",
"importChargesCollection": "COLLECTED",
"importChargesConflict": false,
"importChargesFactSource": "API",
"importChargesResolvedCollection": "COLLECTED",
"importChargesResolvedSource": "API",
"importChargesShopifyMixed": false,
"importChargesShopifyReported": "COLLECTED",
"internalNotes": "abc123",
"internalOrderNumber": 987,
"lastSyncedAt": "abc123",
"monthlyOrderCap": OrderCapStatus,
"notifyCustomerOnRefund": false,
"orderDate": "abc123",
"orderNumber": "xyz789",
"organizationId": 4,
"paidAt": "xyz789",
"paymentGateway": "abc123",
"paymentMethod": "abc123",
"paymentStatus": "AUTHORIZED",
"phone": "xyz789",
"presentmentCapturedAmount": "abc123",
"presentmentCurrency": "abc123",
"presentmentCurrentShippingCost": "abc123",
"presentmentDiscountAmount": "abc123",
"presentmentRefundedAmount": "abc123",
"presentmentShippingCost": "abc123",
"presentmentShippingDiscountAmount": "xyz789",
"presentmentSubtotal": "abc123",
"presentmentTaxAmount": "xyz789",
"presentmentTotalAmount": "abc123",
"processedAt": "abc123",
"refundedAmount": "abc123",
"refunds": {},
"resolvedShippingService": ResolvedShippingService,
"restockOnCancel": false,
"riskAssessmentDetails": {},
"riskLevel": "abc123",
"riskRecommendation": "xyz789",
"shippingAddress": "abc123",
"shippingAddress2": "abc123",
"shippingCity": "abc123",
"shippingCompany": "xyz789",
"shippingCost": "xyz789",
"shippingCountry": "abc123",
"shippingCountryCode": "abc123",
"shippingDiscountAmount": "xyz789",
"shippingFirstName": "abc123",
"shippingLastName": "abc123",
"shippingLines": {},
"shippingMethod": "xyz789",
"shippingPostalCode": "xyz789",
"shippingState": "xyz789",
"shopifyLastCancelError": "abc123",
"shopifyLastCancelSyncAt": "xyz789",
"shopifyOrderId": "abc123",
"shopifyOrderNumber": "xyz789",
"source": "abc123",
"status": "CANCELLED",
"storeId": 4,
"subtotal": "xyz789",
"syncError": "abc123",
"syncStatus": "ERROR",
"tags": ["xyz789"],
"taxAmount": "abc123",
"taxLines": [OrderTaxLine],
"taxesIncluded": false,
"timeline": [OrderTimelineEvent],
"totalAmount": "xyz789",
"trackingNumber": "abc123",
"trackingUrl": "abc123",
"transactions": {},
"updatedAt": "xyz789"
}
OrderCapStatus
Description
Where an order stands against its plan's monthly order cap. An order past the cap can't be picked or have a label bought until the period resets.
Fields
| Field Name | Description |
|---|---|
blocked - Boolean!
|
True when the order is past the monthly cap and cannot be picked or shipped. |
maxOrders - Int
|
Orders a month the plan includes. Null when no cap applies. |
position - Int
|
The order's position in the current billing period. Null when it was not counted in this period. |
resetsOn - String
|
ISO 8601. When the current billing period ends and the cap resets. |
Example
{
"blocked": true,
"maxOrders": 987,
"position": 123,
"resetsOn": "xyz789"
}
OrderComment
Description
An internal staff comment on an order
Fields
| Field Name | Description |
|---|---|
attachments - [OrderCommentAttachment!]
|
|
author - CommentAuthor
|
|
content - String
|
|
createdAt - String
|
|
id - ID
|
|
isPinned - Boolean
|
|
orderId - ID
|
|
organizationId - ID
|
|
updatedAt - String
|
|
userId - ID
|
Example
{
"attachments": [OrderCommentAttachment],
"author": CommentAuthor,
"content": "abc123",
"createdAt": "xyz789",
"id": 4,
"isPinned": true,
"orderId": 4,
"organizationId": 4,
"updatedAt": "xyz789",
"userId": "4"
}
OrderCommentAttachment
OrderFulfillmentGroup
Description
A channel's per-location grouping of an order's line items (Shopify FulfillmentOrder).
Example
{
"channel": "xyz789",
"externalGroupId": "abc123",
"externalLocationId": "abc123",
"externalLocationName": "abc123",
"externalStatus": "abc123",
"id": 4
}
OrderFulfillmentStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CANCELLED"
OrderGrossProfit
Description
Item sales after discounts and refunds, excluding shipping and tax, minus the cost of goods for those items. Lines with no recorded cost are left out.
Fields
| Field Name | Description |
|---|---|
amount - String
|
Null when no line has a recorded cost: the figure is missing, not zero. |
cost - String
|
Cost of goods for the units still counted. |
costedLines - Int!
|
|
currency - String!
|
The organisation's currency, which every figure here is in. |
itemsWithoutCost - Int!
|
Lines with no recorded cost, which are left out of every figure here. |
marginPct - Float
|
Gross margin as a percentage (0-100) of netSales. |
netSales - String
|
Item sales of the costed lines, after discounts and refunds. |
precision - GrossProfitPrecision!
|
How far amount can be relied on. |
reasons - [GrossProfitReason!]!
|
Why amount is not exact. Empty when it is. |
totalLines - Int!
|
Example
{
"amount": "xyz789",
"cost": "abc123",
"costedLines": 123,
"currency": "abc123",
"itemsWithoutCost": 987,
"marginPct": 123.45,
"netSales": "xyz789",
"precision": "APPROXIMATE",
"reasons": ["INCOMPLETE_COST"],
"totalLines": 987
}
OrderLineItem
Description
A line item in an order
Fields
| Field Name | Description |
|---|---|
Order - Order!
|
|
Product - Product
|
|
ProductVariant - ProductVariant
|
|
allocatedDiscountAmount - String
|
SKU-1996: the discount the channel allocated to this line (shop money). Null: not captured — not "no discount". |
cancelReason - String
|
|
cancelledAt - String
|
|
createdAt - String!
|
|
currentQuantity - Int
|
|
discountAmount - String!
|
|
externallyReservedQuantity - Int
|
|
fulfillable - Boolean!
|
Whether this line item may currently be fulfilled. False when its channel fulfilment group is assigned to a location not linked to a warehouse. |
fulfilledAt - String
|
|
fulfillmentBlockDetail - String
|
Merchant-facing explanation naming the channel location. Null when the item is fulfillable. |
fulfillmentBlockReason - FulfillmentBlockReason
|
Why this line item cannot be fulfilled. Null when it can. |
fulfillmentGroup - OrderFulfillmentGroup
|
|
id - ID!
|
|
isCancelled - Boolean!
|
|
isComplimentary - Boolean!
|
|
isFulfilled - Boolean!
|
|
isKit - Boolean
|
Whether this line item is a kit/bundle product |
isPicked - Boolean!
|
|
kitAssemblyMode - KitAssemblyMode
|
Assembly mode for this kit (null if not a kit) |
kitComponents - [KitComponentPick!]
|
Components to pick for JIT kit assembly (null if not a kit or not JIT mode) |
lineCost - String
|
|
lineSubtotal - String!
|
|
lineTotal - String!
|
|
nonFulfillableQuantity - Int
|
|
notes - String
|
|
originalUnitPrice - String
|
|
pickedAt - String
|
|
preAssembledAvailable - Int
|
Number of pre-assembled kit units available at the allocated warehouse (null if not a kit) |
presentmentUnitPrice - String
|
|
productImage - String
|
|
productName - String!
|
|
productSku - String!
|
|
quantityCancelled - Int!
|
|
quantityFulfilled - Int!
|
|
quantityOrdered - Int!
|
|
quantityPicked - Int!
|
|
shopifyLineItemId - String
|
|
source - String!
|
|
taxAmount - String!
|
|
unitCost - String
|
|
unitCostIsPartial - Boolean
|
The snapshotted unitCost was itself incomplete (a partially-costed kit), so margin derived from this line is an upper bound (SKU-1891). |
unitPrice - String!
|
|
updatedAt - String!
|
|
variantOptions - JSON
|
|
variantTitle - String
|
Example
{
"Order": Order,
"Product": Product,
"ProductVariant": ProductVariant,
"allocatedDiscountAmount": "xyz789",
"cancelReason": "xyz789",
"cancelledAt": "xyz789",
"createdAt": "abc123",
"currentQuantity": 123,
"discountAmount": "xyz789",
"externallyReservedQuantity": 987,
"fulfillable": false,
"fulfilledAt": "abc123",
"fulfillmentBlockDetail": "abc123",
"fulfillmentBlockReason": "LINKED_BUT_FULFILMENT_DISABLED",
"fulfillmentGroup": OrderFulfillmentGroup,
"id": 4,
"isCancelled": false,
"isComplimentary": false,
"isFulfilled": false,
"isKit": true,
"isPicked": true,
"kitAssemblyMode": "BOTH",
"kitComponents": [KitComponentPick],
"lineCost": "abc123",
"lineSubtotal": "abc123",
"lineTotal": "xyz789",
"nonFulfillableQuantity": 123,
"notes": "xyz789",
"originalUnitPrice": "abc123",
"pickedAt": "xyz789",
"preAssembledAvailable": 123,
"presentmentUnitPrice": "abc123",
"productImage": "abc123",
"productName": "abc123",
"productSku": "xyz789",
"quantityCancelled": 123,
"quantityFulfilled": 123,
"quantityOrdered": 987,
"quantityPicked": 123,
"shopifyLineItemId": "abc123",
"source": "abc123",
"taxAmount": "xyz789",
"unitCost": "xyz789",
"unitCostIsPartial": false,
"unitPrice": "abc123",
"updatedAt": "abc123",
"variantOptions": {},
"variantTitle": "xyz789"
}
OrderPaymentStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AUTHORIZED"
OrderStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CANCELLED"
OrderStatusCounts
Example
{
"all": 987,
"cancelled": 987,
"fulfilled": 123,
"hold": 987,
"partialPicked": 987,
"pickable": 987,
"picked": 987,
"ready": 987,
"unfulfilled": 123,
"unpaid": 987
}
OrderTaxLine
OrderTaxLineInput
OrderTimelineEvent
Description
An event in the order timeline
Example
{
"description": "abc123",
"icon": "abc123",
"id": 4,
"metadata": {},
"timestamp": "abc123",
"title": "xyz789",
"type": "abc123"
}
OrderWarehouseAllocation
Description
Assignment of an order to a warehouse for fulfillment
Fields
| Field Name | Description |
|---|---|
AllocatedBy - User
|
|
Order - Order
|
|
WarehouseLocation - WarehouseLocation!
|
|
allocatedAt - String
|
|
allocatedByEmailSnapshot - String
|
Email of the user who allocated the order to the warehouse, recorded at the time. |
allocatedById - String
|
|
allocatedByIdSnapshot - ID
|
Id of the user who allocated the order to the warehouse, recorded at the time. Still set after that user is deleted. |
allocatedByNameSnapshot - String
|
Display name of the user who allocated the order to the warehouse, recorded at the time. Show it, marked as a deleted user, when allocatedById is null. |
createdAt - String
|
|
id - ID
|
|
notes - String
|
|
orderId - String
|
|
status - AllocationStatus
|
|
updatedAt - String
|
|
warehouseLocationId - String
|
Example
{
"AllocatedBy": User,
"Order": Order,
"WarehouseLocation": WarehouseLocation,
"allocatedAt": "abc123",
"allocatedByEmailSnapshot": "xyz789",
"allocatedById": "xyz789",
"allocatedByIdSnapshot": 4,
"allocatedByNameSnapshot": "xyz789",
"createdAt": "abc123",
"id": "4",
"notes": "abc123",
"orderId": "abc123",
"status": "ALLOCATED",
"updatedAt": "abc123",
"warehouseLocationId": "xyz789"
}
Organization
Description
Organization with settings
Fields
| Field Name | Description |
|---|---|
Permission - [Permission!]
|
|
Role - [RoleType!]
|
|
Team - [Team!]
|
|
User - [User!]
|
Every user of this organization. Requires users:read; null otherwise. |
address - String
|
|
billingEmail - String
|
|
city - String
|
|
country - String
|
|
createdAt - String
|
|
currency - String
|
|
customAppIntegrationEnabled - Boolean
|
Whether Custom App token-based Shopify connections are enabled for this organization |
defaultKitAssemblyMode - KitAssemblyMode
|
Default assembly mode for new kits (JIT = FULFILL_TIME) |
demoExpiresAt - String
|
When this demo org auto-expires (null = never); ISO 8601 |
demoSeededAt - String
|
When the demo seed finished populating this org; ISO 8601 |
domain - String
|
|
employeeCount - Int
|
|
features - [String!]
|
|
id - ID
|
|
industry - String
|
|
integrations - JSON
|
|
isActive - Boolean
|
|
isDemoOrg - Boolean
|
True for ephemeral demo/showcase organizations (auto-seeded, TTL-expiring) |
locale - String
|
|
logoUrl - String
|
|
mailingAddress - Address
|
|
mfaGracePeriodDays - Int
|
|
mfaRequired - Boolean
|
|
name - String
|
|
passkeyRequired - Boolean
|
|
phone - String
|
|
physicalAddress - Address
|
|
postalCode - String
|
|
sessionTimeoutHours - Int
|
|
settings - JSON
|
|
slug - String
|
|
state - String
|
|
supportEmail - String
|
|
supportInboxEnabled - Boolean
|
Whether the Support Inbox is switched on for this organization (platform-admin controlled) |
timezone - String
|
IANA time zone. While timezoneConfirmed is false this is the UTC default, not a zone the organisation chose. |
timezoneConfirmed - Boolean
|
Whether the organisation chose timezone (false: it is the UTC default). |
updatedAt - String
|
|
userCount - Int
|
Number of users in this organization |
users - [User!]
|
Every user of this organization. Requires users:read; null otherwise. |
websiteUrl - String
|
Example
{
"Permission": [Permission],
"Role": [RoleType],
"Team": [Team],
"User": [User],
"address": "abc123",
"billingEmail": "xyz789",
"city": "abc123",
"country": "xyz789",
"createdAt": "xyz789",
"currency": "xyz789",
"customAppIntegrationEnabled": false,
"defaultKitAssemblyMode": "BOTH",
"demoExpiresAt": "abc123",
"demoSeededAt": "xyz789",
"domain": "xyz789",
"employeeCount": 123,
"features": ["xyz789"],
"id": "4",
"industry": "abc123",
"integrations": {},
"isActive": true,
"isDemoOrg": true,
"locale": "xyz789",
"logoUrl": "abc123",
"mailingAddress": Address,
"mfaGracePeriodDays": 123,
"mfaRequired": false,
"name": "abc123",
"passkeyRequired": false,
"phone": "abc123",
"physicalAddress": Address,
"postalCode": "abc123",
"sessionTimeoutHours": 987,
"settings": {},
"slug": "xyz789",
"state": "xyz789",
"supportEmail": "xyz789",
"supportInboxEnabled": false,
"timezone": "xyz789",
"timezoneConfirmed": false,
"updatedAt": "xyz789",
"userCount": 987,
"users": [User],
"websiteUrl": "abc123"
}
PackageFulfillmentStatus
Description
Status of the overall fulfillment orchestration
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"COMPLETED"
PackageStatus
Description
Status of a fulfillment package
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CANCELLED"
PackagingType
Description
Types of packaging materials
Values
| Enum Value | Description |
|---|---|
|
|
Shipping boxes, mailers |
|
|
Bubble wrap, packing peanuts, paper fill |
|
|
Shipping labels, barcode labels |
|
|
Miscellaneous consumables |
|
|
Packing slips, invoices, pick lists |
|
|
Packing tape, fragile tape |
Example
"BOX"
Passkey
Description
WebAuthn passkey for passwordless authentication
Example
{
"authenticatorType": "abc123",
"createdAt": "abc123",
"id": "4",
"ipAddress": "abc123",
"isBackedUp": true,
"isBackupEligible": true,
"lastUsed": "xyz789",
"name": "xyz789",
"needsReregistration": false,
"updatedAt": "abc123",
"userAgent": "xyz789"
}
PasskeyAuthenticationOptions
Fields
| Field Name | Description |
|---|---|
allowCredentials - [PublicKeyCredentialDescriptor!]
|
|
challenge - String
|
|
rpId - String
|
|
timeout - Int
|
|
userVerification - String
|
Example
{
"allowCredentials": [PublicKeyCredentialDescriptor],
"challenge": "xyz789",
"rpId": "abc123",
"timeout": 987,
"userVerification": "xyz789"
}
PasskeyRegistrationOptions
Fields
| Field Name | Description |
|---|---|
attestation - String
|
|
authenticatorSelection - AuthenticatorSelection
|
|
challenge - String
|
|
excludeCredentials - [PublicKeyCredentialDescriptor!]
|
|
pubKeyCredParams - [PublicKeyCredentialParam!]
|
|
rp - RelyingParty
|
|
timeout - Int
|
|
user - PasskeyUser
|
Example
{
"attestation": "abc123",
"authenticatorSelection": AuthenticatorSelection,
"challenge": "abc123",
"excludeCredentials": [PublicKeyCredentialDescriptor],
"pubKeyCredParams": [PublicKeyCredentialParam],
"rp": RelyingParty,
"timeout": 123,
"user": PasskeyUser
}
PasskeyUser
PasswordSetupLinkStatus
Description
State of an invitation or password-reset link. UNKNOWN means the check was declined (rate limited or limiter unavailable), NOT that the link is bad — clients must fall through to the normal form.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"EXPIRED"
Permission
Description
System permission for resource access
Fields
| Field Name | Description |
|---|---|
RolePermission - [RolePermission!]
|
|
UserPermission - [UserPermission!]
|
Who holds this permission directly, in the caller's organization. Requires users:read; null otherwise. |
WarehouseLocation - WarehouseLocation
|
|
action - String
|
|
category - String
|
|
createdAt - String
|
|
description - String
|
|
expiresAt - String
|
|
id - ID
|
|
isSystemDefined - Boolean
|
|
isSystemPermission - Boolean
|
|
location - WarehouseLocation
|
|
locationId - String
|
|
locationScope - LocationScope
|
|
metadata - JSON
|
|
name - String
|
|
organizationId - String
|
|
resource - String
|
|
roles - [RoleType!]
|
|
teams - [Team!]
|
|
updatedAt - String
|
|
users - [User!]
|
Users holding this permission directly, in the caller's organization. Requires users:read; null otherwise. |
Example
{
"RolePermission": [RolePermission],
"UserPermission": [UserPermission],
"WarehouseLocation": WarehouseLocation,
"action": "xyz789",
"category": "abc123",
"createdAt": "xyz789",
"description": "xyz789",
"expiresAt": "xyz789",
"id": "4",
"isSystemDefined": false,
"isSystemPermission": true,
"location": WarehouseLocation,
"locationId": "abc123",
"locationScope": "GLOBAL",
"metadata": {},
"name": "xyz789",
"organizationId": "xyz789",
"resource": "xyz789",
"roles": [RoleType],
"teams": [Team],
"updatedAt": "abc123",
"users": [User]
}
PickSide
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"EAST"
PriceRangeInput
PrincipalType
Description
Type of principal - determines access level and RBAC bypass behavior
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"AUTOMATION"
PrintJob
Description
A print job enqueued for a registered device
Fields
| Field Name | Description |
|---|---|
copies - Int!
|
Number of physical copies the agent should print |
createdAt - String
|
|
device - Device
|
|
deviceId - String
|
|
error - String
|
|
format - PrintJobFormat
|
|
id - ID
|
|
leaseExpiresAt - String
|
|
orgId - String
|
|
pages - String
|
Optional page range (e.g. "1-3"); null means all pages |
payloadSizeBytes - Int
|
|
status - PrintJobStatus
|
|
updatedAt - String
|
Example
{
"copies": 123,
"createdAt": "xyz789",
"device": Device,
"deviceId": "xyz789",
"error": "abc123",
"format": "PDF",
"id": 4,
"leaseExpiresAt": "xyz789",
"orgId": "xyz789",
"pages": "xyz789",
"payloadSizeBytes": 987,
"status": "DISPATCHED",
"updatedAt": "xyz789"
}
PrintJobFormat
Description
Content format of a print job payload
Values
| Enum Value | Description |
|---|---|
|
|
PDF document (base64-encoded) |
|
|
Base64 PNG image label; the agent decodes and prints it as an image |
|
|
Raw ESC/POS or vendor-specific bytes |
|
|
Agent renders its built-in driver-agnostic test page; payload is ignored |
|
|
Zebra Programming Language label |
Example
"PDF"
PrintJobStatus
Description
Lifecycle state of a print job
Values
| Enum Value | Description |
|---|---|
|
|
Dequeued and being processed by the agent |
|
|
Agent reported successful completion |
|
|
Agent reported a failure (see error field) |
|
|
Waiting to be dequeued by the agent |
Example
"DISPATCHED"
Product
Description
Product with full SKU Manager features
Fields
| Field Name | Description |
|---|---|
Organization - Organization!
|
|
ProductLocationInventory - [ProductLocationInventory!]!
|
|
ProductStoreConnection - [ProductStoreConnection!]!
|
|
SourcingListings - [SourcingListing!]!
|
|
allowBackorder - Boolean
|
|
assemblyMode - KitAssemblyMode
|
|
availableQuantity - Int
|
|
barcode - String
|
|
basePrice - String
|
|
brand - String
|
|
bundleComponentCount - Int
|
|
bundleDiscountPercent - String
|
|
bundleItems - [ProductBundleItem!]!
|
|
bundlePricing - BundlePricingType!
|
|
bundledIn - [ProductBundleItem!]!
|
|
category - String
|
|
compareAtPrice - String
|
|
costPrice - String
|
|
countryOfOrigin - String
|
|
createdAt - String!
|
|
customsDescription - String
|
|
defaultVariant - ProductVariant
|
The product's ONLY variant; null when it has several (SKU-1913 — never "the first"). |
description - String
|
|
dimensionUnit - DimensionUnit
|
SKU-1883: length/width/height are always returned in canonical MILLIMETRES, so this always reports MM (or null for a multi-variant product). It will be removed; do not branch on it. |
displayTitle - String!
|
|
effectiveAssemblyMode - KitAssemblyMode
|
SKU-1908: the kit's resolved assembly mode (its own, else the organization default). Null for non-kits. |
handle - String
|
|
hasOnlyDefaultVariant - Boolean
|
Shopify's canonical signal for whether this product has only the synthetic default variant (no real variant axes). Null during the migration window for products not yet re-synced from Shopify. |
height - String
|
|
hsCode - String
|
|
id - ID!
|
|
images - [ProductImage!]!
|
|
isActive - Boolean!
|
|
isActiveSKU - Boolean
|
|
isGiftCard - Boolean!
|
|
kitInventoryMode - KitInventoryMode!
|
Controls inventory deduction behavior for this kit (ACTIVE or SHADOW) |
length - String
|
|
lowStockThreshold - Int
|
|
metaDescription - String
|
|
metaTitle - String
|
|
option1Name - String
|
|
option2Name - String
|
|
option3Name - String
|
|
optionDefinitions - [ProductOptionDefinition!]!
|
Option definitions with names and ordered values |
organizationId - ID!
|
|
primaryImage - ProductImage
|
|
primaryImageId - String
|
|
productLocationInventories - [ProductLocationInventory!]
|
All warehouse inventory records for this product with warehouse details |
productType - String
|
|
productVariants - [ProductVariant!]!
|
|
provinceOfOrigin - String
|
|
publishedAt - String
|
|
purchasableItemId - String
|
Purchasable item ID from default variant (backward compat) |
quantity - Int
|
|
requiresShipping - Boolean
|
|
reservedQuantity - Int
|
Units held by reservations across the product's tracked variants. For BUNDLE products it is gross buildable minus available buildable from the same kit availability summary as quantity — the kits that component reservations (any product's, for shared components) take out of on-hand. Null when unknown or untracked. |
sku - String
|
|
skuType - SKUType!
|
|
slug - String
|
|
status - ProductStatus!
|
|
stockStatus - StockStatus
|
This product's stock verdict, computed from the same predicates that build ?filter=low_stock / ?filter=out_of_stock (SKU-1448) — read it rather than deriving a badge from quantity, which is an on-hand total and disagrees with the filters for a heavily-reserved product. Any tracked variant being empty makes the product OUT_OF_STOCK, and any being low makes it LOW_STOCK, exactly as the filters treat it. Null only when the verdict could not be computed — never a stand-in for IN_STOCK. |
storeConnections - [ProductStoreConnection!]!
|
|
supplier - Supplier
|
|
supplierId - String
|
|
tags - [String!]!
|
|
taxCode - String
|
|
taxable - Boolean
|
|
title - String!
|
|
totalQuantity - Int
|
Units physically on hand across the product’s tracked variants, GROSS of reservations — so totalQuantity - reservedQuantity = availableQuantity. For a BUNDLE it is the kits the on-hand component stock can build (the kit availability summary’s on-hand), the same basis reservedQuantity is derived from. Null when the product has no tracked variant. |
trackInventory - Boolean
|
|
trackInventoryNeedsRestoration - Boolean
|
True when this product is non-BUNDLE AND the default variant's trackInventory disagrees with trackInventoryUserSet. Signals the UI to offer a restoration confirm dialog (BUNDLE→SIMPLE conversion flow). |
trackInventoryUserSet - Boolean
|
The user's last explicit trackInventory choice on the default variant. Auto-management never writes this; surfaced for BUNDLE→SIMPLE restoration prompts. |
type - ProductType!
|
|
updatedAt - String!
|
|
warehouseLocation - String
|
Primary warehouse location for this product (first location with inventory) |
weight - String
|
|
weightUnit - WeightUnit
|
SKU-1883: stored weights are always canonical GRAMS. This field is a legacy column pinned to that value and will be removed; do not branch on it. |
width - String
|
Example
{
"Organization": Organization,
"ProductLocationInventory": [ProductLocationInventory],
"ProductStoreConnection": [ProductStoreConnection],
"SourcingListings": [SourcingListing],
"allowBackorder": true,
"assemblyMode": "BOTH",
"availableQuantity": 987,
"barcode": "xyz789",
"basePrice": "xyz789",
"brand": "xyz789",
"bundleComponentCount": 987,
"bundleDiscountPercent": "abc123",
"bundleItems": [ProductBundleItem],
"bundlePricing": "CALCULATED",
"bundledIn": [ProductBundleItem],
"category": "xyz789",
"compareAtPrice": "xyz789",
"costPrice": "abc123",
"countryOfOrigin": "abc123",
"createdAt": "xyz789",
"customsDescription": "xyz789",
"defaultVariant": ProductVariant,
"description": "xyz789",
"dimensionUnit": "CM",
"displayTitle": "abc123",
"effectiveAssemblyMode": "BOTH",
"handle": "abc123",
"hasOnlyDefaultVariant": true,
"height": "abc123",
"hsCode": "abc123",
"id": "4",
"images": [ProductImage],
"isActive": true,
"isActiveSKU": false,
"isGiftCard": false,
"kitInventoryMode": "ACTIVE",
"length": "abc123",
"lowStockThreshold": 123,
"metaDescription": "abc123",
"metaTitle": "xyz789",
"option1Name": "xyz789",
"option2Name": "abc123",
"option3Name": "abc123",
"optionDefinitions": [ProductOptionDefinition],
"organizationId": 4,
"primaryImage": ProductImage,
"primaryImageId": "xyz789",
"productLocationInventories": [
ProductLocationInventory
],
"productType": "abc123",
"productVariants": [ProductVariant],
"provinceOfOrigin": "abc123",
"publishedAt": "abc123",
"purchasableItemId": "xyz789",
"quantity": 987,
"requiresShipping": false,
"reservedQuantity": 123,
"sku": "xyz789",
"skuType": "BUNDLE",
"slug": "abc123",
"status": "ACTIVE",
"stockStatus": "ALWAYS_IN_STOCK",
"storeConnections": [ProductStoreConnection],
"supplier": Supplier,
"supplierId": "abc123",
"tags": ["xyz789"],
"taxCode": "xyz789",
"taxable": false,
"title": "abc123",
"totalQuantity": 987,
"trackInventory": false,
"trackInventoryNeedsRestoration": true,
"trackInventoryUserSet": false,
"type": "BUNDLE",
"updatedAt": "xyz789",
"warehouseLocation": "abc123",
"weight": "abc123",
"weightUnit": "GRAMS",
"width": "abc123"
}
ProductBundleItem
Description
Product bundle component with quantity
Fields
| Field Name | Description |
|---|---|
bundleProduct - Product
|
|
bundleProductId - ID
|
|
bundleVariantId - ID
|
The kit output variant (ProductVariant.id) this recipe row belongs to. Null = shared across all of the kit's output variants. |
childProduct - Product
|
|
childProductId - ID
|
|
childVariantId - ID
|
The specific component variant (ProductVariant.id) pinned for this recipe row. |
createdAt - String
|
|
id - ID
|
|
quantity - Int
|
|
sortOrder - Int
|
|
updatedAt - String
|
Example
{
"bundleProduct": Product,
"bundleProductId": "4",
"bundleVariantId": 4,
"childProduct": Product,
"childProductId": 4,
"childVariantId": 4,
"createdAt": "abc123",
"id": 4,
"quantity": 987,
"sortOrder": 123,
"updatedAt": "xyz789"
}
ProductBundleItemInput
Example
{
"childVariantId": "4",
"productId": "4",
"quantity": 987,
"sortOrder": 123
}
ProductFilterInput
Fields
| Input Field | Description |
|---|---|
brand - String
|
Products with exactly this brand, ignoring case. |
createdDateRange - DateRangeInput
|
|
hasLowStock - Boolean
|
Filter to products at or below their low-stock threshold AND not already out of stock. A product with one variant below threshold and another variant empty is returned by hasOutOfStock only, matching its stockStatus badge, which reports the most urgent state (SKU-1461) — so this filter and hasOutOfStock are disjoint at the PRODUCT level, not merely per (variant, warehouse) row. ACTIVE products only: an archived product is not restockable, so every stock filter constrains status to ACTIVE and an explicitly supplied status is intersected with it, not honoured in its place — combining this with status: [ARCHIVED] returns zero rows (SKU-1451). |
hasOutOfStock - Boolean
|
Filter to products with at least one empty tracked variant. Takes precedence over hasLowStock: such a product is excluded from that filter even if another variant is merely low, so the two are disjoint at the product level (SKU-1461). ACTIVE products only: an archived product is not restockable, so every stock filter constrains status to ACTIVE and an explicitly supplied status is intersected with it, not honoured in its place — combining this with status: [ARCHIVED] returns zero rows (SKU-1451). |
ids - [ID!]
|
Filter to exactly these product IDs. When supplied, bypasses limit/offset pagination entirely and returns every matching row — for sync callers (SKU-1390) that already know which products they need and must not silently miss one to the default/max page size. An empty list is a real filter and matches nothing. Accepts at most 250 ids per call; a longer list is rejected rather than truncated. |
limit - Int
|
Records per page (max 100, default 25) |
needsRestock - Boolean
|
Filter to products needing restock: the UNION of low-stock and out-of-stock (unlike hasLowStock/hasOutOfStock, which the dashboard metric cards deliberately keep disjoint at the product level so they sum correctly). This is what the dashboard action card and urgency banner link to — the more urgent out-of-stock bucket must not be excluded from the to-do list. When the org has low-stock alerts disabled, the low-stock half contributes nothing (same as hasLowStock) and this resolves to out-of-stock alone. ACTIVE products only: an archived product is not restockable, so every stock filter constrains status to ACTIVE and an explicitly supplied status is intersected with it, not honoured in its place — combining this with status: [ARCHIVED] returns zero rows (SKU-1451). |
offset - Int
|
Number of records to skip for pagination |
organizationId - ID!
|
|
priceRange - PriceRangeInput
|
|
searchTerm - String
|
Words to find, ignoring case. Each word must appear in the title, description, brand, or a variant SKU or title. |
skuPattern - String
|
Products with a variant SKU containing this text, ignoring case. |
skus - [String!]
|
Products with a variant whose SKU is exactly one of these. |
sortBy - String
|
Sort field: title, sku, quantity, createdAt, updatedAt |
sortDirection - String
|
Sort direction: asc or desc (default: desc) |
status - [String!]
|
|
storeConnectionId - ID
|
Filter to products connected to ONE sales channel (SKU-1645). The value is the store connection id — for Shopify, the ShopifyStore id. Matched through ProductStoreConnection, so a product selling on several channels is returned for each. Omitting it keeps the organization-wide view, which is the default and is NOT the same list a channel shows. |
supplierId - ID
|
|
tags - [String!]
|
|
type - [String!]
|
|
updatedDateRange - DateRangeInput
|
|
velocityClass - VelocityClass
|
Filter by ABC velocity class over the last 90 days |
viewMode - ProductViewMode
|
Example
{
"brand": "abc123",
"createdDateRange": DateRangeInput,
"hasLowStock": false,
"hasOutOfStock": true,
"ids": ["4"],
"limit": 123,
"needsRestock": false,
"offset": 987,
"organizationId": "4",
"priceRange": PriceRangeInput,
"searchTerm": "abc123",
"skuPattern": "xyz789",
"skus": ["abc123"],
"sortBy": "abc123",
"sortDirection": "xyz789",
"status": ["xyz789"],
"storeConnectionId": "4",
"supplierId": 4,
"tags": ["xyz789"],
"type": ["abc123"],
"updatedDateRange": DateRangeInput,
"velocityClass": "A",
"viewMode": "ALL_PRODUCTS"
}
ProductImage
Fields
| Field Name | Description |
|---|---|
altText - String
|
|
createdAt - String
|
|
file - File
|
|
fileId - ID
|
|
fileSize - Int
|
|
height - Int
|
|
id - ID!
|
|
imageUrl - String
|
|
product - Product
|
|
productId - ID!
|
|
shopifyImageId - String
|
Numeric ID portion of the Shopify MediaImage GID (e.g. "53766126436719" — the value after the final "/" in "gid://shopify/MediaImage/{id}"). Used by media mutations (productVariantAppendMedia, productReorderMedia, fileDelete); each call site reconstructs the full GID by prefixing. |
shopifyImageLegacyId - String
|
Shopify legacy Image.id — what the products/update webhook payload delivers. Used for inbound matching only. |
shopifyPosition - Int
|
|
sortOrder - Int!
|
|
sourceUrl - String
|
Shopify CDN source URL for pending uploads |
status - String!
|
Processing status: PENDING_UPLOAD | READY | FAILED |
thumbnails - JSON
|
|
updatedAt - String
|
|
url - String
|
|
width - Int
|
Example
{
"altText": "abc123",
"createdAt": "abc123",
"file": File,
"fileId": "4",
"fileSize": 123,
"height": 123,
"id": 4,
"imageUrl": "xyz789",
"product": Product,
"productId": "4",
"shopifyImageId": "xyz789",
"shopifyImageLegacyId": "abc123",
"shopifyPosition": 987,
"sortOrder": 123,
"sourceUrl": "abc123",
"status": "abc123",
"thumbnails": {},
"updatedAt": "xyz789",
"url": "abc123",
"width": 123
}
ProductLocationInventory
Description
Product inventory at a specific warehouse location
Fields
| Field Name | Description |
|---|---|
Product - Product
|
|
ProductVariant - ProductVariant
|
|
WarehouseArea - WarehouseArea
|
|
WarehouseBay - WarehouseBay
|
|
WarehouseBin - WarehouseBin
|
|
WarehouseLocation - WarehouseLocation
|
|
binType - String
|
'default' when the row's bin is the system Default bin, else null (SKU-890 1e). |
createdAt - String
|
|
id - ID
|
|
isPreferred - Boolean!
|
|
lastCountDate - String
|
|
lastSyncAt - String
|
|
locationId - ID
|
|
locationPath - String
|
|
lowStockThreshold - Int
|
|
productId - ID
|
|
productVariantId - String
|
|
quantity - Int
|
|
syncErrors - JSON
|
|
syncStatus - SyncStatus
|
|
updatedAt - String
|
|
warehouseAreaId - String
|
|
warehouseBayId - String
|
|
warehouseBinId - String
|
|
warehouseLocationId - ID
|
Example
{
"Product": Product,
"ProductVariant": ProductVariant,
"WarehouseArea": WarehouseArea,
"WarehouseBay": WarehouseBay,
"WarehouseBin": WarehouseBin,
"WarehouseLocation": WarehouseLocation,
"binType": "abc123",
"createdAt": "xyz789",
"id": "4",
"isPreferred": false,
"lastCountDate": "xyz789",
"lastSyncAt": "xyz789",
"locationId": 4,
"locationPath": "abc123",
"lowStockThreshold": 123,
"productId": 4,
"productVariantId": "xyz789",
"quantity": 987,
"syncErrors": {},
"syncStatus": "ERROR",
"updatedAt": "abc123",
"warehouseAreaId": "abc123",
"warehouseBayId": "abc123",
"warehouseBinId": "xyz789",
"warehouseLocationId": "4"
}
ProductOptionDefinition
ProductStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ACTIVE"
ProductStoreConnection
Description
Product connection to external stores
Fields
| Field Name | Description |
|---|---|
Organization - Organization
|
|
Product - Product
|
|
createdAt - String
|
|
externalProductId - String
|
|
externalSku - String
|
|
externalUrl - String
|
|
externalVariantId - String
|
|
id - ID
|
|
isPublished - Boolean
|
|
lastSyncAt - String
|
|
metadata - String
|
|
organizationId - ID
|
|
product - Product
|
|
productId - ID
|
|
storeConnectionId - ID
|
|
storeDescription - String
|
|
storeInventory - Int
|
|
storeName - String
|
|
storePrice - String
|
|
storeTitle - String
|
|
storeType - LocationType
|
|
surfaces - [ShopifyProductPublicationChannel!]
|
Where the product appears on this channel: every surface, such as Online Store or Point of Sale. isIncluded is true for the ones it is on, which is what setProductChannelSurfaces sets, and isPublished is true where shoppers can see it now, which is false everywhere while the product is a draft. The IDs are the ones setProductChannelSurfaces takes. Null when the channel could not be asked; it is never an empty list standing in for an unknown answer. |
syncError - String
|
|
syncStatus - SyncStatus
|
|
unlinkReason - String
|
|
unlinkedAt - String
|
When this channel link died (SKU-1646). Null means LIVE. A connection to a product deleted on the channel is retained as evidence, so "has a connection" and "is on the channel" are different questions — every consumer deciding the second must consult this. |
updatedAt - String
|
Example
{
"Organization": Organization,
"Product": Product,
"createdAt": "xyz789",
"externalProductId": "abc123",
"externalSku": "xyz789",
"externalUrl": "xyz789",
"externalVariantId": "abc123",
"id": 4,
"isPublished": true,
"lastSyncAt": "xyz789",
"metadata": "abc123",
"organizationId": 4,
"product": Product,
"productId": "4",
"storeConnectionId": "4",
"storeDescription": "abc123",
"storeInventory": 987,
"storeName": "xyz789",
"storePrice": "abc123",
"storeTitle": "abc123",
"storeType": "AMAZON",
"surfaces": [ShopifyProductPublicationChannel],
"syncError": "abc123",
"syncStatus": "ERROR",
"unlinkReason": "abc123",
"unlinkedAt": "abc123",
"updatedAt": "abc123"
}
ProductType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"BUNDLE"
ProductVariant
Description
A sellable variant of a product (e.g., "Red / Large")
Fields
| Field Name | Description |
|---|---|
Product - Product!
|
|
ProductLocationInventory - [ProductLocationInventory!]
|
Inventory rows for this variant, scoped to the variant's organization. |
PurchasableItem - PurchasableItem
|
|
allowBackorder - Boolean!
|
|
availableQuantity - Int
|
|
barcode - String
|
|
basePrice - String
|
|
calculatedCost - String
|
Kit cost computed from component costs plus uplift. Null when nothing is known. Not the same as costPrice, which Shopify owns (SKU-1891). |
calculatedCostIsPartial - Boolean
|
calculatedCost omits at least one component with no recorded cost, so it is a lower bound. |
compareAtPrice - String
|
|
costPrice - String
|
|
countryOfOrigin - String
|
|
createdAt - String!
|
|
customsDescription - String
|
|
dimensionUnit - DimensionUnit!
|
SKU-1883: length/width/height are always returned in canonical MILLIMETRES, so this always reports MM. It will be removed; do not branch on it. |
height - String
|
|
hsCode - String
|
|
id - ID!
|
|
length - String
|
|
lowStockThreshold - Int
|
|
onHandQuantity - Int
|
Physical on-hand for simple variants; gross buildable from component on-hand (ignoring reservations) for BUNDLE variants. Distinguishes reserved-but-present stock from genuinely absent stock. Null = untracked. |
option1Value - String
|
|
option2Value - String
|
|
option3Value - String
|
|
organizationId - ID!
|
|
position - Int!
|
|
primaryImage - ProductImage
|
|
primaryImageId - String
|
|
productId - ID!
|
|
provinceOfOrigin - String
|
|
purchasableItemId - ID
|
The purchasing record for this variant, if one has been created. Null does NOT mean the variant cannot be ordered — the record is created on demand when a purchase-order line names the variant (SKU-1808). |
qrCode - String
|
|
quantity - Int
|
|
requiresShipping - Boolean!
|
|
reservedQuantity - Int
|
Units held by reservations: onHandQuantity − availableQuantity. For simple variants that is the reservation rollup; for BUNDLE variants it is the buildable kits that component reservations (any product's, for shared components) take out of on-hand. Null when either figure is unknown or the variant is untracked. |
sku - String
|
|
stockStatus - StockStatus
|
This variant's stock verdict, computed from the same predicates as the stock filters (SKU-1448). Null only when the verdict could not be computed — never a stand-in for IN_STOCK. |
taxCode - String
|
|
taxable - Boolean!
|
|
title - String!
|
|
trackInventory - Boolean!
|
|
trackInventoryNeedsRestoration - Boolean!
|
True when this variant belongs to a non-BUNDLE product AND trackInventory disagrees with trackInventoryUserSet — i.e. auto-management flipped the flag while the product was a kit, and the user has not yet confirmed/dismissed the restoration prompt. |
trackInventoryUserSet - Boolean!
|
The user's last explicit trackInventory choice. Auto-management never writes this field; surfaced so the UI can offer restoration on BUNDLE→SIMPLE conversion. |
updatedAt - String!
|
|
weight - String
|
|
weightUnit - WeightUnit!
|
SKU-1883: stored weights are always canonical GRAMS. This field is a legacy column pinned to that value and will be removed; do not branch on it. |
width - String
|
Example
{
"Product": Product,
"ProductLocationInventory": [ProductLocationInventory],
"PurchasableItem": PurchasableItem,
"allowBackorder": true,
"availableQuantity": 987,
"barcode": "abc123",
"basePrice": "abc123",
"calculatedCost": "abc123",
"calculatedCostIsPartial": false,
"compareAtPrice": "abc123",
"costPrice": "xyz789",
"countryOfOrigin": "xyz789",
"createdAt": "xyz789",
"customsDescription": "xyz789",
"dimensionUnit": "CM",
"height": "xyz789",
"hsCode": "xyz789",
"id": 4,
"length": "xyz789",
"lowStockThreshold": 987,
"onHandQuantity": 987,
"option1Value": "xyz789",
"option2Value": "abc123",
"option3Value": "xyz789",
"organizationId": "4",
"position": 123,
"primaryImage": ProductImage,
"primaryImageId": "xyz789",
"productId": 4,
"provinceOfOrigin": "abc123",
"purchasableItemId": 4,
"qrCode": "abc123",
"quantity": 987,
"requiresShipping": false,
"reservedQuantity": 987,
"sku": "xyz789",
"stockStatus": "ALWAYS_IN_STOCK",
"taxCode": "abc123",
"taxable": true,
"title": "abc123",
"trackInventory": true,
"trackInventoryNeedsRestoration": false,
"trackInventoryUserSet": false,
"updatedAt": "xyz789",
"weight": "xyz789",
"weightUnit": "GRAMS",
"width": "xyz789"
}
ProductVariantPreferredBin
Description
The preferred (home) bin for a variant at a specific warehouse location.
Fields
| Field Name | Description |
|---|---|
WarehouseBin - WarehouseBin
|
|
id - ID!
|
|
preferredBinId - ID!
|
|
productVariantId - ID!
|
|
warehouseLocationId - ID!
|
Example
{
"WarehouseBin": WarehouseBin,
"id": "4",
"preferredBinId": 4,
"productVariantId": "4",
"warehouseLocationId": "4"
}
ProductViewMode
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"ALL_PRODUCTS"
PublicKeyCredentialDescriptor
PublicKeyCredentialParam
PurchasableItem
Description
Abstraction layer for all items that can be ordered from suppliers
Fields
| Field Name | Description |
|---|---|
Organization - Organization
|
|
PreferredSupplier - Supplier
|
|
ProductVariant - ProductVariant
|
|
Stationery - Stationery
|
|
createdAt - String
|
|
defaultUnitCost - String
|
|
id - ID
|
|
itemName - String
|
Name of the item (Product name or Stationery name) |
itemSku - String
|
SKU of the item (Product SKU or Stationery SKU) |
leadTimeDays - Int
|
|
minimumOrderQty - Int
|
|
organizationId - ID
|
|
preferredSupplierId - String
|
|
supplierSku - String
|
|
type - PurchasableType
|
|
updatedAt - String
|
Example
{
"Organization": Organization,
"PreferredSupplier": Supplier,
"ProductVariant": ProductVariant,
"Stationery": Stationery,
"createdAt": "abc123",
"defaultUnitCost": "xyz789",
"id": 4,
"itemName": "xyz789",
"itemSku": "xyz789",
"leadTimeDays": 987,
"minimumOrderQty": 123,
"organizationId": "4",
"preferredSupplierId": "xyz789",
"supplierSku": "xyz789",
"type": "PRODUCT",
"updatedAt": "abc123"
}
PurchasableType
Description
Types of items that can be purchased from suppliers
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"PRODUCT"
PurchaseOrder
Description
Purchase order for ordering from suppliers
Fields
| Field Name | Description |
|---|---|
CreatedBy - User!
|
Errors once the creating user is deleted. Use CreatedByUser (nullable) and createdByUserNameSnapshot. |
CreatedByUser - User
|
The user who raised the purchase order; null once that user is deleted (the purchase order is kept). createdByUserId and the createdByUser*Snapshot fields still say who it was. |
InventoryReceipts - [InventoryReceipt!]!
|
|
LastModifiedBy - User
|
|
Organization - Organization!
|
|
PurchaseOrderItems - [PurchaseOrderItem!]!
|
|
Supplier - Supplier!
|
|
WarehouseLocation - WarehouseLocation
|
|
actualDeliveryDate - String
|
|
approvedAt - String
|
|
approvedBy - String
|
|
createdAt - String!
|
|
createdByUserEmailSnapshot - String
|
Email of the user who raised the purchase order, recorded at creation. |
createdByUserId - ID!
|
|
createdByUserIdSnapshot - ID
|
Id of the user who raised the purchase order, recorded at creation. Still set after that user is deleted. |
createdByUserNameSnapshot - String
|
Display name of the user who raised the purchase order, recorded at creation. Show it, marked as a deleted user, when CreatedByUser is null. |
currency - String!
|
|
exchangeRate - String
|
|
expectedDeliveryDate - String
|
|
id - ID!
|
|
internalNotes - String
|
|
internalPoNumber - Int!
|
|
isFullyReceived - Boolean!
|
|
itemCount - Int!
|
|
lastModifiedByUserEmailSnapshot - String
|
Email of the user who last modified the purchase order, recorded at the time. |
lastModifiedByUserId - ID
|
|
lastModifiedByUserIdSnapshot - ID
|
Id of the user who last modified the purchase order, recorded at the time. Still set after that user is deleted. |
lastModifiedByUserNameSnapshot - String
|
Display name of the user who last modified the purchase order, recorded at the time. Show it, marked as a deleted user, when LastModifiedBy is null. |
notes - String
|
|
orderDate - String!
|
|
organizationId - ID!
|
|
otherCosts - String!
|
|
paymentTerms - String
|
|
pdfFileId - String
|
Id of the stored PDF File, or null if none has been rendered yet. Durable — unlike pdfUrl. |
pdfGeneratedAt - String
|
|
pdfUrl - String
|
A download URL minted FOR THIS REQUEST from the stored PDF, or null if none is stored. It expires — open it, never store or cache it. Selecting this field costs a signing round-trip per row, so prefer pdfFileId in lists and the generatePurchaseOrderPdf mutation at the moment the user actually clicks download. |
poNumber - String!
|
|
receiptCount - Int!
|
|
remainingQuantity - Int!
|
|
sendCount - Int!
|
|
sentAt - String
|
|
sentTo - String
|
|
shipToWarehouseId - ID
|
|
shippingAddress - String
|
|
shippingCity - String
|
|
shippingCost - String!
|
|
shippingCountry - String
|
|
shippingMethod - String
|
|
shippingPostalCode - String
|
|
shippingState - String
|
|
status - PurchaseOrderStatus!
|
|
subtotal - String!
|
|
supplierId - ID!
|
|
taxAmount - String!
|
|
totalCost - String!
|
|
totalQuantityOrdered - Int!
|
|
totalQuantityReceived - Int!
|
|
trackingNumber - String
|
|
trackingUrl - String
|
|
updatedAt - String!
|
Example
{
"CreatedBy": User,
"CreatedByUser": User,
"InventoryReceipts": [InventoryReceipt],
"LastModifiedBy": User,
"Organization": Organization,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"WarehouseLocation": WarehouseLocation,
"actualDeliveryDate": "xyz789",
"approvedAt": "xyz789",
"approvedBy": "xyz789",
"createdAt": "abc123",
"createdByUserEmailSnapshot": "xyz789",
"createdByUserId": 4,
"createdByUserIdSnapshot": "4",
"createdByUserNameSnapshot": "abc123",
"currency": "xyz789",
"exchangeRate": "abc123",
"expectedDeliveryDate": "xyz789",
"id": 4,
"internalNotes": "xyz789",
"internalPoNumber": 987,
"isFullyReceived": false,
"itemCount": 123,
"lastModifiedByUserEmailSnapshot": "xyz789",
"lastModifiedByUserId": "4",
"lastModifiedByUserIdSnapshot": "4",
"lastModifiedByUserNameSnapshot": "abc123",
"notes": "xyz789",
"orderDate": "xyz789",
"organizationId": 4,
"otherCosts": "abc123",
"paymentTerms": "xyz789",
"pdfFileId": "abc123",
"pdfGeneratedAt": "xyz789",
"pdfUrl": "abc123",
"poNumber": "abc123",
"receiptCount": 987,
"remainingQuantity": 987,
"sendCount": 123,
"sentAt": "xyz789",
"sentTo": "abc123",
"shipToWarehouseId": "4",
"shippingAddress": "xyz789",
"shippingCity": "abc123",
"shippingCost": "abc123",
"shippingCountry": "abc123",
"shippingMethod": "abc123",
"shippingPostalCode": "xyz789",
"shippingState": "xyz789",
"status": "CANCELLED",
"subtotal": "xyz789",
"supplierId": "4",
"taxAmount": "xyz789",
"totalCost": "abc123",
"totalQuantityOrdered": 987,
"totalQuantityReceived": 123,
"trackingNumber": "abc123",
"trackingUrl": "abc123",
"updatedAt": "abc123"
}
PurchaseOrderItem
Description
Purchase order line item
Fields
| Field Name | Description |
|---|---|
InventoryReceiptItems - [InventoryReceiptItem!]!
|
|
Product - Product
|
|
PurchasableItem - PurchasableItem
|
|
PurchaseOrder - PurchaseOrder!
|
|
SourcingListing - SourcingListing
|
|
createdAt - String!
|
|
id - ID!
|
|
itemName - String!
|
|
itemSku - String!
|
|
itemType - String
|
|
lineTotal - String!
|
|
notes - String
|
|
productId - ID
|
|
productVariantId - ID
|
The exact variant this line orders, when the line was raised against one. Null for stationery and for lines predating variant-aware ordering. Read it back rather than deriving a variant from productId — see docs/development/VARIANT_RESOLUTION.md. |
purchasableItemId - ID
|
|
purchaseOrderId - ID!
|
|
quantityOrdered - Int!
|
|
quantityOutstanding - Int!
|
|
quantityReceived - Int!
|
|
sourcingListingId - ID
|
|
supplierSku - String
|
|
unitCost - String!
|
|
unitCostOverridden - Boolean!
|
True when a human typed this cost. Quantity changes then leave it alone rather than re-applying the price ladder. |
updatedAt - String!
|
Example
{
"InventoryReceiptItems": [InventoryReceiptItem],
"Product": Product,
"PurchasableItem": PurchasableItem,
"PurchaseOrder": PurchaseOrder,
"SourcingListing": SourcingListing,
"createdAt": "xyz789",
"id": 4,
"itemName": "abc123",
"itemSku": "xyz789",
"itemType": "abc123",
"lineTotal": "abc123",
"notes": "abc123",
"productId": "4",
"productVariantId": "4",
"purchasableItemId": "4",
"purchaseOrderId": "4",
"quantityOrdered": 987,
"quantityOutstanding": 987,
"quantityReceived": 987,
"sourcingListingId": "4",
"supplierSku": "xyz789",
"unitCost": "abc123",
"unitCostOverridden": true,
"updatedAt": "xyz789"
}
PurchaseOrderItemInput
Fields
| Input Field | Description |
|---|---|
notes - String
|
|
productVariantId - ID
|
The variant being bought. Preferred over purchasableItemId — the purchasing record is created on demand if the variant has none. Exactly one of the two is required. |
purchasableItemId - ID
|
An existing purchasing record (the only way to order STATIONERY). Exactly one of this and productVariantId is required. |
quantityOrdered - Int!
|
|
sourcingListingId - ID
|
|
unitCost - String!
|
Example
{
"notes": "abc123",
"productVariantId": 4,
"purchasableItemId": 4,
"quantityOrdered": 987,
"sourcingListingId": 4,
"unitCost": "xyz789"
}
PurchaseOrderStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"CANCELLED"
ReceiptStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"CANCELLED"
RelyingParty
ReorderProductImagesInput
RequestProductImageUploadInput
ResolvedShippingService
Description
The order's resolved shipping service for display (Orders index, etc.)
Fields
| Field Name | Description |
|---|---|
scope - ShippingServiceScope
|
Domestic or international, as the carrier declares the service. Null when unknown (an unmapped checkout title, or a code the carrier does not declare). |
serviceCode - String
|
|
serviceName - String
|
|
source - ResolvedShippingSource
|
|
tier - ShippingServiceTier
|
Speed tier, as the carrier declares the service. Null when unknown. Never inferred from the service name. |
Example
{
"scope": "DOMESTIC",
"serviceCode": "abc123",
"serviceName": "abc123",
"source": "ADAPTER_ALIAS",
"tier": "ECONOMY"
}
ResolvedShippingSource
Description
MAPPING = the organization's shipping-method mapping matched the rate code or title; ADAPTER_ALIAS = a carrier adapter recognized the inbound rate code; RAW_TITLE = fell back to the order shipping method title
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"ADAPTER_ALIAS"
RolePermission
Description
Join table linking roles to permissions
Example
{
"Permission": Permission,
"Role": RoleType,
"createdAt": "xyz789",
"id": "4",
"permissionId": 4,
"roleId": 4,
"updatedAt": "abc123"
}
RoleType
Description
User role with associated permissions
Fields
| Field Name | Description |
|---|---|
RolePermission - [RolePermission!]
|
|
TeamMember - [TeamMember!]
|
Team memberships with this role, in the caller's organization. Requires users:read; null otherwise. |
UserRole - [UserRole!]
|
Who holds this role, in the caller's organization. Requires users:read; null otherwise. |
color - String
|
|
createdAt - String
|
|
description - String
|
|
id - ID
|
|
isSystemDefined - Boolean
|
|
isSystemRole - Boolean
|
|
name - String
|
|
organizationId - String
|
|
permissions - [Permission!]
|
|
teams - [Team!]
|
|
updatedAt - String
|
|
users - [User!]
|
Users holding this role, in the caller's organization. Requires users:read; null otherwise. |
Example
{
"RolePermission": [RolePermission],
"TeamMember": [TeamMember],
"UserRole": [UserRole],
"color": "xyz789",
"createdAt": "xyz789",
"description": "xyz789",
"id": "4",
"isSystemDefined": false,
"isSystemRole": true,
"name": "xyz789",
"organizationId": "abc123",
"permissions": [Permission],
"teams": [Team],
"updatedAt": "abc123",
"users": [User]
}
SKUType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"BUNDLE"
SalesChannel
Description
A sales channel connected to your organization.
Fields
| Field Name | Description |
|---|---|
defaultSurfaceIds - [ID!]
|
Where a product SKU Manager creates on this channel appears by default, as surface IDs from salesChannelSurfaces. Empty means none: a new product is on no surface until you set them with setProductChannelSurfaces. Set it in the web app under Organization, Shopify, Sync. Null when the channel has no sync settings yet. |
domain - String
|
|
id - ID
|
|
isActive - Boolean
|
|
name - String
|
|
status - String
|
CONNECTED, or REAUTH_REQUIRED when the store must be reconnected.
|
type - String
|
The platform, such as SHOPIFY. |
Example
{
"defaultSurfaceIds": ["4"],
"domain": "xyz789",
"id": "4",
"isActive": true,
"name": "abc123",
"status": "xyz789",
"type": "xyz789"
}
SetShopifyProductPublicationsResult
ShippingServiceScope
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"DOMESTIC"
ShippingServiceTier
Description
ECONOMY = the carrier's cheapest/slowest tier; STANDARD = its default tier; EXPRESS = any expedited tier (express, courier, time-definite)
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"ECONOMY"
ShopifyProductPublicationChannel
Description
A product's publication state on a single sales channel
Fields
| Field Name | Description |
|---|---|
isIncluded - Boolean
|
Whether the product is on this surface, whatever its status: what setProductChannelSurfaces sets. A draft can be on a surface without being visible there yet. Null when it could not be read from the channel. |
isPublished - Boolean
|
Whether shoppers can see the product on this surface now. False on every surface while the product is a draft, including the ones it is on; use isIncluded for that. |
shopifyPublicationId - ID
|
|
title - String
|
Example
{
"isIncluded": false,
"isPublished": true,
"shopifyPublicationId": 4,
"title": "xyz789"
}
ShopifyStorePublication
SourcingListing
Description
A place a product or variant can be bought from: a supplier account, or a bare URL with no supplier record.
Fields
| Field Name | Description |
|---|---|
PriceBreaks - [SourcingListingPriceBreak!]!
|
|
Product - Product!
|
|
ProductVariant - ProductVariant
|
|
PurchaseOrderItems - [PurchaseOrderItem!]!
|
|
Supplier - Supplier
|
|
createdAt - String!
|
|
currency - String!
|
|
freeShippingThreshold - String
|
|
id - ID!
|
|
isActive - Boolean!
|
|
isPrimary - Boolean!
|
|
lastOrderedAt - String
|
|
lastVerifiedAt - String
|
When someone last confirmed this price is still real. |
leadTimeDays - Int
|
|
listingUrl - String
|
|
minimumOrderQuantity - Int
|
In units, not packs. |
notes - String
|
|
organizationId - ID!
|
|
packSize - Int!
|
|
productId - ID!
|
|
productVariantId - ID
|
Null means the listing applies to the whole product. |
quoteAt - SourcingQuote
|
|
Arguments
|
|
shippingFee - String
|
Null means postage was never recorded — not that it is free. |
supplierId - ID
|
|
supplierProductName - String
|
|
supplierSku - String
|
|
updatedAt - String!
|
|
Example
{
"PriceBreaks": [SourcingListingPriceBreak],
"Product": Product,
"ProductVariant": ProductVariant,
"PurchaseOrderItems": [PurchaseOrderItem],
"Supplier": Supplier,
"createdAt": "xyz789",
"currency": "abc123",
"freeShippingThreshold": "abc123",
"id": "4",
"isActive": false,
"isPrimary": false,
"lastOrderedAt": "abc123",
"lastVerifiedAt": "xyz789",
"leadTimeDays": 123,
"listingUrl": "xyz789",
"minimumOrderQuantity": 987,
"notes": "xyz789",
"organizationId": "4",
"packSize": 987,
"productId": 4,
"productVariantId": "4",
"quoteAt": SourcingQuote,
"shippingFee": "abc123",
"supplierId": "4",
"supplierProductName": "abc123",
"supplierSku": "xyz789",
"updatedAt": "xyz789"
}
SourcingListingPriceBreak
Description
One rung of a listing’s quantity ladder. Quantity in packs, price per pack.
Example
{
"createdAt": "xyz789",
"id": 4,
"minPackQuantity": 987,
"pricePerPack": "abc123",
"sourcingListingId": "4",
"updatedAt": "abc123"
}
SourcingPriceBreakInput
SourcingQuantityWarning
Description
Advisory conditions on a quantity. These never block an order — real purchasing has exceptions (a sample order below MOQ, a supplier who will split a pack).
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"BELOW_MINIMUM_ORDER_QUANTITY"
SourcingQuote
Description
What one listing costs for a given quantity, with the ladder rung and postage resolved.
Fields
| Field Name | Description |
|---|---|
appliedBreakMinPackQuantity - Int
|
|
currency - String!
|
|
landedTotal - String
|
|
landedUnitCost - String
|
Goods plus postage, per unit, amortised over this listing alone. For ranking sources — postage is charged per ORDER, so writing this to a PO line would count it once per line. |
merchandiseSubtotal - String
|
|
packQuantity - Int!
|
|
pricePerPack - String
|
|
shippingFee - String
|
Null means postage was never recorded for this listing — not that it is free. |
shippingWaived - Boolean!
|
|
unitCost - String
|
Goods only, per unit. This is what a purchase-order line stores. |
unitQuantity - Int!
|
Units actually received — the requested amount rounded up to a whole pack. |
warnings - [SourcingQuantityWarning!]!
|
Example
{
"appliedBreakMinPackQuantity": 123,
"currency": "xyz789",
"landedTotal": "xyz789",
"landedUnitCost": "xyz789",
"merchandiseSubtotal": "xyz789",
"packQuantity": 123,
"pricePerPack": "xyz789",
"shippingFee": "xyz789",
"shippingWaived": false,
"unitCost": "abc123",
"unitQuantity": 987,
"warnings": ["BELOW_MINIMUM_ORDER_QUANTITY"]
}
Stationery
Description
Packaging material for fulfillment operations
Fields
| Field Name | Description |
|---|---|
costPerUnit - String
|
|
createdAt - String!
|
|
dimensionsDisplay - String
|
Formatted dimensions for display |
heightMm - Int
|
|
id - ID!
|
|
isActive - Boolean!
|
|
isLowStock - Boolean!
|
True if quantity is at or below reorder point |
labelHeightMm - Int
|
|
labelWidthMm - Int
|
|
labelsPerRoll - Int
|
|
lengthMm - Int
|
|
name - String!
|
|
notes - String
|
|
organizationId - ID!
|
|
qrCode - String
|
|
quantity - Int!
|
|
reorderPoint - Int
|
|
reorderQuantity - Int
|
|
sku - String
|
|
supplier - Supplier
|
|
supplierId - ID
|
|
supplierSku - String
|
|
type - PackagingType!
|
|
updatedAt - String!
|
|
warehouseLocation - WarehouseLocation
|
|
warehouseLocationId - ID
|
|
weightGrams - Int
|
|
widthMm - Int
|
Example
{
"costPerUnit": "abc123",
"createdAt": "abc123",
"dimensionsDisplay": "abc123",
"heightMm": 123,
"id": "4",
"isActive": true,
"isLowStock": true,
"labelHeightMm": 123,
"labelWidthMm": 123,
"labelsPerRoll": 123,
"lengthMm": 123,
"name": "abc123",
"notes": "abc123",
"organizationId": 4,
"qrCode": "xyz789",
"quantity": 123,
"reorderPoint": 987,
"reorderQuantity": 123,
"sku": "xyz789",
"supplier": Supplier,
"supplierId": 4,
"supplierSku": "xyz789",
"type": "BOX",
"updatedAt": "abc123",
"warehouseLocation": WarehouseLocation,
"warehouseLocationId": "4",
"weightGrams": 987,
"widthMm": 987
}
StationeryLocationStock
Description
Stock levels for stationery at a specific warehouse location
Fields
| Field Name | Description |
|---|---|
availableQuantity - Int
|
|
createdAt - String
|
|
id - ID
|
|
lastCountDate - String
|
|
lastRestockDate - String
|
|
maxStock - Int
|
|
notes - String
|
|
organizationId - ID
|
|
quantity - Int
|
|
reorderPoint - Int
|
|
reservedQuantity - Int
|
|
stationeryType - StationeryType
|
|
stationeryTypeId - ID
|
|
updatedAt - String
|
|
warehouseLocation - WarehouseLocation
|
|
warehouseLocationId - ID
|
Example
{
"availableQuantity": 987,
"createdAt": "xyz789",
"id": 4,
"lastCountDate": "xyz789",
"lastRestockDate": "xyz789",
"maxStock": 123,
"notes": "xyz789",
"organizationId": "4",
"quantity": 123,
"reorderPoint": 987,
"reservedQuantity": 123,
"stationeryType": StationeryType,
"stationeryTypeId": "4",
"updatedAt": "abc123",
"warehouseLocation": WarehouseLocation,
"warehouseLocationId": 4
}
StationeryType
Description
Stationery or packing material type
Fields
| Field Name | Description |
|---|---|
category - String
|
|
cost - String
|
|
createdAt - String
|
|
description - String
|
|
dimensions - JSON
|
|
id - ID
|
|
isActive - Boolean
|
|
locationStock - [StationeryLocationStock!]
|
|
organizationId - ID
|
|
sku - String
|
|
supplier - String
|
|
supplierSku - String
|
|
title - String
|
|
totalAvailableQuantity - Int
|
|
totalQuantity - Int
|
|
updatedAt - String
|
|
weight - Float
|
Example
{
"category": "abc123",
"cost": "abc123",
"createdAt": "abc123",
"description": "abc123",
"dimensions": {},
"id": 4,
"isActive": true,
"locationStock": [StationeryLocationStock],
"organizationId": "4",
"sku": "abc123",
"supplier": "xyz789",
"supplierSku": "xyz789",
"title": "abc123",
"totalAvailableQuantity": 987,
"totalQuantity": 123,
"updatedAt": "xyz789",
"weight": 987.65
}
StepStatus
Description
Status of an individual fulfillment step
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"COMPLETED"
StockStatus
Description
Server-computed stock verdict, identical to the stock filters' buckets
Values
| Enum Value | Description |
|---|---|
|
|
Nothing here tracks inventory (e.g. a service or an untracked kit). |
|
|
Tracked, available, and above every threshold. |
|
|
At least one tracked (variant, warehouse) rollup is at or below its low-stock threshold, with availability still above zero. |
|
|
At least one tracked variant has no availability anywhere. |
Example
"ALWAYS_IN_STOCK"
StoreLocation
Description
Available store location from connected platforms
Example
{
"address": "abc123",
"city": "abc123",
"country": "xyz789",
"id": "abc123",
"isActive": true,
"metadata": {},
"name": "xyz789",
"postalCode": "abc123",
"state": "xyz789",
"storeConnectionId": 4,
"storeType": "AMAZON"
}
StoreLocationFetchStatus
Description
Whether the live Shopify lookup succeeded for one store.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"OK"
StoreType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AMAZON"
String
Description
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"abc123"
SupplementalItemInput
Fields
| Input Field | Description |
|---|---|
orderLineItemId - ID
|
Required for RE_SEND |
productId - ID
|
Required for COMPLIMENTARY |
quantity - Int!
|
|
type - SupplementalItemType!
|
|
variantId - ID
|
Required for COMPLIMENTARY |
Example
{
"orderLineItemId": 4,
"productId": "4",
"quantity": 123,
"type": "COMPLIMENTARY",
"variantId": "4"
}
SupplementalItemType
Description
Type of item in a supplemental fulfillment
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"COMPLIMENTARY"
Supplier
Description
Supplier with contact and purchasing information
Fields
| Field Name | Description |
|---|---|
Organization - Organization!
|
|
PurchaseOrders - [PurchaseOrder!]!
|
|
SourcingListings - [SourcingListing!]!
|
|
address - String
|
|
city - String
|
|
code - String
|
|
contactEmail - String
|
|
contactName - String
|
|
contactPhone - String
|
|
country - String
|
|
countryCode - String
|
|
createdAt - String!
|
|
currency - String!
|
|
description - String
|
|
id - ID!
|
|
isActive - Boolean!
|
|
leadTimeDays - Int
|
|
metadata - String
|
|
minimumOrderValue - String
|
|
name - String!
|
|
notes - String
|
|
organizationId - ID!
|
|
paymentTerms - String
|
|
postalCode - String
|
|
productCount - Int
|
|
purchaseOrderCount - Int
|
|
purchasePortalUrl - String
|
|
rating - Int
|
|
shippingMethod - String
|
|
state - String
|
|
updatedAt - String!
|
|
website - String
|
Example
{
"Organization": Organization,
"PurchaseOrders": [PurchaseOrder],
"SourcingListings": [SourcingListing],
"address": "abc123",
"city": "abc123",
"code": "abc123",
"contactEmail": "abc123",
"contactName": "abc123",
"contactPhone": "abc123",
"country": "abc123",
"countryCode": "xyz789",
"createdAt": "xyz789",
"currency": "abc123",
"description": "abc123",
"id": 4,
"isActive": true,
"leadTimeDays": 987,
"metadata": "abc123",
"minimumOrderValue": "xyz789",
"name": "abc123",
"notes": "abc123",
"organizationId": "4",
"paymentTerms": "abc123",
"postalCode": "xyz789",
"productCount": 987,
"purchaseOrderCount": 987,
"purchasePortalUrl": "xyz789",
"rating": 123,
"shippingMethod": "xyz789",
"state": "abc123",
"updatedAt": "xyz789",
"website": "abc123"
}
SyncStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ERROR"
Team
Description
Team for organizing users
Fields
| Field Name | Description |
|---|---|
DefaultRole - RoleType
|
|
Organization - Organization
|
|
TeamMember - [TeamMember!]
|
|
color - String
|
|
createdAt - String
|
|
defaultPermissions - JSON
|
|
defaultRole - RoleType
|
|
defaultRoleId - String
|
|
description - String
|
|
id - ID
|
|
isActive - Boolean
|
|
memberCount - Int
|
|
members - [TeamMember!]
|
|
name - String
|
|
organizationId - ID
|
|
permissions - [Permission!]
|
|
roleCount - Int
|
|
roles - [RoleType!]
|
|
updatedAt - String
|
Example
{
"DefaultRole": RoleType,
"Organization": Organization,
"TeamMember": [TeamMember],
"color": "abc123",
"createdAt": "abc123",
"defaultPermissions": {},
"defaultRole": RoleType,
"defaultRoleId": "abc123",
"description": "abc123",
"id": 4,
"isActive": true,
"memberCount": 987,
"members": [TeamMember],
"name": "abc123",
"organizationId": 4,
"permissions": [Permission],
"roleCount": 987,
"roles": [RoleType],
"updatedAt": "xyz789"
}
TeamMember
Description
Team member relationship
Example
{
"Role": RoleType,
"Team": Team,
"User": User,
"currentRole": RoleType,
"currentRoleId": "xyz789",
"id": "4",
"joinedAt": "abc123",
"roleTypeId": "xyz789",
"team": Team,
"teamId": "4",
"user": User,
"userId": 4
}
UnlinkedStoreLocation
Description
A Shopify location with no active warehouse link. Fetched live from Shopify; never persisted.
Example
{
"hasActiveInventory": false,
"id": "abc123",
"isActive": false,
"isFulfillmentService": true,
"name": "xyz789"
}
UnlinkedStoreLocationsResult
Fields
| Field Name | Description |
|---|---|
stores - [UnlinkedStoreLocationsStore!]
|
Example
{"stores": [UnlinkedStoreLocationsStore]}
UnlinkedStoreLocationsStore
Fields
| Field Name | Description |
|---|---|
error - String
|
|
locations - [UnlinkedStoreLocation!]
|
|
shopDomain - String
|
|
status - StoreLocationFetchStatus
|
|
storeId - ID
|
Example
{
"error": "xyz789",
"locations": [UnlinkedStoreLocation],
"shopDomain": "xyz789",
"status": "OK",
"storeId": 4
}
UpdateInventoryInput
Fields
| Input Field | Description |
|---|---|
expectedWarehouseOnHand - Int
|
|
locationId - ID
|
|
notes - String
|
|
organizationId - ID!
|
|
originStoreId - ID
|
|
productId - ID!
|
|
productVariantId - ID!
|
|
quantity - Int!
|
|
reason - String
|
|
source - MovementSource
|
|
warehouseAreaId - ID
|
|
warehouseBayId - ID
|
|
warehouseBinId - ID
|
|
warehouseLocationId - ID!
|
Example
{
"expectedWarehouseOnHand": 987,
"locationId": 4,
"notes": "abc123",
"organizationId": 4,
"originStoreId": "4",
"productId": "4",
"productVariantId": 4,
"quantity": 987,
"reason": "xyz789",
"source": "AMAZON",
"warehouseAreaId": 4,
"warehouseBayId": 4,
"warehouseBinId": 4,
"warehouseLocationId": "4"
}
UpdateInventoryReceiptInput
UpdateOrderInput
Fields
| Input Field | Description |
|---|---|
cancelReason - String
|
|
cancelStaffNote - String
|
|
cancelledAt - String
|
|
capturedAmount - String
|
|
carrier - String
|
|
closedAt - String
|
|
confirmed - Boolean
|
|
currency - String
|
|
currentShippingCost - String
|
|
customerId - ID
|
|
customerIp - String
|
|
customerNotes - String
|
|
deliveredAt - String
|
|
discountAmount - String
|
|
discountCodes - JSON
|
|
email - String
|
|
exchangeRate - String
|
|
fulfilledAt - String
|
|
fulfillmentGroups - [FulfillmentGroupInput!]
|
|
fulfillmentStatus - String
|
|
importCharges - ImportChargesFactInput
|
|
internalNotes - String
|
|
lastSyncedAt - String
|
|
lineItems - [LineItemInput!]
|
|
metadata - JSON
|
|
notifyCustomerOnRefund - Boolean
|
|
orderDate - String
|
|
orderNumber - String
|
|
paidAt - String
|
|
paymentGateway - String
|
|
paymentMethod - String
|
|
paymentStatus - String
|
|
phone - String
|
|
presentmentCapturedAmount - String
|
|
presentmentCurrency - String
|
|
presentmentCurrentShippingCost - String
|
|
presentmentDiscountAmount - String
|
|
presentmentRefundedAmount - String
|
|
presentmentShippingCost - String
|
|
presentmentShippingDiscountAmount - String
|
|
presentmentSubtotal - String
|
|
presentmentTaxAmount - String
|
|
presentmentTotalAmount - String
|
|
processedAt - String
|
|
refundedAmount - String
|
|
refunds - JSON
|
|
restockOnCancel - Boolean
|
|
riskAssessmentDetails - JSON
|
|
riskLevel - String
|
|
riskRecommendation - String
|
|
shippingAddress - AddressInput
|
|
shippingCost - String
|
|
shippingDiscountAmount - String
|
|
shippingLines - JSON
|
|
shippingMethod - String
|
|
shopifyUpdatedAt - String
|
|
status - String
|
|
subtotal - String
|
|
syncError - String
|
|
syncStatus - String
|
|
tags - [String!]
|
|
taxAmount - String
|
|
taxLines - [OrderTaxLineInput!]
|
|
taxesIncluded - Boolean
|
|
totalAmount - String
|
|
trackingNumber - String
|
|
trackingUrl - String
|
|
transactions - JSON
|
Example
{
"cancelReason": "xyz789",
"cancelStaffNote": "xyz789",
"cancelledAt": "abc123",
"capturedAmount": "xyz789",
"carrier": "xyz789",
"closedAt": "abc123",
"confirmed": true,
"currency": "abc123",
"currentShippingCost": "xyz789",
"customerId": 4,
"customerIp": "xyz789",
"customerNotes": "abc123",
"deliveredAt": "abc123",
"discountAmount": "abc123",
"discountCodes": {},
"email": "abc123",
"exchangeRate": "abc123",
"fulfilledAt": "abc123",
"fulfillmentGroups": [FulfillmentGroupInput],
"fulfillmentStatus": "abc123",
"importCharges": ImportChargesFactInput,
"internalNotes": "xyz789",
"lastSyncedAt": "xyz789",
"lineItems": [LineItemInput],
"metadata": {},
"notifyCustomerOnRefund": false,
"orderDate": "abc123",
"orderNumber": "abc123",
"paidAt": "abc123",
"paymentGateway": "abc123",
"paymentMethod": "abc123",
"paymentStatus": "abc123",
"phone": "abc123",
"presentmentCapturedAmount": "xyz789",
"presentmentCurrency": "abc123",
"presentmentCurrentShippingCost": "abc123",
"presentmentDiscountAmount": "abc123",
"presentmentRefundedAmount": "abc123",
"presentmentShippingCost": "xyz789",
"presentmentShippingDiscountAmount": "xyz789",
"presentmentSubtotal": "xyz789",
"presentmentTaxAmount": "abc123",
"presentmentTotalAmount": "xyz789",
"processedAt": "xyz789",
"refundedAmount": "xyz789",
"refunds": {},
"restockOnCancel": false,
"riskAssessmentDetails": {},
"riskLevel": "abc123",
"riskRecommendation": "xyz789",
"shippingAddress": AddressInput,
"shippingCost": "xyz789",
"shippingDiscountAmount": "abc123",
"shippingLines": {},
"shippingMethod": "abc123",
"shopifyUpdatedAt": "xyz789",
"status": "abc123",
"subtotal": "xyz789",
"syncError": "abc123",
"syncStatus": "xyz789",
"tags": ["abc123"],
"taxAmount": "xyz789",
"taxLines": [OrderTaxLineInput],
"taxesIncluded": false,
"totalAmount": "xyz789",
"trackingNumber": "abc123",
"trackingUrl": "abc123",
"transactions": {}
}
UpdateProductImageInput
Example
{
"altText": "xyz789",
"clearFields": ["xyz789"],
"fileId": "xyz789",
"imageId": 4,
"shopifyImageId": "xyz789",
"shopifyImageLegacyId": "xyz789",
"shopifyPosition": 123,
"sortOrder": 987,
"status": "abc123"
}
UpdateProductInput
Description
Prices, weight and dimensions are decimal strings, such as "19.95" or "18", so no precision is lost; a JSON number is refused. Weight is in grams and dimensions in millimetres.
Fields
| Input Field | Description |
|---|---|
allowBackorder - Boolean
|
|
barcode - String
|
|
basePrice - String
|
|
brand - String
|
|
bundleItems - [ProductBundleItemInput!]
|
|
bundlePricing - String
|
|
category - String
|
|
compareAtPrice - String
|
|
costPrice - String
|
|
countryOfOrigin - String
|
|
customsDescription - String
|
|
description - String
|
|
dimensionUnit - String
|
|
handle - String
|
|
hasOnlyDefaultVariant - Boolean
|
|
height - String
|
|
hsCode - String
|
|
isGiftCard - Boolean
|
|
length - String
|
|
lowStockThreshold - Int
|
|
metaDescription - String
|
|
metaTitle - String
|
|
option1Name - String
|
|
option1Values - [String!]
|
|
option2Name - String
|
|
option2Values - [String!]
|
|
option3Name - String
|
|
option3Values - [String!]
|
|
organizationId - ID!
|
|
primaryImageId - ID
|
|
productType - String
|
|
provinceOfOrigin - String
|
|
publishedAt - String
|
|
quantity - Int
|
|
requiresShipping - Boolean
|
|
reservedQuantity - Int
|
|
sku - String
|
|
slug - String
|
|
status - String
|
|
supplierId - ID
|
|
tags - [String!]
|
|
taxCode - String
|
|
taxable - Boolean
|
|
title - String
|
|
trackInventory - Boolean
|
|
type - String
|
|
weight - String
|
|
weightUnit - String
|
|
width - String
|
Example
{
"allowBackorder": false,
"barcode": "abc123",
"basePrice": "abc123",
"brand": "abc123",
"bundleItems": [ProductBundleItemInput],
"bundlePricing": "xyz789",
"category": "xyz789",
"compareAtPrice": "abc123",
"costPrice": "abc123",
"countryOfOrigin": "xyz789",
"customsDescription": "abc123",
"description": "abc123",
"dimensionUnit": "abc123",
"handle": "abc123",
"hasOnlyDefaultVariant": true,
"height": "abc123",
"hsCode": "abc123",
"isGiftCard": true,
"length": "abc123",
"lowStockThreshold": 123,
"metaDescription": "abc123",
"metaTitle": "xyz789",
"option1Name": "xyz789",
"option1Values": ["abc123"],
"option2Name": "abc123",
"option2Values": ["xyz789"],
"option3Name": "abc123",
"option3Values": ["xyz789"],
"organizationId": "4",
"primaryImageId": 4,
"productType": "abc123",
"provinceOfOrigin": "abc123",
"publishedAt": "xyz789",
"quantity": 123,
"requiresShipping": false,
"reservedQuantity": 123,
"sku": "abc123",
"slug": "abc123",
"status": "xyz789",
"supplierId": "4",
"tags": ["xyz789"],
"taxCode": "abc123",
"taxable": true,
"title": "xyz789",
"trackInventory": true,
"type": "xyz789",
"weight": "abc123",
"weightUnit": "abc123",
"width": "xyz789"
}
UpdateProductVariantInput
Fields
| Input Field | Description |
|---|---|
allowBackorder - Boolean
|
|
barcode - String
|
|
basePrice - String
|
|
compareAtPrice - String
|
|
costPrice - String
|
|
countryOfOrigin - String
|
|
customsDescription - String
|
|
dimensionUnit - String
|
|
height - String
|
|
hsCode - String
|
|
length - String
|
|
lowStockThreshold - Int
|
|
option1Value - String
|
|
option2Value - String
|
|
option3Value - String
|
|
organizationId - ID!
|
|
position - Int
|
|
primaryImageId - String
|
|
provinceOfOrigin - String
|
|
quantity - Int
|
|
requiresShipping - Boolean
|
|
sku - String
|
|
taxCode - String
|
|
taxable - Boolean
|
|
title - String
|
|
trackInventory - Boolean
|
|
weight - String
|
|
weightUnit - String
|
|
width - String
|
Example
{
"allowBackorder": true,
"barcode": "abc123",
"basePrice": "xyz789",
"compareAtPrice": "xyz789",
"costPrice": "abc123",
"countryOfOrigin": "abc123",
"customsDescription": "xyz789",
"dimensionUnit": "xyz789",
"height": "xyz789",
"hsCode": "xyz789",
"length": "abc123",
"lowStockThreshold": 987,
"option1Value": "xyz789",
"option2Value": "xyz789",
"option3Value": "xyz789",
"organizationId": 4,
"position": 123,
"primaryImageId": "xyz789",
"provinceOfOrigin": "xyz789",
"quantity": 987,
"requiresShipping": true,
"sku": "abc123",
"taxCode": "xyz789",
"taxable": false,
"title": "xyz789",
"trackInventory": false,
"weight": "xyz789",
"weightUnit": "xyz789",
"width": "abc123"
}
UpdatePurchaseOrderInput
Fields
| Input Field | Description |
|---|---|
actualDeliveryDate - String
|
|
clearFields - [String!]
|
Field names to explicitly set to NULL. Sending a null value is a no-op, so clearing requires naming the field here. Unrecognised names are rejected rather than ignored, since a misspelling would otherwise report success while changing nothing. Clearable fields: shippingAddress, shippingCity, shippingState, shippingPostalCode, shippingCountry, paymentTerms, shippingMethod. |
expectedDeliveryDate - String
|
|
internalNotes - String
|
|
items - [UpdatePurchaseOrderLineInput!]
|
The COMPLETE set of lines for this order. Lines with an id are updated, lines without are created, and existing lines absent from the list are deleted. Omit the field to leave lines untouched. |
notes - String
|
|
otherCosts - String
|
|
paymentTerms - String
|
This order's payment terms, free text. Null/omitted keeps the stored value; blank is stored as null; name it in clearFields to clear it. |
shipToWarehouseId - ID
|
|
shippingAddress - String
|
|
shippingCity - String
|
|
shippingCost - String
|
|
shippingCountry - String
|
|
shippingMethod - String
|
This order's shipping method, free text. Null/omitted keeps the stored value; blank is stored as null; name it in clearFields to clear it. |
shippingPostalCode - String
|
|
shippingState - String
|
|
status - String
|
|
subtotal - String
|
|
taxAmount - String
|
|
trackingNumber - String
|
|
trackingUrl - String
|
Example
{
"actualDeliveryDate": "xyz789",
"clearFields": ["xyz789"],
"expectedDeliveryDate": "xyz789",
"internalNotes": "abc123",
"items": [UpdatePurchaseOrderLineInput],
"notes": "xyz789",
"otherCosts": "abc123",
"paymentTerms": "abc123",
"shipToWarehouseId": 4,
"shippingAddress": "xyz789",
"shippingCity": "abc123",
"shippingCost": "abc123",
"shippingCountry": "xyz789",
"shippingMethod": "xyz789",
"shippingPostalCode": "abc123",
"shippingState": "abc123",
"status": "xyz789",
"subtotal": "xyz789",
"taxAmount": "abc123",
"trackingNumber": "abc123",
"trackingUrl": "xyz789"
}
UpdatePurchaseOrderItemInput
UpdatePurchaseOrderLineInput
Fields
| Input Field | Description |
|---|---|
id - ID
|
Existing line to update. Omit to create a new line. |
notes - String
|
|
productVariantId - ID
|
The variant being bought. Preferred over purchasableItemId — the purchasing record is created on demand if the variant has none. |
purchasableItemId - ID
|
An existing purchasing record. Creating a line requires this or productVariantId; the item snapshot (SKU, name, product, variant) is derived server-side. |
quantityOrdered - Int!
|
|
sourcingListingId - ID
|
|
unitCost - String!
|
Example
{
"id": 4,
"notes": "xyz789",
"productVariantId": 4,
"purchasableItemId": "4",
"quantityOrdered": 987,
"sourcingListingId": 4,
"unitCost": "xyz789"
}
UpdateReceiptItemInput
Example
{
"batchNumber": "abc123",
"binLocation": "xyz789",
"expiryDate": "xyz789",
"lotNumber": "xyz789",
"notes": "xyz789",
"quantityDamaged": 987,
"quantityReceived": 987,
"quantityRejected": 987,
"unitCost": "abc123",
"varianceReason": "abc123",
"warehouseBinId": 4
}
UpdateSourcingListingInput
Fields
| Input Field | Description |
|---|---|
clearFields - [String!]
|
Field names to explicitly set to NULL. Sending a null value is a no-op, so clearing requires naming the field here. Unrecognised names are rejected rather than ignored, since a misspelling would otherwise report success while changing nothing. Clearable fields: supplierId, productVariantId, listingUrl, supplierSku, supplierProductName, leadTimeDays, minimumOrderQuantity, shippingFee, freeShippingThreshold, notes, lastVerifiedAt. |
currency - String
|
ISO 4217 code. Omit (or null) to keep the stored currency; any other value must be a currency code. |
freeShippingThreshold - String
|
|
isActive - Boolean
|
|
isPrimary - Boolean
|
|
lastVerifiedAt - String
|
|
leadTimeDays - Int
|
|
listingUrl - String
|
|
minimumOrderQuantity - Int
|
|
notes - String
|
|
packSize - Int
|
|
priceBreaks - [SourcingPriceBreakInput!]
|
|
productVariantId - ID
|
|
shippingFee - String
|
|
supplierId - ID
|
|
supplierProductName - String
|
|
supplierSku - String
|
Example
{
"clearFields": ["abc123"],
"currency": "xyz789",
"freeShippingThreshold": "abc123",
"isActive": true,
"isPrimary": false,
"lastVerifiedAt": "abc123",
"leadTimeDays": 123,
"listingUrl": "abc123",
"minimumOrderQuantity": 123,
"notes": "xyz789",
"packSize": 987,
"priceBreaks": [SourcingPriceBreakInput],
"productVariantId": "4",
"shippingFee": "xyz789",
"supplierId": "4",
"supplierProductName": "abc123",
"supplierSku": "abc123"
}
UpdateSupplementalFulfillmentInput
Fields
| Input Field | Description |
|---|---|
carrier - String
|
Carrier connection ID |
declaredWeight - Float
|
Package weight in KG |
height - Float
|
Package height in cm |
items - [SupplementalItemInput!]
|
Replace the package items with exactly this list. Omit to leave items unchanged. |
length - Float
|
Package length in cm |
packageId - ID!
|
|
reason - String
|
|
scaleWeight - Float
|
Scale-measured weight in KG |
serviceCode - String
|
Carrier service code |
serviceName - String
|
Carrier service display name |
stationeryType - String
|
Stationery/packaging type name |
stationeryTypeId - ID
|
Stationery record ID |
width - Float
|
Package width in cm |
Example
{
"carrier": "abc123",
"declaredWeight": 987.65,
"height": 123.45,
"items": [SupplementalItemInput],
"length": 123.45,
"packageId": "4",
"reason": "xyz789",
"scaleWeight": 123.45,
"serviceCode": "xyz789",
"serviceName": "abc123",
"stationeryType": "abc123",
"stationeryTypeId": 4,
"width": 123.45
}
UpdateSupplierInput
Fields
| Input Field | Description |
|---|---|
address - String
|
|
city - String
|
|
code - String
|
|
contactEmail - String
|
|
contactName - String
|
|
contactPhone - String
|
|
country - String
|
|
countryCode - String
|
|
currency - String
|
ISO 4217 code. Omit (or null) to keep the stored currency; any other value must be a currency code. |
description - String
|
|
isActive - Boolean
|
|
leadTimeDays - Int
|
|
minimumOrderValue - String
|
|
name - String
|
|
notes - String
|
|
paymentTerms - String
|
|
postalCode - String
|
|
purchasePortalUrl - String
|
|
rating - Int
|
|
shippingMethod - String
|
|
state - String
|
|
website - String
|
Example
{
"address": "abc123",
"city": "xyz789",
"code": "abc123",
"contactEmail": "xyz789",
"contactName": "xyz789",
"contactPhone": "xyz789",
"country": "abc123",
"countryCode": "xyz789",
"currency": "abc123",
"description": "abc123",
"isActive": false,
"leadTimeDays": 123,
"minimumOrderValue": "xyz789",
"name": "abc123",
"notes": "abc123",
"paymentTerms": "xyz789",
"postalCode": "abc123",
"purchasePortalUrl": "abc123",
"rating": 987,
"shippingMethod": "xyz789",
"state": "xyz789",
"website": "xyz789"
}
UpdateWarehouseHierarchyLabelsInput
UploadRequest
Description
Presigned upload request for direct browser upload to Spaces
Example
{
"expiresAt": "xyz789",
"fields": {},
"uploadId": 4,
"url": "abc123"
}
UploadResult
Description
Result of upload confirmation and processing
Example
{
"error": "abc123",
"fileId": 4,
"imageId": "4",
"success": true,
"url": "xyz789"
}
User
Description
User account. Its id, names, email, avatar, isActive and organizationId are visible to anyone who can reach the user; every other field is restricted to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey.
Fields
| Field Name | Description |
|---|---|
Organization - Organization
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
Passkey - [Passkey!]
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
TeamMember - [TeamMember!]
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
UserPermission - [UserPermission!]
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
UserRole - [UserRole!]
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
authMethod - String
|
How this user signed in to the current session (password, passkey, or mfa). Only known for the session making the request, so null for any other user. Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
avatarFile - File
|
|
createdAt - String
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
currentRoles - [RoleType!]
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
directPermissions - [Permission!]
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
email - String
|
|
emailVerified - Boolean
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
firstName - String
|
|
id - ID!
|
|
isActive - Boolean
|
|
language - String
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
lastLoginAt - String
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
lastName - String
|
|
locale - String
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
mfaEnabled - Boolean
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
organization - Organization
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
organizationId - ID
|
|
passkeys - [Passkey!]
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
pendingEmail - String
|
An address an administrator asked to change this account to, waiting for the user to confirm it. email stays the sign-in address until then. Null when no change is pending. Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
pendingEmailExpiresAt - String
|
When the confirmation link for pendingEmail stops working (ISO 8601). Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
personalSessionTimeoutHours - Int
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
phoneNumber - String
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
preferences - JSON
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
principalType - PrincipalType
|
Type of principal - USER, PLATFORM_ADMIN, SERVICE, or AUTOMATION. Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
profilePicture - String
|
|
role - String
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
teamMemberships - [TeamMember!]
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
teams - [Team!]
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
timezone - String
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
tokenVersion - Int
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
updatedAt - String
|
Restricted: visible to the user themself, a holder of users:read in their organization, or a platform admin signed in with a passkey; null for anyone else. |
Example
{
"Organization": Organization,
"Passkey": [Passkey],
"TeamMember": [TeamMember],
"UserPermission": [UserPermission],
"UserRole": [UserRole],
"authMethod": "xyz789",
"avatarFile": File,
"createdAt": "abc123",
"currentRoles": [RoleType],
"directPermissions": [Permission],
"email": "xyz789",
"emailVerified": true,
"firstName": "xyz789",
"id": "4",
"isActive": true,
"language": "xyz789",
"lastLoginAt": "xyz789",
"lastName": "xyz789",
"locale": "abc123",
"mfaEnabled": false,
"organization": Organization,
"organizationId": "4",
"passkeys": [Passkey],
"pendingEmail": "xyz789",
"pendingEmailExpiresAt": "abc123",
"personalSessionTimeoutHours": 987,
"phoneNumber": "xyz789",
"preferences": {},
"principalType": "AUTOMATION",
"profilePicture": "abc123",
"role": "abc123",
"teamMemberships": [TeamMember],
"teams": [Team],
"timezone": "abc123",
"tokenVersion": 123,
"updatedAt": "abc123"
}
UserPermission
Description
Join table linking users to permissions
Example
{
"Permission": Permission,
"User": User,
"assignedAt": "xyz789",
"assignedBy": "abc123",
"id": "4",
"permissionId": 4,
"userId": 4
}
UserRole
VelocityClass
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"A"
VerificationRequest
Fields
| Field Name | Description |
|---|---|
canRequestNewLink - Boolean
|
True when this failure was an expired link that can be re-issued, so the client can offer a "send me a new link" action. Null when not applicable. |
code - String
|
Why the request was refused, when there is a machine-readable reason: STEP_UP_REQUIRED, STEP_UP_INVALID or STEP_UP_UNAVAILABLE from requestEmailChange; RECOVERY_PAUSED from requestPasswordChange and confirmPasswordReset during the 72 hours after an administrator changed the email. Null otherwise. |
message - String
|
|
success - Boolean
|
Example
{
"canRequestNewLink": true,
"code": "abc123",
"message": "xyz789",
"success": false
}
WarehouseArea
Description
Logical area within a warehouse location
Fields
| Field Name | Description |
|---|---|
bays - [WarehouseBay!]
|
|
color - String
|
|
createdAt - String!
|
|
description - String
|
|
id - ID!
|
|
isActive - Boolean!
|
|
isObstacle - Boolean!
|
|
length - Float
|
|
level - Int!
|
|
name - String!
|
|
organizationId - ID!
|
|
pickSide - [PickSide!]
|
|
rows - [WarehouseRow!]
|
|
startX - Float
|
|
startY - Float
|
|
updatedAt - String!
|
|
warehouseLocation - WarehouseLocation
|
|
warehouseLocationId - ID!
|
|
width - Float
|
Example
{
"bays": [WarehouseBay],
"color": "abc123",
"createdAt": "xyz789",
"description": "abc123",
"id": "4",
"isActive": true,
"isObstacle": true,
"length": 123.45,
"level": 987,
"name": "abc123",
"organizationId": 4,
"pickSide": ["EAST"],
"rows": [WarehouseRow],
"startX": 987.65,
"startY": 123.45,
"updatedAt": "xyz789",
"warehouseLocation": WarehouseLocation,
"warehouseLocationId": 4,
"width": 987.65
}
WarehouseBay
Description
Bay of racking — the frame that carries shelves (tiers)
Fields
| Field Name | Description |
|---|---|
color - String
|
|
createdAt - String!
|
|
description - String
|
|
height - Float
|
|
id - ID!
|
|
isActive - Boolean!
|
|
isObstacle - Boolean!
|
|
isSystem - Boolean!
|
|
length - Float
|
|
level - Int
|
|
name - String!
|
|
numLevels - Int!
|
|
organizationId - ID!
|
|
pickSide - [PickSide!]
|
|
shelves - [WarehouseShelf!]
|
|
startX - Float
|
|
startY - Float
|
|
updatedAt - String!
|
|
warehouseArea - WarehouseArea
|
|
warehouseAreaId - ID
|
|
warehouseLocationId - ID
|
|
warehouseRow - WarehouseRow
|
|
warehouseRowId - ID
|
|
width - Float
|
Example
{
"color": "abc123",
"createdAt": "xyz789",
"description": "xyz789",
"height": 123.45,
"id": "4",
"isActive": false,
"isObstacle": false,
"isSystem": true,
"length": 123.45,
"level": 987,
"name": "xyz789",
"numLevels": 987,
"organizationId": "4",
"pickSide": ["EAST"],
"shelves": [WarehouseShelf],
"startX": 987.65,
"startY": 987.65,
"updatedAt": "abc123",
"warehouseArea": WarehouseArea,
"warehouseAreaId": "4",
"warehouseLocationId": "4",
"warehouseRow": WarehouseRow,
"warehouseRowId": 4,
"width": 987.65
}
WarehouseBin
Description
Bin within a warehouse shelf
Fields
| Field Name | Description |
|---|---|
barcode - String
|
|
color - String
|
|
createdAt - String!
|
|
currentStock - Int!
|
|
description - String
|
|
height - Float
|
|
id - ID!
|
|
isActive - Boolean!
|
|
isObstacle - Boolean!
|
|
isSystem - Boolean!
|
|
length - Float
|
|
locationPath - String
|
|
maxCapacity - Int
|
|
name - String!
|
|
organizationId - ID!
|
|
productLocationInventory - [ProductLocationInventory!]
|
|
startX - Float
|
|
startY - Float
|
|
updatedAt - String!
|
|
warehouseShelf - WarehouseShelf
|
|
warehouseShelfId - ID!
|
|
width - Float
|
Example
{
"barcode": "xyz789",
"color": "abc123",
"createdAt": "xyz789",
"currentStock": 123,
"description": "xyz789",
"height": 987.65,
"id": 4,
"isActive": true,
"isObstacle": false,
"isSystem": true,
"length": 123.45,
"locationPath": "abc123",
"maxCapacity": 123,
"name": "abc123",
"organizationId": "4",
"productLocationInventory": [ProductLocationInventory],
"startX": 123.45,
"startY": 123.45,
"updatedAt": "abc123",
"warehouseShelf": WarehouseShelf,
"warehouseShelfId": 4,
"width": 987.65
}
WarehouseLocation
Description
Physical warehouse location with areas, shelves, and bins
Fields
| Field Name | Description |
|---|---|
address - String
|
|
areaLabel - String!
|
|
areas - [WarehouseArea!]
|
|
bayLabel - String!
|
|
binLabel - String!
|
|
binNamingPattern - String
|
Optional pattern for auto-generated bin names. Supported tokens: {area_seq}, {row_seq}, {bay_seq}, {shelf_seq}, {bin_seq}, {level}, {position}. {level} is a legacy alias of {shelf_seq}. Null triggers "Bin N" fallback. |
city - String
|
|
contactEmail - String
|
|
contactName - String
|
|
contactPhone - String
|
|
country - String
|
|
countryCode - String
|
|
createdAt - String
|
|
defaultBayNumLevels - Int!
|
|
description - String
|
|
id - ID!
|
|
isActive - Boolean
|
|
isPrimary - Boolean
|
|
labelReturnAddressType - LabelAddressType
|
|
labelSenderAddressType - LabelAddressType
|
|
mailingAddress - Address
|
|
metadata - JSON
|
|
name - String!
|
|
organizationId - ID
|
|
physicalAddress - Address
|
|
postalCode - String
|
|
rowLabel - String!
|
|
shelfLabel - String!
|
|
showOnContactPage - Boolean
|
|
state - String
|
|
stationeryStock - [StationeryLocationStock!]
|
|
storeConnections - [WarehouseStoreConnection!]
|
|
updatedAt - String
|
Example
{
"address": "abc123",
"areaLabel": "xyz789",
"areas": [WarehouseArea],
"bayLabel": "xyz789",
"binLabel": "xyz789",
"binNamingPattern": "xyz789",
"city": "xyz789",
"contactEmail": "abc123",
"contactName": "xyz789",
"contactPhone": "xyz789",
"country": "xyz789",
"countryCode": "xyz789",
"createdAt": "xyz789",
"defaultBayNumLevels": 123,
"description": "xyz789",
"id": 4,
"isActive": false,
"isPrimary": true,
"labelReturnAddressType": "MAILING",
"labelSenderAddressType": "MAILING",
"mailingAddress": Address,
"metadata": {},
"name": "xyz789",
"organizationId": "4",
"physicalAddress": Address,
"postalCode": "xyz789",
"rowLabel": "xyz789",
"shelfLabel": "abc123",
"showOnContactPage": false,
"state": "xyz789",
"stationeryStock": [StationeryLocationStock],
"storeConnections": [WarehouseStoreConnection],
"updatedAt": "abc123"
}
WarehouseRow
Description
Row of racking within a warehouse area, or standing directly on the floor
Fields
| Field Name | Description |
|---|---|
bays - [WarehouseBay!]
|
|
color - String
|
|
createdAt - String!
|
|
description - String
|
|
id - ID!
|
|
isActive - Boolean!
|
|
isObstacle - Boolean!
|
|
isSystem - Boolean!
|
|
length - Float
|
|
level - Int
|
|
name - String!
|
|
organizationId - ID!
|
|
pickSide - [PickSide!]
|
|
startX - Float
|
|
startY - Float
|
|
updatedAt - String!
|
|
warehouseArea - WarehouseArea
|
|
warehouseAreaId - ID
|
|
warehouseLocationId - ID
|
|
width - Float
|
Example
{
"bays": [WarehouseBay],
"color": "abc123",
"createdAt": "xyz789",
"description": "xyz789",
"id": 4,
"isActive": false,
"isObstacle": false,
"isSystem": true,
"length": 123.45,
"level": 987,
"name": "abc123",
"organizationId": 4,
"pickSide": ["EAST"],
"startX": 123.45,
"startY": 123.45,
"updatedAt": "xyz789",
"warehouseArea": WarehouseArea,
"warehouseAreaId": 4,
"warehouseLocationId": 4,
"width": 987.65
}
WarehouseShelf
Description
Shelf (tier) within a bay
Example
{
"bins": [WarehouseBin],
"color": "abc123",
"createdAt": "abc123",
"description": "abc123",
"height": 123.45,
"id": 4,
"isActive": true,
"isSystem": true,
"level": 123,
"name": "abc123",
"organizationId": 4,
"updatedAt": "xyz789",
"warehouseBay": WarehouseBay,
"warehouseBayId": "4"
}
WarehouseStoreConnection
Description
Connection between warehouse location and external store
Fields
| Field Name | Description |
|---|---|
createdAt - String
|
|
externalLocationId - String
|
|
externalLocationName - String
|
|
fulfillOrders - Boolean
|
|
id - ID
|
|
isActive - Boolean
|
|
metadata - JSON
|
|
organizationId - ID
|
|
priority - Int
|
|
storeConnectionId - String
|
|
storeType - StoreType
|
|
syncInventory - Boolean
|
|
updatedAt - String
|
|
warehouseLocation - WarehouseLocation
|
|
warehouseLocationId - ID
|
Example
{
"createdAt": "xyz789",
"externalLocationId": "xyz789",
"externalLocationName": "abc123",
"fulfillOrders": true,
"id": "4",
"isActive": false,
"metadata": {},
"organizationId": "4",
"priority": 123,
"storeConnectionId": "xyz789",
"storeType": "AMAZON",
"syncInventory": false,
"updatedAt": "abc123",
"warehouseLocation": WarehouseLocation,
"warehouseLocationId": "4"
}
WeightStatus
Description
Scale reading status as reported by the desktop agent
Values
| Enum Value | Description |
|---|---|
|
|
Scale reported an error or is unreadable |
|
|
Weight exceeds scale capacity |
|
|
Weight is stable and reliable |
|
|
Weight is fluctuating (motion detected) |
Example
"ERROR"
WeightUnit
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"GRAMS"